Абстрактный

Изучив множество статей, связанных с прогнозированием успеха проекта Kickstarter, большинство используемых наборов данных сбалансировано. Однако в действительности процент успешных проектов составляет около 30%, что делает реальный набор данных сильно несбалансированным. В этой статье мы представляем работу над таким набором данных.

Набор данных

Так как на домашней странице Kickstarter отображается по 200 проектов в каждой категории. Чтобы иметь большой объем данных, нам нужно использовать другой источник, где хранится URL-адрес проекта. В итоге мы собрали 19798 проектов из Kicktraq и 16384 проекта из Webrobots, всего 36182 проекта.

Примечание. Наш анализ проводится с использованием собранных данных, они не отражают фактического представителя данных на Kickstarter.

Поскольку статус проекта определяется только после завершения кампании, мы не можем использовать те проекты, которые находятся в статусе LIVE, для расследования. Для тех проектов, которые были отменены или приостановлены, такие статусы определяются лично создателем, кроме того, что касается проблемы этого проекта, мы хотим классифицировать только успешные и неудачные проекты, поэтому отмененные и приостановленные проекты были удалены из нашего набора данных . Наконец, у нас есть 23320 неудачных проектов и 7496 успешных проектов в нашем наборе данных. Всего было задействовано 30816 проектов.

Наш набор данных содержит следующие типы функций:

Особенности проекта:

Год: год запуска.

Goal_amount_USD: сумма цели, установленная автором (сумма денег, которую создатель хотел бы получить).

Продолжительность: время от даты начала до даты окончания кампании.

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

ContentVideoCount: количество видео, используемых в контенте проекта.

PackageCount: количество предлагаемых пакетов в проекте.

DescriptionWordCount: количество слов в описании проекта.

ContentWordCount: количество слов в контенте проекта.

RiskWordCount: количество слов в части риска проекта.

MinPackageAmount: минимальная сумма предлагаемых пакетов в долларах США.

MaxPackageAmount: максимальная сумма предлагаемых пакетов в долларах США.

MeanPackageAmount: средняя сумма предложенных пакетов в долларах США.

Pledged_amount_USD: сумма залога, которую проект получил после завершения кампании.

Категория. Категория проекта. например. Искусство, еда, технологии

ChildCategory: например, проект, относящийся к категории «Искусство», может принадлежать к одной из следующих категорий: Иллюстрация, Паблик-арт, Живопись и т. д.

Goal_currency: валюта установки цели.

Возможности для авторов:

BackedProjCount: количество поддержанных проектов в прошлом создателя.

CreatedProjCount: количество созданных проектов в прошлом создателя.

Возможности НЛП:

Помимо функций проекта и пользователей, мы также извлекаем функции НЛП из частей проекта, содержащих текст. Для этого мы объединили имя, описание, контент, риск проекта, затем текст был предварительно обработан для удаления числа, специальных символов и сохранения только основы слова. Мы извлекли 300 функций встраивания слов, используя предварительно обученную модель Google (https://github.com/mmihaltz/word2vec-GoogleNews-vectors).

Наконец, мы разделили наш набор данных на три разных подмножества. Один содержит только функции проектов + создателей, один содержит функции НЛП, а остальные содержат комбинацию всех функций, указанных выше.

Функциональная инженерия

Удаление выбросов:

Среди проектов на Kickstarter есть несколько проектов, в которых целевая сумма была установлена ​​слишком высокой, как и объявленная сумма. Такие проекты не являются репрезентативными для типичного случая, но мы по-прежнему сохраняем их и не рассматриваем как выбросы, потому что эти случаи все еще случаются в действительности, мы хотим, чтобы наша модель учитывала и эти случаи.

Вменять отсутствующие значения

Как видно из рисунка выше, отсутствующие значения обнаруживаются в следующих функциях: ChildCategory, BackedProjCount, CreatedProjCount. Для этих отсутствующих значений в ChildCategory мы вменяем их, используя режим ChildCategory в Category проекта, например Если категория проекта - Журналистика, его ChildCategory - Интернет. Отсутствующее значение в BackedProjCount и CreatedProjCount связано с тем, что создатель не создавал никаких проектов или не поддерживал какие-либо проекты в прошлом, поэтому эти недостающие значения заполняются 0.

Быстрые категориальные функции кодирования

Goal_currency, Category и Child Category преобразуются в числовую переменную с использованием технологии One-hot кодирования.

Изучите анализ данных

Количество проектов в год:

На приведенном выше рисунке показано количество проектов за каждый год. В нашем наборе данных за 2018 год не было успешных проектов, в то время как в другие годы количество успешных проектов относительно велико, особенно в период 2010–2013 годов.

Всегда полезно посмотреть описание набора данных.

Интересно отметить, что максимальное значение BackedProjectCount в 75% проектов равно 2, а для всех проектов - 907. Здесь есть большая разница. Это также происходит в функции CreatedProjCount.

Некоторые выводы из анализа описания набора данных:

Средняя продолжительность - 34 дня.

Среднее значение ContentVideoCount составляет 0,1, и 75% проектов не имеют видео, что отражает тот факт, что в большинстве проектов видео не отображается в их содержимом.

Существует проект со 104 пакетами, а максимальное значение для 75% проектов - 9.

Минимальная установка цели составляет 0,62 доллара, не знаю, почему создатель поставил эту цель ?? Максимальная сумма цели - 100 миллионов долларов, это слишком много? После проверки состояния этих двух проектов мы видим, что все они провалились. Очень интересно.

Тем не менее, есть проект, по которому не удалось получить никаких залоговых сумм. Максимальное значение PercentFunded - 3320, давайте проверим, что это за проект? Этот проект относится к категории «Кино и видео», в его содержании нет изображений и видео, цель - всего 1 доллар, количество пакетов - 1, однако он по-прежнему успешен с заложенной суммой в 3320,0 долларов. Его создатель ранее поддержал 8 и создал 1 проект.

Есть проект с Pledged_amount_USD = $ 10266845.0. Создатель этого проекта поддержал 109 проектов других пользователей, создал 3 проекта. Этот проект находится в категории «Дизайн», и его целевая сумма составляет 100000 долларов США. Этот проект получил самую высокую обещанную сумму, возможно, это вызвано поддержкой со стороны этого создателя другим пользователям в прошлом.

Как показано на изображении выше, существуют большие различия между состоянием двух проектов с точки зрения среднего значения BackedProjectCount, Goal, RiskWordCount, ContentWordCount и PackageCount. У успешных проектов BackedProjectCount и PackageCount выше, чем у неудачных проектов. Напротив, неудачные проекты имеют более высокие значения GoalAmount и RiskWordCount. Продолжительность неудачного проекта также выше, чем у успешного проекта, но разница незначительна.

Давайте проверим корреляцию между функциями

Год - это функции, имеющие наибольшую корреляцию с состоянием проекта (-0,69), за которыми следуют PackageCount (0,31), BackedProjCount (0,23) и ContentWordCount (0,15). Другие функции не имеют сильной корреляции с состоянием.

Очевидно, что корреляция между MaxPackageAmount, MinPackageAmount и MeanPackageAmount, за исключением того, что корреляция, ContentImageCount и ContentWordCount - это пара, имеющая наивысшую корреляцию между функциями.

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

Поиграйте с текстовыми функциями:

Давайте проверим 50 самых популярных слов в успешных проектах:

Как насчет самых популярных слов в неудачных проектах?

Глядя на эти слова, мы не можем извлечь ничего из часто используемых слов, кажется, что функции НЛП могут не играть важную роль в определении успеха проекта, мы рассмотрим это позже в следующем разделе.

Построение прогнозной модели

Соотношение тренировки и тестирования

Набор данных разделяется на обучающий набор и тестовый набор в соотношении 80–20. Что касается выбора модели, мы использовали модель LightGBM, которая является быстрой и представляет собой высокопроизводительный фреймворк для повышения градиента.

Показатель для оценки

Для сравнения оцениваются три подмножества. Поскольку наш набор данных является несбалансированным, мы не можем использовать точность в качестве метрики, потому что при случайном угадывании мы можем правильно предсказать до 75%. В этом эксперименте средняя точность (AP) и коэффициент корреляции Мэтьюза (MCC) используются в качестве основных показателей для оценки.

Значение MCC варьируется от -1 до 1, что указывает на то, насколько верна модель в задаче двоичной классификации, если MCC равно -1, модель полностью неверна в прогнозировании успеха проекта Kickstarter, в противном случае она полностью верна, если MCC 1.

Результат

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

Окончательный результат показан на рисунке ниже.

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

Функции Precision и Recall of Normal (сочетание функции проекта и функции создателя) и функции NLP + Normal равны, однако функции MCC и AP of Normal немного лучше, чем у функции NLP + Normal. Поскольку MCC и AP являются лучшими метриками для оценки результата классификации (https://clevertap.com/blog/the-best-metric-to-measure-accuracy-of-classification-models/) по сравнению с Precision и Recall. Кроме того, функциям НЛП требуется много времени на предварительную обработку. Наконец, мы пришли к использованию нормальных функций для нашей прогнозной модели.

Важность функции

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

Из приведенного выше рисунка можно сделать следующие выводы (мы проанализировали 10 основных характеристик):

  • Год является наиболее важным фактором в прогнозировании успеха проекта Kickstarter, успешные проекты почти попадают в предыдущие годы, в последние годы наблюдается больше неудачных проектов.
  • Если создатель поддерживал большое количество проектов в прошлом, у создателя будет больше шансов на успех в новом проекте.
  • RiskWordCount и GoalAmount - два фактора, которые негативно влияют на успех проекта Kickstarter. Это означает, что чем выше эти значения, тем меньше шансов на успех проекта.
  • Проще добиться успеха в проекте, если в нем больше изображений и подробное объяснение содержания.
  • У проекта больше шансов на успех, если он относится к категории Еда, в противном случае легче потерпеть неудачу, если это комедийный проект.
  • Помимо вышеперечисленных функций, важна также продолжительность, поскольку у проекта с короткой кампанией будет больше шансов на успех.

Заключение

В этой статье мы представили свои работы над датасетом Kickstarter, который мы собрали сами. Набор данных чрезвычайно несбалансирован, поэтому мы должны использовать метрики AP и MCC для оценки нашей модели, а не просто использовать точность.

В нашем исследовании оценивались различные подмножества функций и было обнаружено, что функции Project и Creator обладают большей предсказательной силой, чем функции NLP, при прогнозировании успеха проекта Kickstarter.

Основываясь на выводе из раздела «Важность функций», мы предлагаем, чтобы создатель поддержал другие проекты, прежде чем создавать свой собственный. Также полезно установить разумную сумму цели, наше исследование показало, что многие проекты провалились из-за сумасшедшей суммы цели. RiskWordCount - еще один важный фактор успеха проекта, но для изучения этого факта необходимы дальнейшие исследования. Также полезно добавить больше цифр и более подробно описать проекты. Создатели также должны указать продолжительность своего проекта, поскольку короткая продолжительность имеет больше шансов на успех.

Хотя год является наиболее важным фактором, создатель не может настроить эту функцию, поэтому, если они собираются создать новый проект, рекомендуется начать как можно скорее.

Кроме того, изучив многие функции, мы выяснили, что успех проекта во многом зависит от взаимодействия между создателем и пользователями на Kickstarters. В ходе исследования мы использовали некоторые функции, такие как количество обновлений, количество комментариев и IsProjectWeLove (отмечены командой управления Kickstarter, когда проект выделяется). Эти функции помогли значительно повысить производительность прогнозной модели. Однако, поскольку наша цель - предсказать успех проекта Kickstarter прямо с момента его запуска, эти функции были удалены из входных функций.

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