Создал модель машинного обучения, чтобы точно предсказать, где доход человека больше или меньше 50 000, с помощью KNN, Nave Bayes, дерева решений, случайных лесов, логистической регрессии GLM. Я использовал пакеты panda, numpy, matplotlib, sklearn.

Недавняя вспышка коронавируса привела к тому, что огромное количество людей подписались на стимулирующие чеки в размере 1200 долларов в Америке после потери работы. Одним из требований для получателей является их годовой доход менее 75 000 долларов США, который доступен через их годовой налоговый отчет. (Singletary, 2020) Тем не менее, существует ошеломляющее количество людей, которые не платят налоги. Понимание потенциального годового дохода физических лиц от неуплаченных налогов может помочь правительству предпринять стратегические шаги, чтобы позаботиться о них и обеспечить размер их банковских резервов. Таким образом, правительство получит огромную выгоду от модели машинного обучения, которая может помочь предсказать доходную базу человека на основе его демографических характеристик.

В этом проекте мы будем использовать пять различных контролируемых алгоритмов (KNN, наивный байесовский алгоритм, дерево решений и правила, случайные леса, GLM и логистическая регрессия) в наборе данных переписи населения США 1994 года. Мы выберем лучшие алгоритмы-кандидаты при сравнении предварительных результатов друг с другом и дополнительно оптимизируем выбранный алгоритм для наилучшего моделирования данных. Наша цель в этом проекте — наконец разработать модель, которая может точно предсказать, зарабатывает ли человек больше или меньше 50 000 долларов (Классификация — бинарный класс). По данным Inflationcalcualtor.com, 50 000 долларов США в 1994 году равны 87 000 долларов США в 2019 году. После этого будущие исследователи могут использовать эту модель для подачи заявки на набор данных текущего года.

Доступ к набору данных для этого проекта можно получить из репозитория машинного обучения UCI или веб-сайта Kaggle. Набор данных предоставлен в дар Рону Кошави и Барри Беккеру после того, как они опубликовали свои выводы в «Повышение точности наивно-байесовских классификаторов: гибрид дерева решений» (Kohavi, 1996). Принимая во внимание тот факт, что данные, которые мы здесь изучаем, состоят из небольших изменений в исходном наборе данных, таких как удаление функции 'fnlwgt' и записей с отсутствующими или неправильно отформатированными записями.

Данные

Измененный набор данных переписи в этом проекте содержит приблизительно 32 000 точек входа, каждая из которых имеет 13 признаков.

Функции

· age: Возраст

· workclass: Рабочий класс (частный, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, без оплаты, никогда не работал)

· education_level: Уровень образования (бакалавриат, колледж, 11-й, высшая степень, профессиональная школа, доцент, доцент, 9-й, 7-8-й, 12-й, магистр, 1-4-й, 10-й, докторантура, 5-й -6, дошкольное)

· education-num: Количество пройденных учебных лет

· marital-status: Семейное положение (Замужем-гражданская-супруга, Разведен, Никогда не состоял в браке, Раздельно, Вдовец, Женат-супруга-отсутствует, Женат-AF-супруга)

· occupation: Работа Профессия (Техподдержка, Ремесленно-ремонтная, Прочая-услуга, Продажи, Руководящая-руководящая, Проф-специальность, Обработчики-уборщики, Машино-эксплуатационный осмотр, Адм-канцелярия, Сельскохозяйственно-рыболовная, Транспортно-перевозочная, Приват-дом-серв, Охрана-серв, Вооружённые силы)

· relationship: Семейное положение (Жена, Собственный ребенок, Муж, Не в семье, Другой родственник, Незамужем)

· race: Раса (белый, азиат-пацифик-островитянин, американо-индеец-эскимос, другой, черный)

· sex: Пол (женщина, мужчина)

· capital-gain: Денежный прирост капитала

· capital-loss: Денежные потери капитала

· hours-per-week: Среднее количество рабочих часов в неделю

· native-country: Родная страна (США, Камбоджа, Англия, Пуэрто-Рико, Канада, Германия, отдаленные районы США (Гуам-USVI-и т. д.), Индия, Япония, Греция, Юг, Китай, Куба, Иран, Гондурас, Филиппины) , Италия, Польша, Ямайка, Вьетнам, Мексика, Португалия, Ирландия, Франция, Доминиканская Республика, Лаос, Эквадор, Тайвань, Гаити, Колумбия, Венгрия, Гватемала, Никарагуа, Шотландия, Таиланд, Югославия, Сальвадор, Тринадад и Тобаго, Перу , Хонг, Голландия-Нидерланды)

Целевая переменная

