Предварительная обработка данных для машинного обучения |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-03-20 12:24 В данной статье рассмотрим пример предобработки данных для дальнейшего исследования, например, использование метода кластеризации. Но для начала проясним, что из себя представляет машинное обучение и из каких этапов оно состоит. Машинное обучение – это процесс, в котором компьютер учится интерпретировать данные, принимать решения и создавать рекомендации на основе этих данных. В процессе обучения – и позже. Если данные, используемые для прогнозирования неправильные, необъективные или неполные, то они могут привести к неточным результатам прогноза. Подготовка данных – это процесс подготовки «сырых» (необработанных) данных для их дальнейшей обработки и анализа. Предобработка данных включает следующие процедуры:
Проверка данных включает выявление:
Очистка данных содержит:
При решении различных задач следует обрабатывать пропуски. Их можно удалять, игнорировать или заполнять. Однако нужно осторожно использовать удаление пропусков. Если они составляют большую долю по отношению к объему всей выборки данных, то прибегать к удалению пропусков не стоит. Заполнять пропуски можно с помощью:
Трансформация данных включает:
Дополнение данных подразумевает создание новых признаков, агрегирование признаков. Оптимизация данных включает:
Подготовка данных может занимать до 80 % времени, затрачиваемого на проект машинного обучения. Чтобы оптимизировать этот процесс, важно использовать инструменты, специально разработанные для подготовки данных. В данной статье рассмотрим пример, выполненный на языке программирования Python в среде Google Colaboratory. Для начала необходимо загрузить библиотеки и загрузить файл data.csv, в котором содержатся следующие данные: Описание данных
Посмотрим содержание файла, с помощью метода info():
На основе выведенных данных, мы можем сделать вывод, что тип признаков соответствует их смысловому содержанию. Однако можно заметить, что в признаках days_employed и total_income содержатся пропуски значений. Выявление и обработка аномальных наблюдений На следующем шаге следует проверить признаки на наличие аномальных значений. Аномальными наблюдениями называются наблюдения сильно отличающиеся от остальных по исследуемому признаку. Для визуализации результатов будем использовать построение коробчатой диаграммы или графика «ящик с усами». Построение такого графика свяхано с понятием «квартиль». Термин «квартиль» используют для обозначения квантиля кратного ?. Квантилем порядка называется значение x такое, что
Квартили разбивают выборку на 4 части. Первый квартиль Q1 порядка 0,25 – число, определяющее ? часть упорядоченной выборки, то есть 25% значений упорядоченной выборки меньше Q1, 75% значений – больше Q1. Второй квартиль Q2 порядка 0,5 или медиана – число, для которого 50 % упорядоченной выборки меньше Q2, а 50% значений – больше Q2. Третий квартиль Q3 порядка 0,75 – число, для которого 25% значений упорядоченной выборки меньше Q3, 25% значений – больше Q3. Межквартильный размах – величина, вычисляемая по формуле:
График «ящик с усами» имеет вид: «Ящик» ограничен квартилями Q1 и Q3, внутри него расположена медиана Q2. «Усы» простираются влево и вправо на расстояние 1,5 * IQR С помощью методов Теперь посмотрим на описательную статистику по всем переменным: Можно сделать следующие выводы по каждому из признаков: Значения признака children имеет диапазон от –1 до 20. Значения признака days_employed имеет диапазон от –18 388.9 до 401 755.4. Значения признака dob_years имеет диапазон от 0 до 75. Значения признака debt имеет диапазон от 0 до 1. Значения признака total_income имеет диапазон от 20 667 до 2 265 604. Переменные family_status_id и education_id являются уникальными идентификаторами и не несут смысловой составляющей, поэтому не оцениваем их на наличие аномальности. Далее проведем анализ аномальных значений по конкретным признакам. Предположим, что аномальные наблюдения являются результатами технических ошибок ввода данных, поэтому заменим значения – 1 и 20 на 1 и 2 соответственно, используя метод Следующий признак, который будем рассматривать – days_employed. Ранее, анализируя описательную статистику, можно было заметить, что в этом признаке есть и аномально большие, и аномально малые наблюдения. Поэтому выявим типы занятости заемщиков с отрицательными значениями переменной. Теперь – с положительными значениями переменной. Заменим отрицательные значения положительными с помощью методов Просмотрим описательную статистику по переменной: В данном признаке содержатся аномальные наблюдения. Чтобы визуализировать данные, построим график стажа,с помощью метода Проведем анализ максимального стажа в днях и в годах. Переведем дни в годы. Можем сделать вывод, что максимальный стаж при 5–дневной рабочей недели более 1100 лет. Теперь проанализируем средний и медианный стаж в годах, с помощью методов Видим, что значения среднего и медианного стажа сильно отличаются, требуется дальнейшее исследование. Проанализируем общее количество, среднее, максимальное и минимальное значения признака days_employed по типам занятости заемщиков. Делаем вывод, что аномально большие наблюдения стажа характерны для двух типов занятости «безработный» и «пенсионер». Так как группа заемщиков «безработный», «в декрете», «предприниматель» и «студент» представлены малым количеством записей (одной), то их можно удалить из рассмотрения, воспользовавшись методом Построим графики для каждого класса заемщиков, используя методы из библиотек Строим общий график для четырех групп заемщиков. Можно заметить, что в группе «пенсионер» явно имеются аномальные наблюдения. Предположим, что стаж в этой группе представлен не в днях, а в часах. Для удобства анализа переведем в стаж в годах. Посмотрим статистику данных после выполненных преобразований. Снова построим графики для каждой группы заёмщиков, чтобы проверить, как изменились данные. По построенным диаграммам можно сделать, что в группе «пенсионер» все еще имеются аномальные наблюдения, поэтому необходимо продолжить преобразования. Для каждого типа занятости вычислим квантили 0,95 и 0,05 стажа. Проведем графический анализ аномальных наблюдений стажа. По графику «ящик с усами» видно, что аномальные наблюдения присутствуют во всех группах, кроме «пенсионер». Процент наблюдений, превышающий квантиль 0,95 велик, при удалении можно потерять часть значимых данных, также вычислим квантили 0,99 стажа. Удалим наблюдения, превышающие квантиль 0,99. Построим график «ящик с усами» после преобразований. Количество аномальных наблюдений уменьшилось, но все еще присутствуют в трех группах. Проанализируем отдельные высокие значения стажа, сопоставив их с возрастом заемщика. Переменная dob_years. Можем заметить, что минимальное значение возраста в каждой из групп равняется 0. Посчитаем количество нулевых значений признака по типам занятости с помощью метода Это достаточно малое количество наблюдений в общем числе наблюдений группы, поэтому их можно удалить. Посмотрим, каков минимальный возраст теперь. Теперь проанализируем квантили 0,95 и 0,99: А также построим график для анализа аномальных наблюдений. Определим границы «усов» для поиска аномальных значений. Вычислим количество значений по каждому типу заемщиков, выходящих за пределы соответствующих «усов». Также для остальных типов, количество будет соответствовать единичному значению. Ввиду малочисленности аномальных значений, удалим их из выборки. Посмотрим как изменилась выборка после преобразований. Исходя из данной диаграммы, можно сделать вывод, что аномальных значений нет. Теперь перейдем к исследованию переменной gender. Если мы посмотрим уникальные значения с помощью ранее использованного метода При изучении переменной family_status также просмотрим уникальные значения. Для уменьшения размерности признакового пространства объединим значения переменной в 2 класса – женат/замужем и холост/не замужем В переменной total_income можно заметить наличие аномально больших наблюдений. Обработка аномальных значений данной переменной будет схожа с ранее проведенными процедурами нахождения границ «усов». Необходимо также провести анализ квантилей и принять решение по дальнейшей обработке. Анализ и исключение дубликатов Следующим этапом является анализ и исключение дубликатов. Посмотрим уникальные значения признака education Приведем все элементы к одному регистру с помощью метода Проанализируем наличие дубликатов (без анализа переменной purpose): Удалим все имеющиеся дубликаты, используя метод Анализ и обработка пропусков Как было определено ранее, пропуски присутствуют в двух переменных – days_employed и total_income. Анализ и обработка переменой days_employed проведен ранее, в следствие чего мы изменили ее на years_employed. Начнем с рассмотрения переменной total_income. Создадим датафреймы по каждому классу income_type, так как структура датафрейма Построим гистограммы по каждому типу заемщиков, как были описаны ранее Для каждого типа найдем медиану и среднее значение. Заменим пропуски значением медианой, с помощью функции Далее перейдем к анализу переменной years_employed. Определим сколько клиентов начали работать с 18 лет. И сколько клиентов начали работать с 14 лет. На основе полученных результатов можем сделать вывод, что количество клиентов, начавших работать с 14 лет более чем в 2 раза меньше, чем тех, кто начал работать с 18 лет. Удалим переменную years_employed, так как она является неинформативной. Также удалим дублирующие столбцы, создав новый датафрейм Просмотрим результат предобработки данных
Таким образом, в данной статье был рассмотрен процесс предобработки данных на конкретном примере в банковской сфере. Дальше последует другой этап машинного обучения, например, кластеризация. Источник: habr.com Комментарии: |
|