Мы все слышали, что наука о данных — «самая сексуальная работа 21 века». Следовательно, также удивительно знать, что до того, как мир был перенаселен данными, концепция нейронных сетей была сформулирована полвека назад. Еще до того, как было придумано слово «машинное обучение», Дональд Хебб в своей книге «Организация поведения» в 1949 году создал модель, основанную на взаимодействии клеток мозга. В книге представлены теории Хебба о возбуждении нейронов и связи между нейронами.

Хебб писал: «Когда одна клетка неоднократно помогает запустить другую, аксон первой клетки развивает синаптические выступы (или увеличивает их, если они уже существуют) в контакте с сомой второй клетки». Перенося концепции Хебба на искусственные нейронные сети и искусственные нейроны, его модель можно описать как способ изменения отношений между искусственными нейронами (также называемыми узлами) и изменениями отдельных нейронов. Артур Сэмюэл из IBM впервые придумал фразу "Машинное обучение" в 1952 году.

Анализ данных

Набор данных под названием Доход переписи взрослых доступен в репозитории kaggle и UCI. Эти данные были извлечены из базы данных Бюро переписи населения 1994 года Ронни Кохави и Барри Беккера (Data Mining and Visualization, Silicon Graphics). Задача прогнозирования заключается в том, чтобы определить, зарабатывает ли человек более 50 000 долларов США в год или нет.

Набор данных: https://www.kaggle.com/uciml/adult-census-income

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

Работа с данными состоит из 3 шагов: данные, обнаружение, развертывание.

ДАННЫЕ

age workclass  fnlwgt     education  education.num marital.status  
0   90         ?   77053       HS-grad              9        Widowed   
1   82   Private  132870       HS-grad              9        Widowed   
2   66         ?  186061  Some-college             10        Widowed   
3   54   Private  140359       7th-8th              4       Divorced   
4   41   Private  264663  Some-college             10      Separated   
          occupation   relationship   race     sex  capital.gain  
0                  ?  Not-in-family  White  Female             0   
1    Exec-managerial  Not-in-family  White  Female             0   
2                  ?      Unmarried  Black  Female             0   
3  Machine-op-inspct      Unmarried  White  Female             0   
4     Prof-specialty      Own-child  White  Female             0   
   capital.loss  hours.per.week native.country income  
0          4356              40  United-States  <=50K  
1          4356              18  United-States  <=50K  
2          4356              40  United-States  <=50K  
3          3900              40  United-States  <=50K  
4          3900              40  United-States  <=50K

ОТКРЫТИЕ

Предварительная обработка данных

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

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

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

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

Для проверки корреляции между двоичной переменной и непрерывными переменными использовалась точечная бисериальная корреляция. После соответствующего применения теста «fnlwgt» был исключен, что показало отрицательную корреляцию.

Для выбора функции выбираются все числовые столбцы, кроме «fnlwgt». Для категориальных переменных используется оценка хи-квадрат. Оценка хи-квадрат используется для измерения корреляции между двумя категориальными переменными.

Во-первых, категориальные переменные кодируются или, скорее, генерируются фиктивные значения, а числовые значения нормализуются так, чтобы они находились в диапазоне [0,1]. Это просто случай получения всех ваших данных в одном масштабе: если масштабы для разных функций сильно различаются, это может оказать косвенное влияние на вашу способность к обучению (в зависимости от того, какие методы вы используете). используем для этого). Обеспечение стандартизированных значений функций неявным образом взвешивает все функции одинаково в их представлении.

Было 103 атрибута, включая числовые переменные. После выбора функции остается 65 атрибутов.

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

Круговая диаграмма ясно показывает, что более 50% набора данных занято одним типом наблюдения. Эта проблема решается с помощью SMOTE (Техника передискретизации синтетического меньшинства).

РАЗВЕРТЫВАНИЕ

Как упоминалось выше, ниже показаны 4 модели. Обучение и тестирование делятся на 80–20 для логистического и наивного байесов, тогда как 70–30 для дерева решений и случайного леса.

Логистическая регрессия

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

После подгонки модели находим точность модели. Я сгенерировал матрицу путаницы, и она работает неплохо. В конце мы сравним все модели.

Наивный байесовский метод

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

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

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

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

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

Я использовал одну меру точности модели, чтобы провести сравнительное исследование между всеми моделями. Таким образом, для построения кривой ROC используется следующий код.

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

Из приведенной выше таблицы случайный лес дает наилучшую точность и показатель ROC.

Все кривые ROC показаны ниже.

Случайный лес покрывает максимальную площадь и, следовательно, является лучшей моделью. Я не пробовал использовать нейронные сети для решения этой задачи, так как было всего 30 000 точек данных, и я чувствовал, что это приведет к переобучению данных. Для дальнейшего улучшения можно использовать более сложные ансамблевые методы. Кроме того, согласно «бритве Оккама», «самое простое объяснение, скорее всего, является правильным».

Подробный отчет о проекте доступен в моей записной книжке на kaggle.

Если вам это нравится, вам могут понравиться и другие мои статьи. Проверьте.

Пожалуйста, дайте мне знать, если есть что-то, что я мог бы сделать лучше.

Спасибо за чтение!!