· income: класс дохода (‹=50K, ›50K)

Импорт библиотек и загрузка данных

Сначала мы импортируем набор данных, а также необходимые библиотеки Python, которые полезны для нашего анализа, такие как numpy, pandas, IPython, matplolib, seaborn, визуальный файл. Последний столбец набора данных — это окончательный двоичный результат «доход», а остальные — характеристики.

I/ Исследовательский анализ данных (EDA) и подготовка данных

Мы немного изучаем наш набор данных, чтобы увидеть, сколько людей вписывается в каждую группу и процент граждан, которые зарабатывают более 50 000 долларов в год. Мы также можем получить визуальное представление набора данных, чтобы увидеть, как каждый фактор взаимодействует друг с другом, с помощью функции seasborn.pairplot().

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

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

  • 'прирост капитала'
  • «потеря капитала»

Распределение признаков смещено вправо. Поэтому мы применяем логарифмическое преобразование к данным, чтобы предотвратить негативное влияние составителей на модель машинного обучения в дальнейшем. Тем не менее, нужно быть осторожным при обработке значений o, поскольку log(o) не определен. Мы можем перевести эти значения в небольшие суммы выше o, чтобы правильно применить логарифмирование.

2/Второй шаг — нормализовать числовые характеристики посредством масштабирования данных. Это масштабирование в конечном итоге не изменит форму распределения признаков, но гарантирует, что при применении пяти моделей будет одинаковое отношение к каждому отдельному признаку.

3/Третий шаг — превратить категориальные факторы, такие как «род занятий» или «раса», в числовые с помощью функции быстрого кодирования. Таким образом, алгоритм создаст «фиктивную» переменную для каждой возможной категории категориальных признаков, которые аналогичны числовым признакам. Тем не менее, one-hot-encoder не подходит для целевой цели, потому что это сложная процедура, поэтому мы вручную назначим «‹=50k» как 0 и «›50k» как 1, чтобы избежать неожиданных выпадений в конце. Из 13 уникальных функций набор данных был преобразован в 103 функции благодаря функции быстрого кодирования.

4/Четвертый шаг — перемешать и разделить набор данных с соотношением 80–20 для обучения тестированию соответственно.

II/ Построение прогнозных моделей

Учитывая форму наших данных (30162 точки данных со 103 уникальными факторами), нам повезло, что все модели, которые мы выбираем, могут надлежащим образом обрабатывать значительное количество факторов. Чтобы правильно получить доступ к каждой модели, мы сравним сильные и слабые стороны каждой модели.

a) Алгоритм K-ближайших соседей

· Преимущества: это просто, без периода обучения (известный как ленивый ученик). Исследователи могут беспрепятственно добавлять новые данные, не влияя на точность алгоритма.

· Слабые стороны: KNN несовместим с большими наборами данных или наборами данных высокой размерности. Модель также нуждается в масштабировании функций и очень чувствительна к зашумленным данным, отсутствующим значениям, а также контурам. (Кумар, 2019)

· Потенциальное применение: поиск приложений для «похожих» товаров

b) Наивный байесовский метод Гаусса

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

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

· Возможное применение: обработка естественного языка (изучение текста)

c) Дерево решений

· Сильные стороны: Процесс имеет понятные правила и может выполнять классификацию без особых вычислений. Он может обрабатывать как непрерывные, так и категориальные переменные и дает исследователям четкое указание на то, какие функции важны. (Гиксфоргикс, 2019)

· Слабые стороны: непрерывные атрибуты могут не подходить для модели. Он может быть подвержен ошибкам со многими классами и относительно небольшим количеством обучающих примеров, и его обучение довольно дорого.

· Возможное применение: классификация изображений животных.

d) Случайные леса

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

· Слабые стороны: при работе с зашумленными данными возможно превышение соответствия.

· Возможное применение:прогнозирование цен на фондовом рынке.

e) GLM и логистическая регрессия

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

· Слабые стороны: требуется довольно большой набор данных. Чем больше у него прогностического фактора, тем больше размер выборки. GLM чувствителен к аутлайнерам

· Потенциальное применение:прогнозирование медицинских расходов.

III/ Сравнение моделей прогнозирования и оптимизация моделей

а) Сравнение моделей

После признания всех сильных и слабых сторон пяти моделей мы переходим к сравнению результатов и процессу оптимизации выбранной модели. При прогнозировании событий мы можем получить четыре типа результатов: истинные положительные результаты (TP), истинные отрицательные результаты (TN), ложные срабатывания (FP-ошибка типа 1) и ложноотрицательные результаты (FN-типа). 2 error)В целом существует четыре показателя для оценки производительности модели на основе вышеупомянутых типов результатов:

