У специалистов по машинному обучению разные личности. В то время как некоторые из них: «Я эксперт в X, и X могу обучаться на любом типе данных», где X = некоторый алгоритм, некоторые другие - «Правильный инструмент для тех, кто подходит для правильной работы». Многие из них также подписываются на «Мастер на все руки». Мастер одного », в которой они обладают глубокими знаниями в одной области и немного знакомы с разными областями машинного обучения. Тем не менее, никто не может отрицать тот факт, что мы, как практикующие специалисты по данным, должны знать основы некоторых распространенных алгоритмов машинного обучения, которые помогут нам решить проблему новой области, с которой мы сталкиваемся. Это вихревой тур по распространенным алгоритмам машинного обучения и краткие ресурсы по ним, которые могут помочь вам начать их работу.

1. Анализ главных компонентов (PCA) / SVD

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

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

Библиотеки:

Https://docs.scipy.org/doc/scipy/reference/generated/scipy.linalg.svd.html

Http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html

Вводное руководство:

Https://arxiv.org/pdf/1404.1100.pdf

2а. Метод наименьших квадратов и полиномиальная аппроксимация

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

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

Библиотеки:

Https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html Фак https://docs.scipy.org/doc/numpy-1.10.0/reference/generated/ numpy.polyfit.html »

Вводное руководство:

Https://lagunita.stanford.edu/c4x/HumanitiesScience/StatLearning/asset/linear_regression.pdf

2b. Ограниченная линейная регрессия

Метод наименьших квадратов можно спутать с выбросами, ложными полями и шумом в данных. Таким образом, нам нужны ограничения, чтобы уменьшить дисперсию линии, которую мы помещаем в набор данных. Правильный способ сделать это - подобрать модель линейной регрессии, которая гарантирует, что веса не будут работать неправильно. Модели могут иметь норму L1 (LASSO) или L2 (гребенчатая регрессия) или и то, и другое (эластичная регрессия). Среднеквадратичная потеря оптимизирована.

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

Библиотеки:

Http://scikit-learn.org/stable/modules/linear_model.html

Вводное руководство:

Https://www.youtube.com/watch?v=5asL5Eq2x0A

Https://www.youtube.com/watch?v=jbwSCwoT51M

3. K означает кластеризацию.

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

Как видно из названия, вы можете использовать этот алгоритм для создания K кластеров в наборе данных.

Библиотека:

Http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

Вводное руководство:

Https://www.youtube.com/watch?v=hDmNF9JG3lo

Https://www.datascience.com/blog/k-means-clustering

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

Логистическая регрессия ограничена. Линейная регрессия с применением нелинейности (в основном используется сигмоидальная функция или вы также можете использовать tanh) после применения весов, тем самым ограничивая выходы близкими к +/- классам (что равно 1 и 0 в случае сигмоида). Функции потери кросс-энтропии оптимизированы с помощью градиентного спуска. Примечание для новичков: для классификации используется логистическая регрессия, а не регрессия. Вы также можете рассматривать логистическую регрессию как одноуровневую нейронную сеть. Логистическая регрессия обучается с использованием методов оптимизации, таких как градиентный спуск или L-BFGS. Люди, занимающиеся НЛП, часто используют его под названием «Классификатор максимальной энтропии».

Вот как выглядит сигмовидная кишка:

Используйте LR для обучения простых, но очень надежных классификаторов.

Библиотека:

Http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

Вводное руководство:

Https://www.youtube.com/watch?v=-la3q9d7AKQ

5. SVM (машины опорных векторов)

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

Еще одно нововведение в SVM - это использование ядер данных для разработки функций. Если у вас есть хорошее понимание предметной области, вы можете заменить старое доброе ядро ​​RBF на более умное и получить прибыль.

Одна уникальная вещь, которую могут сделать SVM, - это изучить классификаторы одного класса.

SVM можно использовать для обучения классификатора (даже регрессоров)

Библиотека:

Http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

Вводное руководство:

Https://www.youtube.com/watch?v=eHsErlPJWUU

Примечание. Обучение логистической регрессии и SVM на основе SGD можно найти в SKLearn http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDClassifier.html, который я часто использую, поскольку это позволяет мне проверять как LR, так и SVM с общим интерфейсом. Вы также можете обучить его на наборах данных размером ›RAM с помощью мини-пакетов.

6. Нейронные сети прямого распространения.

По сути, это многослойные классификаторы логистической регрессии. Множество слоев весов, разделенных нелинейностями (сигмоид, tanh, relu + softmax и крутой новый selu). Другое популярное название для них - многослойные персептроны. FFNN могут использоваться для классификации и неконтролируемого изучения функций в качестве автоэнкодеров.

FFNN могут использоваться для обучения классификатора или извлечения функций в качестве автоэнкодеров.

Библиотеки:

Http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPClassifier.html#sklearn.neural_network.MLPClassifier

Http://scikit-learn.org/stable/modules/generated/sklearn.neural_network.MLPRegressor.html

Https://github.com/keras-team/keras/blob/master/examples/reuters_mlp_relu_vs_selu.py

Вводное руководство:

Http://www.deeplearningbook.org/contents/mlp.html

Http://www.deeplearningbook.org/contents/autoencoders.html

Http://www.deeplearningbook.org/contents/presentation.html

7. Сверточные нейронные сети (Convnets)

Практически любой современный результат машинного обучения на основе Vision в современном мире был достигнут с использованием сверточных нейронных сетей. Их можно использовать для классификации изображений, обнаружения объектов или даже сегментации изображений. Изобретенные Янном Лекуном в конце 80-х - начале 90-х годов, Convnets содержат сверточные слои, которые действуют как иерархические экстракторы признаков. Вы также можете использовать их в тексте (и даже в графиках).

