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

Вот мой реальный план действий:

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

ПРИМЕЧАНИЕ: когда я говорю «при необходимости/необходимости», я имею в виду как то, что ваши данные требуют каких-либо действий, так и ваш алгоритм требует этого. Например, если ваши функции находятся в разных масштабах, возможно, их нужно масштабировать, но если вы используете алгоритм, который не требует масштабирования, вам не нужно масштабировать ваши данные.

ПРИМЕЧАНИЕ. Я предполагаю, что вы немного знакомы с моделями машинного обучения и уже построили несколько базовых моделей.

  1. Импортируйте необходимые библиотеки и функции

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

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import os
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, mean_absolute_error 
from sklearn.metrics import confusion_matrix, recall_score, precision_score, f1_score 
from sklearn.metrics import accuracy_score,roc_auc_score,roc_curve
from sklearnextension import * #You should have some reuseable functions of your own

2. Получить данные

Сначала мы работаем с файлами csv/excel, обычно скачиваемыми с kaggle-подобных сайтов. Иногда мы загружаем его из модулей наборов данных sklearn. Но позже, в конце концов, нам придется иметь дело с реальными данными, которые извлекаются из наших баз данных с помощью SQL. Говоря об этом, я настоятельно рекомендую препроцессировать данные так же, как и в базе данных, что быстрее.

3. Изучайте данные с помощью EDA

О EDA есть куча статей/блогов/белых книг, я не буду их повторять. Давайте просто поговорим об этом вкратце.

#Getting to know data briefly
df.describe()
df.info()
df.nunique()
df["somecolumn"].value_counts()
  • проверьте отсутствующие значения, а также отсутствующие значения. то есть «NA», «-», «-999» и так далее. если это модель машинного обучения, ничего не делайте на этом шаге, мы скоро разберемся.
  • проверьте асимметрию и обработайте ее при необходимости. вы можете подумать о таком методе, как «преобразование журнала».
  • проверьте выбросы и при необходимости обработайте их, т. е. удалите эту функцию или замените их значением ограничения.
  • проверьте, требуется ли масштабирование
  • Визуализируйте данные: просматривайте корреляции с тепловой картой морских животных и матрицей рассеяния панд. См. распределения с помощью гистограмм.

Некоторые шаги здесь называются предварительной обработкой и разработкой признаков.

4. Проверить наличие достаточного количества экземпляров данных

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

5. Проверьте количество функций

Если количество функций слишком велико, вы можете уменьшить его, либо используя алгоритмы, такие как PCA, либо вручную выбрав наиболее полезные функции (для этого тоже есть алгоритмы и методы)

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

Вещи здесь также называются разработкой функций.

6. Если проблема с классификацией, проверьте, сбалансированы ли ярлыки.

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

EDIT: выполните этот шаг после разделения обучения/тестирования.

Следующие пули предназначены специально для моделей ML.

7. Получите X и Y

Обычно вы помещаете свои функции в переменную X, а метки — в переменную y. И в основном вам нужно преобразовать ваши метки y в 2D-массив, так как большинству алгоритмов нужен 2D-массив для

X=df.iloc[:,1:10]
y=df.iloc[:,11].reshape(-1,1) #make it 2D

8. ВАЖНО! Разделите данные для обучения и тестирования СЕЙЧАС.

И НЕ ПРИКАСАЙТЕСЬ к тестовому набору, пока не будете готовы к окончательной оценке.

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

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

9. Еще немного разработки функций (операции, необходимые для преобразования)

  • Вменение (заполнение нулевых значений). Не используйте метод fillna панд в модели машинного обучения. Скоро объясню причину.
  • Преобразование категорийных значений в числовые (Label Encoding (для классов), Ordinal Encoding (для функций) и Onehot Encoding (создание фиктивных столбцов). Не используйте метод get_dummies панд в модели ML. Одна из причин этого, разница между значением по умолчанию в отношении удаления одного столбца, другая причина заключается в том, что OneHotEncoder более удобен в конвейерах, о чем я упомяну через минуту. И последнее, но не менее важное, с OneHotEncoder, Внедрение фиктивных столбцов, в которых набор поездов и набор тестов содержат разные элементы в столбце, намного проще и эффективнее. Как только вы освоите эту идею, загляните в мою связанную записную книжку».
  • Масштабируйте данные, если это необходимо.

Используйте конвейер для серии преобразований. Конвейеры многократно используются и могут быть легко реализованы как для тестовых данных, так и для новых поступающих данных. Ищите больше для этого. После быстрого поиска вы также можете проверить мой похожий блокнот (скоро) по этому вопросу.

10. Создайте свою модель с помощью набора поездов.

Вот где мы подгоняем и трансформируем наши данные (иногда только метод подгонки, иногда дополнительно метод преобразования)

11. Делайте прогнозы, используя набор поездов, если у вас достаточно (то есть довольно много, я имею в виду много) данных

Сначала мы должны предсказать наш набор поездов, чтобы увидеть, не будет ли наша модель сначала предсказывать наборы поездов неточно (низкая точность или высокое значение функции потерь, например RMSE). Если нет, мы даже не переходим к следующему шагу. Низкая точность/высокое среднеквадратичное отклонение означают, что наша модель не соответствует. Мы должны сделать необходимые вещи, чтобы решить эту проблему, например:

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

Ваша модель может также подходить , когда ваш прогноз набора поездов хорош, но не результат теста. Если это так, выполните некоторые из следующих действий;

  • уменьшить сложность модели (выбрать более простую модель)
  • собрать больше данных, если это возможно
  • уменьшить шум, обрабатывая выбросы
  • добавьте регуляризацию (ищите это) в регрессионных моделях или уменьшите глубину в деревьях решений

12. Если у вас мало данных (в основном вы столкнетесь с этим сценарием), выполните перекрестную проверку. (Поищите в сети, если не знаете)

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

13. Оцените свою модель с помощью тестового набора.

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

14. Создайте еще несколько моделей и сравните их

Сравните результаты моделей и выберите лучшую, а также выполните дополнительные операции тонкой настройки с помощью GridSearchCV и RandomSearchCV. (Поищите их, если не знаете)

Наконец, обучите свою модель, используя весь набор (обучение + тест + перекрестная проверка) в соответствии с этой статьей (https://machinelearningmastery.com/train-final-machine-learning-model/)

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