Научный журнал
Научное обозрение. Педагогические науки
ISSN 2500-3402
ПИ №ФС77-57475

РЕАЛИЗАЦИЯ КЛАССИФИКАТОРА ПРОДУКТОВ ПИТАНИЯ С ПОМОЩЬЮ МЕТОДА МАШИННОГО ОБУЧЕНИЯ

Бруевич Н.А. 1
1 Московский технический университет связи и информатики
Сложность определения требуемых для подходящей диеты продуктов питания состоит в том, что различные продукты могут иметь одинаковые показатели соотношения полезных веществ при одинаковой массе, однако оказывать на потребителя абсолютно различные эффекты – как положительные (поддержка или улучшение здоровья), так и отрицательные (ожирение, увеличенное давление и т.д.). В данной статье описана реализация инструмента классификации продуктов питания, использующего интеллектуальный анализ данных. Основной задачей является обучение алгоритма на основе входных значений продуктов питания (белки, жиры, углеводы, калорийность) методами машинного обучения. Важным этапом является проверка признаков продуктов питания на корреляцию в целью уменьшения значимых признаков, что ускорит выполнение обучения программы. Для проверки точности обучения модели использовался метод перекрестной проверки точности классификации. В качестве алгоритмов использовались: метод обратного распространения ошибки, выпрямленная линейная функция и функция обобщения логистической функции для многомерного случая. Для решения поставленной задачи был выбран язык программирования Python 3.6.4 и интерактивная оболочка Jupyter Notebook. Нейронная сеть, архитектура которой представляет собой многослойный персептрон с 2 слоями по 32 нейрона, разработана в библиотеке Skikit-learn. Данная работа выполнена в рамках курсового проекта по дисциплине «Методы интеллектуального анализа данных», научный руководитель – д.ф.-м.н., профессор Воронова Л.И.
Машинное обучение
нейронная сеть
интеллектуальные системы
классификация
skikit-learn
1. Воронова Л.И., Воронов В.И. Machine Learning: регрессионные методы интеллектуального анализа данных: учебное пособие. М.: МТУСИ, 2018. 83 с.
2. Калорийность продуктов [Электронный ресурс]. Режим доступа: http://www.calorizator.ru/product (дата обращения: 01.02.2019).
2. Top 20 Python Libraries for Data Science in 2018 [Электронный ресурс]. Режим доступа: https://www.kdnuggets.com/2018/06/top-20-python-libraries-data-science-2018.html (дата обращения: 01.02.2019).
3. Python Software Foundation [Электронный ресурс]. Режим доступа: https://docs.python.org/2/library/csv.html (дата обращения: 01.02.2019).
4. Курс машинного обучения Andrew Ng Machine Learning [Электронный ресурс]. Режим доступа: https://www.coursera.org/learn/machinelearning (дата обращения: 01.02.2019).
5. Доусон М. Программируем на Python. СПб.: Питер, 2014. 416 с.
6. Рашка С. Р28 Python и машинное обучение / пер. с англ. А. В. Логунова. М.: ДМК Пресс, 2017. 418 с.

При современном ритме жизни у малого процента населения есть время для соблюдения правильного режима питания, вследствие чего организм получает избыток вредных веществ и недостаток необходимых, что негативно влияет на здоровье. Существует немало средств, позволяющих следить за показателями здоровья и одного из основных его факторов – питания, и одним из лучших методов для данной задачи является, на мой взгляд, методы машинного обучения.

Машинное обучение – класс методов искусственного интеллекта, характерной чертой которых является не прямое решение задачи, а обучение модели и получение решений для вводимых условий в процессе применения решений множества сходных задач [1]. При применении данных методов система «обучается» самостоятельному вычислению требуемых выходных функций и применению новых данных к этим функциям с последующим выводом результатов вычислений, что позволяет снизить потребность вмешательства человека в технологические процессы.

Рассмотрим задачу классификации пищевых продуктов питания, используя для этого методы машинного обучения. Имеется набор данных, представляющий собой количество основных параметров на 100 г продукта [2].

В зависимости от значений входных признаков нейронная сеть должна относить пример к тому или иному классу из 6 продуктов, а именно колбасные изделия, крупы и каши, молочные продукты, фрукты, овощи и зелень и мясные продукты.

Также, программа должна показывать точность работы нейронной сети.

Для решения данной задачи воспользуемся подвидом нейронной сети – персептроном.

Персептрон, – нейронная сеть прямого распространения сигнала (без обратных связей), в которой входной сигнал преобразуется в выходной, проходя последовательно через один/несколько слоев. Присутствие нескольких скрытых слоев оправдано лишь в случае использования нелинейных функций активации.