Используйте свертки для современной классификации изображений и текста, обнаружения объектов, сегментации изображений.

Библиотеки:

Https://developer.nvidia.com/digits

Https://github.com/kuangliu/torchcv

Https://github.com/chainer/chainercv

Https://keras.io/applications/

Вводное руководство:

Http://cs231n.github.io/

Https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

8. Рекуррентные нейронные сети (RNN):

RNN моделируют последовательности, рекурсивно применяя один и тот же набор весов к состоянию агрегатора в момент времени t и вводя в момент времени t (данная последовательность имеет входы в момент времени 0..t..T и имеет скрытое состояние в каждый момент времени t который выводится из шага t-1 RNN). Чистые RNN сейчас используются редко, но их аналоги, такие как LSTM и GRU, являются новейшими в большинстве задач моделирования последовательности.

RNN (если здесь есть плотно связанный блок и нелинейность, в настоящее время f обычно является LSTM или GRU). Блок LSTM, который используется вместо простого плотного слоя в чистой RNN.

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

Библиотека:

Https://github.com/tensorflow/models (Здесь много интересных статей по НЛП от Google)

Https://github.com/wabyking/TextClassificationBenchmark

Http://opennmt.net/

Вводное руководство:

Http://cs224d.stanford.edu/

Http://www.wildml.com/category/neural-networks/recurrent-neural-networks/

Http://colah.github.io/posts/2015-08-Understanding-LSTMs/

9. Условные случайные поля (CRF)

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

Используйте CRF для маркировки последовательностей (в тексте, изображении, временных рядах, ДНК и т. Д.)

Библиотека:

Https://sklearn-crfsuite.readthedocs.io/en/latest/

Вводное руководство:

Http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/

Цикл лекций Хьюго Ларошеля из 7 частей на Youtube: https://www.youtube.com/watch?v=GF3iSJkgPbA

10. Деревья решений

Допустим, мне дали таблицу Excel с данными о различных фруктах, и я должен сказать, какие из них похожи на яблоки. Что я сделаю, так это задам вопрос: «Какие плоды красные и круглые?» и разделите все плоды, которые отвечают на вопрос «да» и «нет». Теперь все красные и круглые фрукты могут не быть яблоками, и все яблоки не будут красными и круглыми. Поэтому я задам вопрос: «На каких фруктах есть намек на красный или желтый цвет? »На красных и круглых плодах и спросит:« Какие плоды зеленые и круглые? » на не красных и круглых плодах. На основании этих вопросов я могу с большой точностью сказать, какие именно яблоки. Этот каскад вопросов и есть дерево решений. Однако это дерево решений, основанное на моей интуиции. Интуиция не может работать с многомерными и сложными данными. Мы должны автоматически придумывать каскад вопросов, просматривая данные с тегами. Это то, что делают деревья решений на основе машинного обучения. Более ранние версии, такие как деревья CART, когда-то использовались для простых данных, но с все большим и большим набором данных компромисс смещения и дисперсии необходимо решать с помощью более совершенных алгоритмов. В настоящее время используются два распространенных алгоритма деревьев решений: случайные леса (которые строят разные классификаторы на случайном подмножестве атрибутов и комбинируют их для вывода) и деревья повышения (обучающие каскад деревьев одно поверх других, исправляя ошибки нижеприведенных). их).

Деревья решений могут использоваться для классификации точек данных (и даже регрессии).

Библиотеки

Http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html

Http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html

Http://xgboost.readthedocs.io/en/latest/

Https://catboost.yandex/

Вводное руководство:

Http://xgboost.readthedocs.io/en/latest/model.html

Https://arxiv.org/abs/1511.05741

Https://arxiv.org/abs/1407.7502

Http://education.parrotprediction.teachable.com/p/practical-xgboost-in-python

Алгоритмы TD (хорошо иметь)

Если вам все еще интересно, как любой из вышеперечисленных методов может решить такие задачи, как победа над чемпионом мира по го, как это сделал DeepMind, они не могут. Все 10 типов алгоритмов, о которых мы говорили до этого, относились к распознаванию образов, а не к изучению стратегии. Чтобы изучить стратегию решения многоступенчатой ​​задачи, такой как победа в шахматах или игра на консоли Atari, нам нужно позволить агенту быть свободным от агентов и извлекать уроки из вознаграждений / штрафов, с которыми он сталкивается. Этот тип машинного обучения называется обучением с подкреплением. Многие (не все) недавние успехи в этой области являются результатом объединения способностей восприятия монастыря или LSTM с набором алгоритмов, называемых обучением временной разнице. К ним относятся Q-Learning, SARSA и некоторые другие варианты. Эти алгоритмы представляют собой умную игру на основе уравнений Беллмана, позволяющую получить функцию потерь, которую можно обучить с помощью вознаграждений, которые агент получает из окружающей среды.

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

Библиотеки:

Https://github.com/keras-rl/keras-rl

Https://github.com/tensorflow/minigo

Вводное руководство:

Возьмите бесплатную книгу Саттона и Барто: https://web2.qatar.cmu.edu/~gdicaro/15381/additional/SuttonBarto-RL-5Nov17.pdf

Посмотрите курс Дэвида Сильвера: https://www.youtube.com/watch?v=2pWv7GOvuf0

Это 10 алгоритмов машинного обучения, которым вы можете научиться, чтобы стать специалистом по данным.

## Удачного взлома !!! ##