Для моего класса по аналитике и цифровой экономике в Пенсильванском университете (вел профессор Прасанна Тамбе) мне было поручено провести анализ на основе НЛП и/или машинного обучения некоторой формы данных, которые были получены путем непосредственного веб-скрейпинга. или запросить API с помощью R. Контекст этого проекта таков, что он должен быть в некоторой степени связан с нашими карьерными интересами после окончания колледжа. У меня был некоторый опыт стажировки в качестве менеджера по продукту в технологических стартапах/компаниях, и я планирую продолжить эту стажировку после окончания учебы, поэтому я хотел изучить что-то в области понимания продукта. Естественно, моей первой мыслью было взглянуть на Amazon и его широкий спектр продуктов.

Один из моих любимых продуктов — Apple Watch. С тех пор, как я начал использовать его, я стал намного больше волноваться о своих тренировках и увлекся всеми сверхподробными показателями, которые он выдает. Я думаю, что делает его таким замечательным продуктом, так это тот факт, что он действительно поощряет изменение поведения своих пользователей, особенно в отношении фитнеса и тренировок. Особая особенность, которая способствует этому, — это фитнес-задачи, которые вы можете проводить с друзьями, где вы соревнуетесь в количестве времени, потраченном на тренировки, и интенсивности тренировок в течение недели.

Конечно, я много слышал о других умных часах, таких как часы Google Pixel Watch, Fitbit и Garmin. Поэтому для этого анализа я рассмотрю отзывы пользователей о продуктах Apple Watch SE, Google Pixel Watch, Fitbit Versa 4, Garmin Venu 2 Plus и Amazfit GTR Mini ( не связан с Amazon). Данные собираются путем парсинга этих страниц с помощью библиотек tidyverse и rvest в R. Мой ключевой вопрос заключается в том, чтобы понять, как клиенты оценивают продукт, и определить, соответствует ли числовой рейтинг, который они присваивают продукту на Amazon, рейтингу. обзоры, которые они предоставляют. Отзывы пользователей чрезвычайно важны для менеджеров по продуктам, и их систематический анализ данных может быть полезным инструментом для достижения этой цели.

Чтобы просмотреть страницы Amazon и получить отзывы, я использовал ASIN (стандартный идентификационный номер Amazon), как описано в этой статье Мартина Чана. Часть кода, определяющая, откуда брать отзывы, выглядит примерно так:

url_reviews <- paste0("https://www.amazon.com/product-reviews/", 
ASIN, "/?pageNumber=", page_num)

doc <- read_html(url_reviews)

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

Первое, что меня заинтересовало, — это то, как распределение звездочек, предоставленных рецензентами, различается по продуктам.

Как видно по шкале оси Y, часы Amazfit и Garmin имеют значительно меньше отзывов, чем Apple Watch, Google Pixel Watch и Fitbit. Это важно иметь в виду, когда мы продвигаемся вперед, потому что это может повлиять на некоторые идеи, которые мы получаем в результате анализа. Здесь мы видим, что 1-звездочных и 5-звездочных рейтингов гораздо больше, чем 2-, 3- и 4-звездочных. Это говорит о том, что люди с большей вероятностью оставят отзыв, если у них есть крайнее мнение о продукте (будь то крайне отрицательное или исключительно положительное). Это также может указывать на то, что люди с большей вероятностью выберут крайний ответ на опрос, а не более нейтральный ответ, хотя я оставлю это на усмотрение исследователей дизайна, чтобы прокомментировать это. Этот вывод более или менее соответствует моим предыдущим предположениям, но было интересно получить это представление из данных.

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

Здесь мы видим, что Amazfit явно превосходит другие умные часы со средней оценкой 4,6 звезды из 5. Однако стоит вспомнить небольшое количество отзывов об этих часах. С обзорами Amazon это определенно имеет значение, потому что несколько положительных отзывов от продавца могут сильно повлиять на средний звездный рейтинг. Это не означает, что с часами Amazfit дело обстоит именно так, но это означает, что мы должны более критично относиться к совокупным показателям отзывов, когда их очень мало.

Затем я создал облако слов (используя библиотеку wordcloud) из наиболее распространенных слов в основном тексте обзоров с рейтингом 1 звезда для всех продуктов. Чтобы подготовить данные, я удалил бесполезные слова, такие как «часы», «яблоко», «гугл», «фитбит», «амазонка», «верса», «пиксель», «умный» и «серия». как знаки препинания, стоп-слова и пробелы. Я также преобразовал все слова в нижний регистр.

Мы можем сравнить это с подобным облаком слов из наиболее распространенных слов из основного текста отзывов с 5-звездочным рейтингом:

Мы видим, что слово «батарея» занимает много места в обоих облаках слов, предполагая, что срок службы батареи или качество батареи является важным фактором для пользователей, и мы можем предположить, что клиент, имеющий негативное представление о времени автономной работы своего умные часы могут привести к отрицательному отзыву, а положительное восприятие может привести к положительному отзыву. Мы также ясно видим некоторые сильные положительные слова в облаке слов 5-звездочного обзора, такие как «любовь», «отлично» и «легко», которые мы противопоставляем отрицательным словам, таким как «ничего», «никогда» и «не могу». в 1-звездочном обзоре wordcloud.

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