· Точность: измеряет, насколько точны прогнозы по сравнению с реальным результатом.

· Точность: сообщает нам, какой процент событий мы правильно отнесли к определенному классу.

· Отзыв (Чувствительность): сообщает нам, какой процент событий, которые на самом деле относились к определенному классу, были классифицированы нами как этот класс.

· Оценка F1: указывает средневзвешенное значение показателей точности и полноты, которое представляет собой средневзвешенное значение (среднее гармоническое) показателей точности и полноты.

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

Согласно таблице и графику выше, случайный лес и логистическая регрессия имеют самые высокие показатели точности и полноты. Несмотря на более высокую оценку точности, производительность Random Forest почти аналогична логистической регрессии. Для нас было бы гораздо лучше улучшить модели и еще раз сравнить, прежде чем принимать окончательное решение. С другой стороны, одна из причин, по которой у нас низкие оценки для наивной байесовской модели, заключается в том, что модель страдает от проблемы с нулевой частотой, когда модель присваивает 0 (нулевую) вероятность и не делает прогноз, если категориальная переменная имеет категория, которая не наблюдалась в обучающем наборе данных. Еще одна проблема, которую мы имеем с Наивным Байесом, — это предположение о независимых предикторах. Таким образом, мы получаем ужасные результаты для наивного Байеса. Ниже приведена иллюстрация дерева решений.

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

б) Оптимизация моделей

Выбор функций

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

Наша интуиция частично точна с возрастом; часов в неделю и образование оказывают огромное влияние на финансовое положение работающего человека. Удивительно, но нам не удалось определить важность «прироста капитала» и «убытка капитала».

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

Перекрестная проверка K-Fold и поиск по сетке

На этом этапе мы использовали метод перекрестной проверки (оценка вращения) для проверки методов модели путем разделения набора данных на множество складок и перекрестного тестирования результатов на нем. (Браунли, 2019) Параметр «оценщик» указывает объект, который вы использовали для подбора модели (классификатор для случайного леса и логистической регрессии), в то время как «cv» проверяет, на сколько сгибов вы хотите разделить обучающий набор (обычно 10). Затем мы вычисляем среднее значение и стандартное отклонение 10 различных значений точности на основе 10 выборок небольшого набора данных и сравниваем их друг с другом.

Среднее и стандартное отклонение этих двух моделей после перекрестной проверки идентичны друг другу. Можно с уверенностью сказать, что какую бы модель мы ни выбрали из этих двух, это не будет иметь большого значения. Таким образом, мы можем выполнять поиск по сетке исключительно на модели случайного леса, чтобы выбрать наилучшие параметры, которые могут обеспечить максимально возможную точность. «n_estimators» имеет варианты между 10, 30, 100, 300, а «критерий» имеет варианты между «энтропией» и моделью «джини».

Наконец, наиболее оптимальной моделью, которая может дать показатель точности 0,844, является случайный лес с «критерием» = «энтропия», «n_estimators» = «300».

IV/ Заключение

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

Github:https://github.com/Lukastuong123/Python-Projects/tree/master/Project-%20Finding%20Annual%20Income%20(Python-%20Classification)

Справочник и источники:

Браунли, Дж. (2019 г.). Нежное введение в k-кратную перекрестную проверку. Получено с https://machinelearningmastery.com/k-fold-cross-validation/

Geeksforgeeks. (2019, 17 апреля). Древо решений. Получено с https://www.geeksforgeeks.org/decision-tree/

Кохави, Р. (1996). Повышение точности классификаторов Наивного Байеса: гибрид дерева решений. KDD'96: Материалы второй международной конференции по обнаружению знаний и интеллектуальному анализу данных, 8, 202–207. Получено с https://www.aaai.org/Papers/KDD/1996/KDD96-033.pd

Кумар, Н. (2019). Преимущества и недостатки алгоритма KNN в машинном обучении. Получено с http://theprofessionalspoint.blogspot.com/2019/02/advantages-and-disadvantages-of-knn.html

Синглетэри, М. (2020). Все еще ждете проверки стимула? У вас есть время до 12:00. Среда, чтобы предоставить IRS информацию о вашем банке. Получено с https://www.washingtonpost.com/gdpr-consent/?next_url=https%3a%2f%2fwww.washingtonpost.com%2fbusiness%2f2020%2f05%2f11%2fstill-waiting-your-stimulus-check- у вас есть-до 12-00-среды-предоставить-IRS-ваш-банк-информацию%2f

Репозиторий машинного обучения UCI https://archive.ics.uci.edu/ml/datasets/Census+Income