Стремясь помочь участникам кампании повысить свои шансы на запуск успешной кампании!

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

Методология

1. Источник данных

Получен набор данных Kickstarter с сайта Web Robots, который сканирует все проекты Kickstarter и собирает данные в форматах CSV и JSON.

2. Очистка данных

Предварительно обработайте мои функции и фиктивные категориальные переменные перед дальнейшим изучением данных.

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

Название категории: после извлечения этой информации из переменной категории проекта я преобразовал ее в фиктивную переменную.

Состояние: изначально было 5 различных состояний кампании, включая приостановленную, отмененную, успешную, неудачную и активную. Я сократил группы до успешных / неудачных, чтобы упростить прогноз.

3. Выбор функций и разработка

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

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

4. Моделирование

Я выбрал логистическую регрессию в качестве базовой модели и разделил данные на 20% тест, 20% проверку и 60% обучающую выборку. После установки различных образцов поездов, проверок и испытаний в мою базовую модель я получил результаты в таблице ниже:

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

Мы также могли бы взглянуть на матрицу путаницы, чтобы получить больше информации о том, где модель делает ошибки.

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

Сначала я разделил свои данные на тест 20% и перекрестную проверку 80% и подогнал образцы в такие модели, как KNN, Random Forest и AdaBoost. С помощью RandomizedSearchCV я смог точно настроить параметры в каждой модели и убедиться, что я получаю от них максимальную производительность. Ниже приведена таблица результатов, которую я получил для каждой модели:

Хотя Random Forest дает нам наивысшую оценку F-1 из трех моделей, я решил, что AdaBoost - моя лучшая модель, потому что она дала нам наивысшую оценку точности. Я ставлю во главу угла точность, а не отзыв, потому что хочу предотвратить успешное прогнозирование неудачных кампаний. AdaBoost дает нам оценку точности 0,72, что означает, что из 10 кампаний моя модель правильно предсказывает, что 7 кампаний будут успешными.

Результаты

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

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

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

Значение SHAP представляет ответственность объекта за изменение выходных данных модели. Чем выше значение SHAP, тем более положительно функция влияет на модель. Если мы посмотрим только на правую половину графика, то есть на ту половину, где модель подвергается положительному влиянию, мы сможем увидеть, какие значения функций помогают запустить успешную кампанию.

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

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

Я также создал веб-приложение с Flask и Javascript, чтобы продемонстрировать производительность моей модели. Приложение позволяет пользователям вводить значения для 4 основных важных функций и получать прогноз успеха кампании.

Вывод

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

  • Установите небольшую цель, которая соответствует масштабу проекта
  • Сделайте кампанию короткой
  • Внимательно рассмотрите категорию

чтобы увеличить свои шансы на запуск успешных кампаний!

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

Для получения дополнительной информации, пожалуйста, свяжитесь со мной! Вы также можете просмотреть исходный код и колоду этого проекта на Github.