Или для более визуально склонных:

Эти выходные данные показывают средний балл тональности для каждого звездного рейтинга обзора на основе лексикона AFINN. Оценка тональности варьируется от -5 (самое негативное) до +5 (самое положительное). Глядя на результаты, мы видим, что оценки настроений увеличиваются с более высокими звездными рейтингами отзывов. Отзывы с рейтингом 1 имеют самый низкий средний балл тональности (~0,028), что указывает на то, что они, как правило, более негативны по тональности. Отзывы с рейтингом 5 имеют самый высокий средний балл настроения (~ 1,595), что указывает на то, что они, как правило, более позитивны по настроению. Показатели тональности для отзывов с рейтингом 2, 3 и 4 находятся между этими крайними значениями, причем более высокие баллы тональности соответствуют более высоким рейтингам. Я искренне удивлен, что разница между средней оценкой настроений между отзывами с 1-звездочным рейтингом и отзывами с 5-звездочным рейтингом не выше, поскольку я могу представить, что для принятия решения оставить 1-звездочный отзыв требуется искреннее разочарование. и такой же подлинный уровень поддержки, чтобы принять решение оставить 5-звездочный отзыв.

Эти результаты показывают, что существует связь между звездным рейтингом в обзорах и настроением в обзорах продуктов. Конечно, настроение — это лишь один из аспектов отзыва, и могут быть и другие факторы, помимо настроения, которые влияют на звездный рейтинг обзора, например характеристики продукта, цена и качество. Еще одна вещь, о которой следует помнить, это то, что лексикон AFINN был разработан для анализа настроений в тексте социальных сетей, поэтому не совсем ясно, идеально ли он отслеживает обзоры продуктов, подобные тем, которые мы анализируем, однако я видел несколько руководств в Интернете, которые используют лексикон AFINN для данных, не связанных с социальными сетями, поэтому я подумал, что это будет хороший выбор.

Следующий вопрос, который у меня возник, заключается в том, можем ли мы использовать оценки тональности, полученные в результате анализа тональности основного текста отзыва, для прогнозирования рейтинга, который пользователь поставит продукту в своем обзоре. Мы начинаем с разделения данных на набор для обучения и набор для тестирования, а также проводим линейную регрессию, чтобы исследовать взаимосвязь между настроением отзывов о продуктах и ​​звездными рейтингами, которые они получили с помощью пакета Caret в R.

Глядя на результаты линейной регрессии, мы видим сильную положительную связь между средним настроением и звездным рейтингом со значением R-квадрата 0,9986, указывающим на то, что модель объясняет почти всю дисперсию данных. В частности, для каждого увеличения среднего балла настроений на один балл прогнозируется увеличение рейтинга отзывов на 2,5788 звезды. Эти результаты показывают, что положительные эмоции в отзывах тесно связаны с более высокими оценками продукта. Это интересный результат, хотя и не невероятно новаторский (на что иногда намекает высокое значение R-квадрата), потому что настроение — это кульминация настроения пользователя. целостное восприятие товара (цена, характеристики, качество и т.д.). Глядя на гистограмму оценок настроений, тот факт, что линейная регрессия работает так хорошо, имеет большой смысл, потому что кажется, что есть линейное увеличение настроений на каждом звездном уровне.

Чтобы продолжить этот анализ, я использовал машинное обучение для обучения модели логистической регрессии для прогнозирования звездных рейтингов отзывов на основе текста отзыва. Модель использует оценки настроений, полученные из лексикона AFINN, чтобы делать свои прогнозы, как и подход линейной регрессии. Я обнаружил, что общая точность модели составляет 18,98 %, что является очень низким показателем и предполагает, что модель плохо работает при прогнозировании звездных рейтингов в обзорах.

Проанализировав матрицу путаницы, я обнаружил, что модель предсказала наибольшее количество отзывов (400) с рейтингом 5, в то время как правильно предсказала только 48,5% из них с рейтингом 5. Модель имела 100% точность для обзоров. с рейтингом 1. Это может быть хорошим признаком производительности модели, но также может указывать на то, что модель может быть переобучена для этого конкретного рейтинга. Это означает, что он запоминает обучающие данные, а не изучает базовые шаблоны и функции, которые являются общими для разных обзоров.

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

В заключение, мне очень понравилось проводить этот анализ, потому что он дал мне некоторые новые навыки анализа данных, которые я обязательно буду использовать, когда буду развивать свои способности менеджера по продукту. Это также заставило меня глубоко задуматься об отзывах пользователей, заставив меня думать так, как мог бы думать пользователь, чтобы понять анализ данных отзывов. Если у вас есть какие-либо предложения по дальнейшим выводам, которые можно извлечь из этих анализов, или альтернативная модель машинного обучения, которая может быть более подходящей, дайте мне знать!