Предыстория: во время стажировки в Insight Data Science я взялась за консультационный проект по работе со стартапом по уходу за кожей под названием Proven. Соучредители Proven обнаружили, что 55% людей сожалеют о покупках обычных средств ухода за кожей. Поэтому им пришла в голову идея предоставить индивидуальные схемы ухода за кожей, чтобы восполнить пробел.

Цель The Project: Proven - создать индивидуальные формулы, ориентированные на различные проблемы с кожей. Им нужна была помощь в исследовании продуктов и рынка, чтобы они могли найти ниши, чтобы лучше обслуживать недовольных клиентов. Вот где я пришел - помог им извлечь полезную информацию из отзывов пользователей и ингредиентов средств по уходу за кожей, доступных в настоящее время на рынке.

Данные: Данные, с которыми я работаю, состоят из 420 000 отзывов о 2500 уникальных продуктах по уходу за кожей с сайта Sephora.com. Данные представляют собой смесь структурированных и неструктурированных наборов данных.

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

Цели. Не имея опыта в химии рецептур, я сразу же подумал о данных об ингредиентах: почему вода стоит на первом месте почти в каждом списке? Что еще общего у всех продуктов? Благодаря химикам из моей когорты Insight я узнал, что в средствах по уходу за кожей содержится довольно много основных химических веществ, а именно связующие вещества, эмульгаторы и консерванты. Проверено интересуют активные ингредиенты, которые избавляют от проблем с кожей. Поэтому моя цель №1 - извлечь только активные ингредиенты из всех продуктов по уходу за кожей, доступных в наборе данных.

Proven также выразили желание извлечь мнения из отзывов пользователей. Моя цель №2 - помочь им понять, почему пользователи так восторжены или ненавидят продукт.

Подход к цели №1: Мое решение этой проблемы - применить тематическую модель к данным ингредиентов. Здесь я следую довольно стандартному конвейеру моделирования тем:

  1. Структура корпуса должна быть списком документов, где каждый документ представляет собой строку ингредиентов для одного продукта.
  2. Применяйте методы НЛП (разметка, выделение слов, удаление стоп-слов) для предварительной обработки данных.
  3. Преобразуйте обработанные данные в матрицу функций tf-idf - tf-idf помогает исключить общие ингредиенты в корпусе, присваивая им более низкие веса.
  4. Затем к матрице tf-idf применяется модель неотрицательной матричной факторизации (NMF). NMF - это алгоритм на основе линейной алгебры, который направлен на извлечение тем путем создания двух матриц (матрицы признаков и матрицы весов), где при умножении вместе воспроизводится исходная матрица td-idf с наименьшей ошибкой.
  5. Проверка модели - известная проблема тематического моделирования в промышленности и академических кругах. Это требует значительных усилий при настройке параметров, а также при оценке выходных данных модели. В конечном итоге успех тематической модели измеряется ее интерпретируемостью. Как и в случае с другим обучением без учителя, хорошая тематическая модель должна обеспечивать хорошее понимание.

Результаты для цели №1: когда я устанавливаю количество тем равным 15, модель дает наиболее интерпретируемые результаты. Большинство из 15 тем имеют много смысла, поскольку слова в каждой теме тесно связаны друг с другом. Вот 4 примера тем. Можете ли вы заметить сходство в словах?

Благодаря блестящим химикам из моей когорты я могу вручную присвоить всем им значимые имена. В теме 13 у меня есть гликолевая, салициловая и бензоатная кислоты, которые лечат акне. По теме 15 у меня есть древесный уголь, глина и каолин, которые гигроскопичны (что означает «поглощение воды из воздуха»), что делает их хорошими кандидатами для увлажняющих кремов и увлажняющих сывороток.

Подход к цели №2. Затем я применяю аналогичные методы НЛП к текстам отзывов пользователей. Сначала я использую ngram, чтобы разбить предложения на фразы из n слов. Затем я применяю Tf-idf, чтобы выявить часто упоминаемые фразы в корпусе. Опять же, цель здесь - предоставить Proven понимание рынка и выяснить, почему людям нравится продукт, и каковы общие жалобы.

Результаты для цели №2. Я использую D3 для построения графика частоты настроений для обзоров с 5 звездами и обзоров с 1 звездой отдельно. Среди 5-звездочных обзоров потребители «любят, любят, любят» продукт, потому что «мало важно» и «делает их кожу мягкой».

Среди 1-звездочных обзоров многие люди отметили, что им «очень хотелось полюбить» продукт и возлагали на него «большие надежды». Но каким-то образом продукт не оправдал их ожиданий.

Ключевые моменты для Proven:

  • Создавайте продукты с учетом хорошего соотношения цены и качества
  • Не обещайте потребителям, на что способны их продукты.

В конце концов, обзоры с одной звездой могут стоить им значительной потери дохода:

Заключение. В целом, я предоставил Proven информационный продукт, который включает:

  • Тематическая модель, которая извлекает и обобщает активные ингредиенты, чтобы помочь в исследованиях и разработке продуктов.
  • Инструмент анализа настроений, который позволяет Проверено находить ниши для обслуживания неудовлетворенных клиентов и генерировать маркетинговые идеи.

Основательница Proven довольна моей работой и планирует добавить извлеченные мной текстовые функции в ее прогнозную модель. Поскольку Proven принят в Y Combinator, я очень рад, что мой код будет запущен в производство и продвинет компанию вперед.

Обо мне: до Insight я четыре года проработал в финансовой сфере, строя статистические модели и модели машинного обучения на основе временных рядов фондовых рынков. Я выбрал этот проект, чтобы расширить свои знания о НЛП и обучении без учителя. Это оказалось интересным и полезным испытанием. В настоящее время я учусь использовать текстовые данные в качестве функций в прогнозном моделировании. Еще не все!