Машинное обучение

Когда большинство людей слышат «Машинное обучение», они представляют себе робота: надежного дворецкого или смертоносного Терминатора, в зависимости от того, кого вы спросите. Но машинное обучение - это не просто футуристическая фантазия, оно уже здесь. Фактически, он уже несколько десятилетий используется в некоторых специализированных приложениях, таких как оптическое распознавание символов (OCR). Но первое приложение машинного обучения, которое действительно стало массовым и улучшило жизнь сотен миллионов людей, захватило мир еще в 1990-х годах: это был спам-фильтр. Не совсем самосознающий Скайнет, но технически он квалифицируется как машинное обучение (на самом деле он настолько хорошо усвоен, что вам редко нужно больше отмечать электронное письмо как спам). За ним последовали сотни приложений машинного обучения, которые теперь незаметно поддерживают сотни продуктов и функций, которые вы регулярно используете, от лучших рекомендаций до голосового поиска.

Что такое машинное обучение?

Машинное обучение - это наука (и искусство) программирования компьютеров, чтобы они могли учиться на данных. Вот несколько более общее определение: [Машинное обучение - это] область обучения, которая дает компьютерам возможность учиться без явного программирования. Артур Сэмюэл, 1959 год.

И более инженерный: компьютерная программа, как говорят, учится на опыте E в отношении некоторой задачи T и некоторого показателя производительности P, если ее производительность на T, измеренная с помощью P, улучшается с опытом E. Tom Mitchell, 1997

Используемые языки программирования

Для машинного обучения используется несколько языков программирования. Некоторые из них: Python, C ++, JavaScript, Java, C #, Julia, Shell, R, TypeScript и Scala. Я буду больше говорить о Python. Python - один из широко используемых языков машинного обучения благодаря сообществу и ресурсам. Большая часть того, что вы хотите сделать, было создано для вас, и всего несколько строк могут творить чудеса. Однако не всегда все так просто.

Платформы Python, используемые в машинном обучении

  1. Numpy для работы с массивами, а также может использоваться для работы с изображениями (не очень хорошо то, для чего он в основном используется, это преобразование изображений в массив и выполнение простых вычислений в массиве).

Чтобы установить numpy, все, что вам нужно сделать, это открыть свой терминал (или командную строку) для Windows и ввести pip install numpy , и если вы используете диспетчер пакетов conda, numpy будет установлен по умолчанию.

  1. Pandas для манипулирования данными, вам нужно будет проанализировать свои данные перед построением модели. Чтобы установить pandas, все, что вам нужно сделать, это открыть свой терминал (или командную строку) для Windows и ввести pip install pandas , и если вы используете диспетчер пакетов conda, pandas будет установлен по умолчанию.
  2. Scikit Learn имеет множество алгоритмов, используемых для машинного обучения. для преобразований и предсказаний. Это один из основных пакетов, который вы будете использовать как инженеры по машинному обучению. По умолчанию он поставляется с anaconda, установите sklearn с помощью pip, написав pip install sklearn.
  3. Scipy используется для научных вычислений, чтобы установить sklearn с помощью pip, написав pip install scipy.
  4. Tensorflow в основном используется для глубокого обучения. Вы можете прочитать на tenorflow. Вы можете установить tenorflow с помощью pip, написав conda install -c conda-forge tensorflow or conda install -c conda-forge/label/broken tensorflow or conda install -c conda-forge/label/cf201901 tensorflow
    or conda install -c conda-forge/label/cf202003 tensorflow. You
    , можете узнать больше об установке tensorflow на anaconda.
  5. Есть много других библиотек, которые используются в машинном обучении и глубоком обучении.

Типы машинного обучения

Машинное обучение можно классифицировать по разным причинам:

1. Supervision
2. Whether it can relearn from new data, can it run on the fly?
3. Instance - Based Vs Model - Based Learning.

1. Надзор.

а. Контролируемые данные: наличие помеченных данных Регрессия
Классификация

Algorithms
                1. K - Nearest Neighbour
                2. Linear Regression
                3. Decision Trees and Random Forest etc

б. Неконтролируемые данные: отсутствие кластеризации помеченных данных
Ассоциация
Визуализация и уменьшение размерности

Algorithms
            1. K- means, hierarchical Clustering
            2. Principal Component Analysis, Kernel PCA
            3. Apriori etc

c. Полу контролируемое обучение: имеется мало данных с пометками.

d. Обучение с подкреплением

2. Batch Vs Online Learning

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

б. Онлайн-обучение: здесь система обучается постепенно, последовательно загружая экземпляры данных либо индивидуально, либо небольшими группами, называемыми мини-пакетами. Онлайн-обучение отлично подходит для систем, которые получают данные в виде непрерывного потока, например, цены на акции, и адаптируются к быстрым или автономным изменениям. Это также хороший вариант, если у вас ограниченные вычислительные ресурсы. СТАВКА ОБУЧЕНИЯ - важный параметр онлайн-обучения.

Instance-Based Vs Model-Based Learning

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

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

The main Challenges Of Machine Learning

Плохие данные: недостаточное количество данных
Неоправданная эффективность данных
Нерепрезентативные обучающие данные (выборка Bial)
Низкое качество данных
Нерелевантные функции: можно решить с помощью
Выбор функций
Извлечение функций: объединение существующих функций для создания более полезных. Разработка функций и сбор новых данных.
Переоснащение: может быть решено с помощью -
упрощения модели с меньшим количеством параметров, или путем уменьшения количества атрибутов или ограничения модели.
Собрать больше данных
Уменьшите уровень шума, исправив ошибки данных и удалив выбросы.
Недостаточное оснащение: можно решить с помощью -
выбора более мощной модели с большим количеством параметров.
Добавление лучших функций в алгоритм обучения (Разработка функций |)
Уменьшение ограничений на модель.

Testing and Validating Data

Единственный способ узнать, насколько хорошо модель будет обобщена на новые кейсы, - это на самом деле опробовать новую на кейсах. Поскольку мы не можем оценить, насколько хорошо наша модель работает на тестовых данных, поскольку нам неизвестна переменная target / label. Нам нужно разделить наши данные поезда на 2: данные поезда и данные оценки. мы могли бы использовать numpy для разделения данных, и мы можем использовать функцию sklearn train_test_split в модуле предварительной обработки.

Что дальше?

Следующее - начать машинное обучение. Установите необходимые библиотеки на свой ноутбук и приступайте к обучению.