Единая структура практически для любой задачи машинного обучения

машинное обучение искусственный интеллект алгоритм Kaggle

На прошлой неделе специалист по данным по имени Абхишек Тхакур опубликовал статью на своей странице в LinkedIn.Approaching (Almost) Any Machine Learning Problem, представляет созданную им автоматизированную среду машинного обучения, которая может решить практически любую проблему машинного обучения, и проект скоро будет выпущен. Эта статья стала вирусной Kaggle, он участвовал в более чем 100 конкурсах, связанных с наукой о данных, и накопил много ценного опыта. Он с юмором сказал: «Написание такого фреймворка требует большого богатого опыта, не у всех есть такой опыт, и многие люди ценны. опытом, но они неохотно им делятся, а я как раз из тех, у кого есть опыт, и он готов им поделиться». Конечно, эта статья также противоречива, и многие считают ее неполной.

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

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

Давайте посмотрим на его рамку.

Говорят, что специалисты по данным тратят 60-70% своего времени на очистку данных и применение модельных алгоритмов, и этот фреймворк в основном нацелен на прикладную часть алгоритма.

Pipeline

Что такое Каггл?

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

Применение алгоритма для решения проблемы Kaggle обычно состоит из следующих шагов:

  • Шаг 1. Определите проблему
  • Шаг 2: Разделение данных
  • Шаг 3: Построение объектов извлечения
  • Шаг 4: Объедините данные
  • Шаг 5: Разложение
  • Шаг 6: Выберите функции
  • Шаг 7: выберите алгоритм обучения

Конечно, если рабочий хочет сделать работу хорошо, он должен сначала наточить свои инструменты, и он должен сначала закрепить свои инструменты и сумки.
Самый удобный способ — установить Anaconda, которая содержит большинство пакетов, необходимых для науки о данных, которые можно импортировать напрямую.Обычно используемые пакеты:

  • pandas: обычно используется для преобразования данных в форму данных для работы
  • scikit-learn: в нем можно использовать модели алгоритмов машинного обучения.
  • matplotlib: используется для рисования
  • А также xgboost, keras, tqdm и т.д.

Шаг 1. Определите проблему

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

Шаг 2: Разделение данных

Зачем нужно разбивать данные на две части?

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

В пакете обучения scikit есть инструменты, которые помогут вам сделать это:
StrtifiedKFold для задач классификации

from sklearn.cross_validation import StratifiedKFold

Проблемы регрессии с KFold

from sklearn.cross_validation import KFold

Шаг 3: Построение функций

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

запись 1: пол женский
запись 2: пол женский
запись 3: пол мужской

После преобразования это:

Женщина мужчина
record 1: 1 0
запись 2: 1 0
запись 3: 0 1

Этот процесс sklearn также может сделать это за вас:

from sklearn.preprocessing import LabelEncoder

или

from sklearn.preprocessing import OneHotEncoder

Шаг 4: Объедините данные

После обработки объектов они группируются.
Если данные плотные, вы можете использовать hstack numpy:

import numpy as np
X = np.hstack((x1, x2, ...))

Если он разреженный, используйте hstack разреженного:

from scipy import sparse
X = sparse.hstack((x1, x2, ...))

После объединения могут применяться следующие алгоритмические модели:

  • RandomForestClassifier
  • RandomForestRegressor
  • ExtraTreesClassifier
  • ExtraTreesRegressor
  • XGBClassifier
  • XGBRegressor

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

Шаг 5: Разложение

На этом шаге для дальнейшей оптимизации модели можно использовать следующие методы:

PCA: анализ основных компонентов, анализ основных компонентов — это метод анализа и упрощения наборов данных. Используется для уменьшения размерности набора данных при сохранении функций в наборе данных, которые вносят наибольший вклад в дисперсию.

from sklearn.decomposition import PCA

Для текстовых данных после преобразования в разреженную матрицу можно использовать SVD

from sklearn.decomposition import TruncatedSVD

SVD: разложение по сингулярным значениям, разложение по сингулярным числам, является важным матричным разложением в линейной алгебре, он всегда может найти размерность с наибольшей дисперсией после стандартизированного ортонормированного базиса, поэтому он используется для уменьшения размерности и шумоподавления.

Шаг 6: Выберите функции

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

Обычно используемые алгоритмы — это полный поиск, эвристический поиск и случайные алгоритмы.

Например, случайный лес:

from sklearn.ensemble import RandomForestClassifier

или xgboost:

import xgboost as xgb

Для разреженных данных хорошо известен метод хи-2:

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

Шаг 7: выберите алгоритм обучения

После выбора наиболее подходящих параметров можно применить алгоритм. Обычно используются следующие алгоритмы:

Classification:
Random Forest
GBM
Logistic Regression
Naive Bayes
Support Vector Machines
k-Nearest Neighbors

Regression
Random Forest
GBM
Linear Regression
Ridge
Lasso
SVR

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

Перед применением каждого алгоритма необходимо определить, подходит ли этот метод.
Почему в таком количестве алгоритмов предлагаются только эти алгоритмы, что требует сравнения производительности разных алгоритмов.
этот божественный текст Do we Need Hundreds of Classifiers to Solve Real World Classification Problems Протестирована производительность 179 моделей классификации на всех 121 данных UCI, обнаружены случайные леса. и SVM работают лучше всего.
Мы можем изучить исследовательские идеи внутри и посмотреть, как получить результаты сравнения, что также играет определенную руководящую роль в нашей практике.

Сравнение алгоритмов

Однако после непосредственного применения алгоритма общая точность не очень идеальна.В это время параметры нужно подгонять.Самый главный вопрос,какие параметры надо подгонять для какой модели?

Хотя в документации sklearn указаны параметры всех алгоритмов, но не сказано, какая корректировка будет эффективной. В некоторых курсах mooc есть некоторые коды проектов, в которых вы можете увидеть параметры, на которые они ориентируются при настройке некоторых алгоритмов, но некоторые не будут объяснять, почему они не регулируют другие. Здесь автор приводит эту таблицу исходя из своего опыта проведения более 100 соревнований.Думаю, ее можно использовать для справки.Конечно, если у вас есть время, зайдите в список параметров в документе и проверьте принцип работы алгоритма.Вы тоже можно судить по теории.какой параметр оказывает большее влияние.

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

Я думаю, что здесь также упоминается полезный опыт, а именно:спасти всех трансформеров, который удобно применять к проверочному набору данных:

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