Вино Нет? Классификация и анализ образцов вин

Прогнозирование вина на основе его физико-химических свойств с помощью контролируемого обучения и оценки с помощью интерактивной панели инструментов.

Вино - популярная тема для изучения как в научном, так и в социальном плане. Я сам, как известно, экспериментировал с разными типами вина (обычно в пятницу вечером после долгой недели обучения!) и думал, что это хорошо подойдет для проекта категоризации. Наш предыдущий проект на Metis Bootcamp заключался в использовании регрессии для прогнозирования непрерывного результата, однако наша задача здесь немного изменилась - предсказать категорический результат.

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

Это подводит меня к данным, полученным для этого проекта. Набор данных содержал 6500 отдельных образцов вина из региона vinho verde в Северной Португалии. 75% из них были белыми, что неудивительно, учитывая, что 86% вин, производимых в этом регионе, белые. Этот набор данных изначально был составлен для выполнения анализа качества каждого образца, однако для этого проекта субъективные атрибуты каждого образца были удалены.

Одним из критериев этого проекта было ввести наши данные в базу данных SQL и создать экземпляр AWS, в котором будет храниться эта база данных. Для меня это была совершенно новая игра, так как я никогда не использовал AWS и только немного базовый SQL до буткемпа! Однако, похоже, все шло по плану, без катастроф, и я думаю, что мы с SQL могли бы стать друзьями в долгосрочной перспективе! Хотя мне определенно хотелось вернуться к моему проверенному Jupyter Notebook и Python для выполнения анализа.

Выбор редактора DDI - учебный курс Python для науки о данных и машинного обучения

Процесс моделирования

Здесь появился большой выбор и множество параметров, которые можно настраивать в разных моделях. Мой мыслительный процесс был систематическим и вначале простым. Моим первым шагом было запустить модель логистической регрессии с использованием всех физико-химических характеристик. Я использовал эту базовую модель, чтобы оценить, какие функции и параметры нужно настроить позже. Эта первая модель показала хорошие результаты с точностью 98,2%. Поэтому я хотел вникнуть в важность особенности и оценить, сильно ли влияет на то, красное ли вино или белое.

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

Хотя точность классификатора дерева решений была ниже, чем у исходной логистической регрессии, он предоставил платформу для настройки физико-химических свойств, наиболее влияющих на цвет вина. Поэтому я повторно запускал модель логистической регрессии несколько раз с различными комбинациями функций, все в надежде повысить точность моей модели с помощью оптимальных функций. Интересно, что модель также снова показала хорошие результаты (точность 98,2%) без двух наиболее важных функций, что предполагает, что другие функции также влияют на категоризацию. Я также добавил в смесь классификатор ближайшего соседа и случайного леса, постоянно записывая, сколько выборок было неверно предсказано, и их идентичность. Однако они не показали хороших результатов с точностью 94,1% и 97,8% соответственно. Хотя обычно можно прийти в восторг от точности модели 94,1%, исходная модель логистической регрессии действительно установила высокую планку!

В конце концов я обратился к ансамблю, комбинируя разные модели в попытке еще больше повысить точность. Я проанализировал неверные прогнозы каждой модели и решил объединить те, в которых эти выборки различались. Поэтому я выбрал логистическую регрессию и классификатор случайного леса, используя все функции набора данных. Ура ... Увеличил точность до 98,8%!

Результаты и интерпретация

Чем больше времени я тратил на это и чем выше становилась сложность модели, тем меньше улучшалось предсказание, поэтому я остановился на этой окончательной модели и запустил ее на своих тестовых данных. Мои окончательные результаты были следующими:

Accuracy: 0.99
Precision: 0.994
F1: 0.98
Recall: 0.967

Неплохо, а! 😅

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

Я сопоставил их друг с другом и классифицировал данные по цвету (в зависимости от цвета вина) и по тикам (в зависимости от прогноза модели).

Существует четкое разделение между образцами красного и белого, основанное исключительно на этих характеристиках. Как показывает график, 8 из 9 неправильно предсказанных красных образцов показали характеристики белых образцов!

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

Так почему же эти два классификатора так важны?

Диоксид серы действует как консервант в вине благодаря своим антиоксидантным и антимикробным свойствам. Общее количество диоксида серы в белом вине обычно выше, чем в красном, так как там меньше дубильных веществ, которые также действуют как консервант. Танины содержатся в кожуре и косточках винограда, которых в белом вине значительно меньше, поскольку они обычно не ферментируются кожурой или семенами, в отличие от красного. Нередко в вино добавляют диоксид серы для обеспечения сохранности. Точно так же более высокие уровни хлоридов обнаруживаются в красных винах из-за присутствия хлоридов в кожуре и семенах. Минералы сохраняются в коже и семенах после того, как они были поглощены из почвы через виноградную лозу, поэтому варьируется в зависимости от вина из разных регионов.

Кто знал! Если вы действительно хотите попробовать вино, сделайте глоток! Ваше здоровье!

Полный код Jupyter Notebook для проекта можно найти здесь.