Хорошо-быстро-дешево

Генеральная Ассамблея DSI 7 Хакатон — 29.04.19

«Задача состоит в том, чтобы предсказать, превышает ли доход человека 50 000 долларов США, учитывая определенную информацию профиля, а точнее, сгенерировать прогнозируемые вероятности дохода выше 50 000 долларов США для каждой строки в тестовом наборе». — Подсказка DSI 7

Команда

Майтхили Джоши, Дерек Стеффан и Реми Ши из Сиэтла, Джеймс Лавджой и Джориан Стаки из Денвера.

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

Данные

Данные, которые мы использовали, были получены от Бюро переписи населения США и включали возраст, сферу занятости, уровень образования, род занятий, семейное положение, пол, прирост/убыток капитала, количество отработанных часов в неделю, родную страну, информацию об инвестициях, а также занятость была полная. С помощью этих данных нам было поручено попытаться предсказать, превышает ли доход человека 50 000 долларов в год, учитывая этот набор данных. Точнее, можем ли мы предсказать, учитывая эти характеристики, вероятность того, что чей-то доход превысит 50 000 долларов.

Наши ограничения

Как команда «дешевая», мы были ограничены в количестве точек данных по сравнению с другими командами. Приблизительно с 6 500 строками для работы по сравнению с более чем 32 000 для других команд мы работали с малобюджетной версией данных. Мы не были ограничены в количестве функций или типов моделей.

Наш процесс

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

Мы заметили, что отсутствующие данные поступили из 3 столбцов: рабочий класс, профессия и родная страна. Учитывая, что нашим ограничением было количество доступных нам выборок, было невероятно важно, чтобы мы сохранили как можно больше точек данных в нашем обучающем наборе, избегая при этом ленивых и безответственных методов вменения. Мы остановились на относительно новом методе обработки недостающих данных; [подход шаблонной подмодели] (https://academic.oup.com/biostatistics/advance-article/doi/10.1093/biostatistics/kxy040/5092384). Идея здесь в том, что мы могли бы классифицировать наши наблюдения на основе закономерностей отсутствия их данных. Мы обнаружили три основные категории. Подавляющее большинство наших данных, около 93 % (6033/6513), вели себя хорошо и не имели пропущенных данных. Примерно в 2% (115/6513) наших обучающих данных отсутствовала информация о переменной рабочий класс и оккупация, несмотря на наличие информации в столбце родная страна. И наоборот, около 5% (358/6513) наших наблюдений содержали информацию о рабочем классе и профессии, но не о родной стране. Соответственно, мы достаточно бесцеремонно дали этим паттернам имена паттерн_1, паттерн_2 и паттерн_3. Мы сгруппировали семь оставшихся точек данных по двум другим подшаблонам в шаблон 2, отбросив данные или вменив среднее значение.

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

Хотя наша подмодель шаблона XGBoost не превзошла модель, в которой столбцы с отсутствующими данными были удалены (86 % при тестировании данных по сравнению с 87 % при использовании XGBoost), эта стратегия обработки данных, вероятно, является более ответственным использованием ресурсов акционеров, когда количество функции ограничены, и производительность сопоставима в этом случае.

Наши прогнозы

Наши предварительные модели включали логистическую регрессию, деревья решений, KNN, машину опорных векторов, повышение градиента и XGBoost. Здесь мы оптимизировали точность, поскольку неправильная классификация отрицательного или положительного результата не имеет каких-либо особо вредных последствий. Тем не менее, мы рассмотрели матрицу путаницы, так как планировали также протестировать сложение наших различных моделей. Наш базовый уровень составлял примерно 75%, а это означало, что нам придется иметь дело с несбалансированными классами.

Возможно, никого не удивив, XGBoost показал лучшие результаты. Мы попробовали метод наложения с использованием логистической регрессии, деревьев решений и XGBoost, но в интересах простоты (и времени) мы остановились только на XGBoost с использованием анализа основных компонентов (PCA). Эта модель дала нам точность результатов теста около 86%.

Хорошо-быстро-дешево

Хакатон DSI 7 29.04.19

Команда

Майтхили Джоши, Дерек Стеффан и Реми Ши из Сиэтла, Джеймс Лавджой и Джориан Стаки из Денвера.

Проект

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

Данные

Данные, которые мы использовали, были получены от Бюро переписи населения США и включали возраст, сферу занятости, уровень образования, род занятий, семейное положение, пол, прирост/убыток капитала, количество отработанных часов в неделю, родную страну, информацию об инвестициях, а также занятость была полная. С помощью этих данных нам было поручено попытаться предсказать, превышает ли доход человека 50 000 долларов в год. Точнее, можем ли мы с учетом этих характеристик предсказать вероятность того, что чей-то доход превышает 50 000 долларов США.

Наши ограничения

Как команда «дешевая», мы были ограничены в количестве точек данных по сравнению с другими командами. Приблизительно с 6 500 строками для работы по сравнению с более чем 32 000 мы работали с малобюджетной версией данных. Мы не были ограничены в количестве функций или типов моделей.

Наш процесс

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

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

  • Подавляющее большинство наших данных, около 93% (6033/6513), вели себя хорошо и не имели пропущенных данных.
  • Примерно в 2% (115/6513) наших обучающих данных отсутствовала информация о переменной «рабочий класс» и «оккупация», несмотря на наличие информации в столбце «родная страна».
  • И наоборот, около 5% (358/6513) наших наблюдений содержали информацию о «рабочем классе» и «профессии», но не о «родной стране».

Мы довольно бесцеремонно дали этим паттернам имена паттерн_1, паттерн_2 и паттерн_3 соответственно. Мы сгруппировали семь оставшихся точек данных с двумя другими подшаблонами в шаблон 2, отбросив данные или вменив среднее значение.

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

Хотя наша подмодель шаблона XGBoost не превзошла модель, в которой столбцы с отсутствующими данными были удалены (86 % при тестировании данных по сравнению с 87 % при использовании XGBoost), эта стратегия обработки данных, вероятно, является более ответственным использованием ресурсов акционеров, когда количество функции ограничены, и производительность сопоставима в этом случае.

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

Мы экспериментировали со многими моделями, включая логистическую регрессию, деревья решений, KNN, усилитель градиента, SVC, деревья решений с пакетами и логистическую регрессию с пакетами, а также с моделями наложения (логистическая регрессия, деревья решений и xgboost). Мы также попробовали алгоритмы кластеризации (k mean и dbscan) с не большим успехом, чем XGBoost с одним лишь подмоделированием шаблонов.

Наши прогнозы

Наши предварительные модели включали логистическую регрессию, деревья решений, KNN и повышение градиента. Здесь мы оптимизировали точность, поскольку неправильная классификация отрицательного или положительного результата не имеет каких-либо особо вредных последствий. Наш базовый уровень составлял примерно 75%, а это означало, что нам придется иметь дело с несбалансированными классами.

Возможно, никого не удивив, XGBoost показал лучшие результаты. Мы попробовали метод наложения с использованием логистической регрессии, деревьев решений и XGBoost, но в интересах простоты (и времени) мы остановились только на XGBoost с использованием анализа основных компонентов (PCA). Эта модель дала нам точность результатов теста около 86%.