Перед управлением входными данными требуется подключить библиотеки для работы с машинным обучением на языке Python, а именно Tensorflow, Scikit-learn, Itertools, Numpy, Pandas и Matplotlib [3].

Сохраняем файл data.xlsx в формате .csv. В результате получили датасет из 542 примеров, которые необходимо классифицировать по классу продукта, к которому он относится.

Импортируем файл data.csv, предоставив ему имя в коде filename, по которому идёт обращение и считывание данных файла [4].

Для проверки верного считывания данных из файла выводим список, содержащий признаки и выходные значения для обработки.

В качестве оптимального эмпирическим путем был выбрана архитектура модели, – персептрон с 2 скрытыми сломи по 32 нейрона в каждом – 4 входных и 6 выходных.

Выведем графики попарного отношения входных признаков между собой, что покажет взаимное отношение признаков друг к другу в различных классах. Данный метод может быть полезен при выборке наиболее важных отношений признаков для обнаружения главных признаков и/или их корреляций. В данном случае, наблюдается несколько графиков, где большая часть классов идентична на основе двух признаков (жиры-калории, углеводы-калории), однако поскольку признаки взаимозависимы (калорийность зависит от количества белков, жиров, углеводов) сжатие данных ухудшит показатели точности обучения.

Пример входных данных

Продукт

Белки, г

Жиры, г

Углеводы, г

Калории, ккал

Колбаса вареная диетическая

12.10

13.50

0.00

170.00

Колбаса вареная докторская

12.80

22.20

1.50

257.00

Колбаса вареная куриная

15.50

16.20

2.30

223.00

brus1.tif

Рис. 1. Код импорта датасета

brus2.tif

Рис. 2. Код вывода данных, считываемых из файла data.csv

brus3.tif

Рис. 3. Отображение классов в графах при попарной зависимости графиков от признаков

brus4.tif

Рис. 4. Код создания модели персептрона

brus5.tif

Рис. 5. Код обучения нейронной сети и результаты первых итераций

brus6.tif

Рис. 6. Код предсказывания классов тестового набора, вывод точности классификации

brus7.tif

Рис. 7. Матрицы отношения предсказанных значений классов к истинным значениям

В качестве первого входных параметров на слой поступают данные с предыдущего слоя, которые получают собственный вес функцией активации ReLU (функция «выпрямителя», образует переход выхода функции в единицу при аргументе =<0) [5], и затем случайно исключаются методом DropOut (с вероятностью, вводимой разработчиком, исключает каждый нейрон на слое, что позволяет избавиться от проблемы переобучения сети), что позволяет избежать проблемы переобучения сети.

Для обучения и проверки обучаемости изменим представление созданного датасета: используя команду «train_test_split», разделяем изначальный набор данных на 2 набора – тренировочный (X_train, y_train) и тестовый (X_text, y_text) в соотношении 2/1 [6]. После чего инициируем ранее созданную модель персептрона в качестве обработчика, и используя команду «.fit()», применяем в каждому примеру созданную модель в течение заданного заранее количества итераций (эпох) в процессе выполнения команды.

На основе обучающего датасета применим модель классификатора, описанную ранее, и проверим точность предсказаний классов на тренировочном наборе; результат выполнения программы можно увидеть на рисунке [7].

После выполнения данных операций строим матрицы точности, которые показывают отношение (нормализованное или первоначальное число) предсказанных классов к истинным значениям в тренировочном наборе, которые можно увидеть на рисунке ниже: данные матрицы дают представление о том, насколько велика доля примеров из тестового набора, классифицированных верно (по-вертикали) к общему числу тестовых примеров, представленных в датасете (по-горизонтали).

Данные матрицы показывают, что лучше всего обученная сеть предсказывает 4-й класс (фрукты), хуже всего предсказание сказывается на 1 м классе (колбасные изделия) из-за схожих показателей входных данных между 1 м классом и классом № 6 (мясные изделия).

Выводы

В данной статье была проанализирована проблема классификации продуктов питания методами машинного обучения; обозначены основные понятия; описан метод обучения на основе многослойного персептрона. Экспериментальной частью являлось написание программы для получения точности классификации на основе тестового набора данных. Полученная программа показывает 80 % точности классификации и позволяет визуализировать данные для удобной работы с ними.


Библиографическая ссылка

Бруевич Н.А. РЕАЛИЗАЦИЯ КЛАССИФИКАТОРА ПРОДУКТОВ ПИТАНИЯ С ПОМОЩЬЮ МЕТОДА МАШИННОГО ОБУЧЕНИЯ // Научное обозрение. Педагогические науки. – 2019. – № 4-3. – С. 30-34;
URL: https://science-pedagogy.ru/ru/article/view?id=2113 (дата обращения: 06.02.2023).

Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1.685