Что нужно знать, прежде чем переходить к машинному обучению.

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

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

Контролируемое, неконтролируемое и полу-контролируемое обучение:

Контролируемое обучение:

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

Контролируемое обучение - это когда у вас есть входные переменные (x) и выходная переменная (Y), и вы используете алгоритм для изучения функции сопоставления от входа к выходу.

Y = f(X)

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

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

· Классификация: проблема классификации возникает, когда выходной переменной является категория, например «красный» или «синий» или «болезнь» и «отсутствие болезни».

· Регрессия: проблема регрессии возникает, когда выходной переменной является действительное значение, такое как «Заработная плата» или «Цена».

Обучение без учителя:

Обучение без учителя - это когда у вас есть только входные данные (X) и нет соответствующих выходных переменных.

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

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

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

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

· Ассоциация: проблема изучения правил ассоциации - это когда вы хотите найти правила, которые описывают большие части ваших данных, например, люди, которые покупают X, также склонны покупать Y.

Вот некоторые популярные примеры алгоритмов обучения без учителя:

· K-средства для задач кластеризации.

· Априорный алгоритм для задач обучения ассоциативным правилам.

Полу-контролируемое обучение:

Проблемы, при которых у вас большой объем входных данных (X) и только некоторые из них отмечены (Y), называются проблемами обучения с частично контролируемым обучением.

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

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

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

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

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

Категориальные и непрерывные функции в машинном обучении:

Функции - это термин, используемый для столбцов в базовой таблице аналитики (ABT). Все функции можно разделить на категориальные или непрерывные. Категориальные функции имеют одно из немногих значений, где на выбор предлагаются категории (например, менее 50 или более 50), Мошенничество или отсутствие мошенничества, По умолчанию кредитной карты или Не по умолчанию и т. Д., Тогда как у непрерывных функций есть много возможных вариантов значений, таких как Заработная плата человека. , Возраст человека, цена товара, размер ссуды и т. Д.

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

Scikit-learn:

Scikit-learn, вероятно, самая полезная библиотека для машинного обучения на Python. Scikit-learn предоставляет ряд контролируемых и неконтролируемых алгоритмов обучения через согласованный интерфейс на Python. Scikit-learn содержит множество функций. Рассматривайте Scikit-learn как набор инструментов для машинного обучения. Вот несколько из них, которые помогут вам понять распространение:

· Алгоритмы контролируемого обучения: подумайте о любом алгоритме контролируемого обучения, о котором вы, возможно, слышали, и очень высока вероятность, что он является частью scikit-learn. Начиная с обобщенных линейных моделей (например, линейной регрессии), опорных векторных машин (SVM), деревьев решений до байесовских методов - все они являются частью набора инструментов scikit-learn. Распространение алгоритмов - одна из главных причин широкого использования scikit-learn. Я начал использовать scikit для решения задач контролируемого обучения и также рекомендовал бы его людям, плохо знакомым с scikit / машинным обучением.

· Перекрестная проверка. Существуют различные методы проверки точности контролируемых моделей на невидимых данных.

· Алгоритмы неконтролируемого обучения: опять же, в предложении есть большой разброс алгоритмов - от кластеризации, факторного анализа, анализа главных компонентов до неконтролируемых нейронных сетей.

· Различные наборы данных об игрушках. Это пригодилось при изучении scikit-learn (например, набор данных IRIS, набор данных о ценах Boston House). Иметь их под рукой при изучении новой библиотеки очень помогает.

· Извлечение элементов: полезно для извлечения элементов из изображений, текста (например, мешка слов).

Наборы данных для обучения и тестирования:

Набор обучающих данных:

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

Данные тестирования:

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

Рассмотрим пример, в котором наш исходный набор данных имеет 1000 строк, а наша зависимая переменная - это мошенничество, а не мошенничество, мы обучим нашу модель на 70% данных, то есть на 700 строках, а затем проверим точность нашей модели на 30% данных, то есть на 300 строках. Как обсуждалось выше при тестировании нашей модели, мы не предоставим результат нашей модели для тестовых данных, хотя мы знаем результат и позволяем нашей модели дать нам результат для этих 300 строк, а позже мы сравним результат нашей модели с исходный результат наших тестовых данных, чтобы получить точность прогнозов нашей модели.

Для разделения наших данных на обучающий и тестовый набор мы используем метод train_test_split библиотеки scikit-learn

Матрица неточностей:

Матрица неточностей - это мера правильности прогнозов, сделанных классификационной моделью.

Как следует из названия, Матрица путаницы - это матричное представление правильных и неправильных прогнозов, сделанных моделью.

Рассмотрим сценарий, в котором мы прогнозируем, страдает ли человек «заболеванием» (событие) или «отсутствием заболевания» (без события).

Матрица путаницы теперь будет составляться на основе 4-х членов.

· «истинно положительное» для правильно спрогнозированных значений события.

· «ложное срабатывание» для неверно предсказанных значений события.

· «истинно отрицательное» для правильно спрогнозированных значений отсутствия событий.

· «ложноотрицательный» для неверно предсказанных значений отсутствия событий.

Предположим, у нас есть 100 данных тестирования, из которых 50 имеют заболевание (D) и 50 отсутствие заболевания (ND), и наша модель предсказала результат как 45 заболеваний ( D) и 55 Нет болезней, в этом случае наша матрица неточностей будет

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

ложное срабатывание: 0 (значения события не прогнозируются, поскольку событие равно 0, т. е. левая нижняя красная ячейка)

истинно отрицательное значение: 50 (правильно спрогнозировано отсутствие значений событий, т. е. нижняя правая зеленая ячейка)

ложноотрицательный: 5 (значения события прогнозируются как отсутствие значений событий, т. е. правая верхняя красная ячейка)

Зеленая диагональ представляет правильные прогнозы, а красная диагональ представляет неправильные прогнозы, поэтому общее количество правильных прогнозов составляет 45 + 50 = 95

А неверные прогнозы - 5 + 0 = 5

Оценка точности:

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

Оценка точности рассчитывается как:

Оценка точности = общее количество правильных прогнозов / общее количество сделанных прогнозов * 100

С учетом предыдущего сценария оценка точности будет =

95/100 * 100 = 0.95*100 = 95%

для расчета показателя точности используется библиотека sklearn.metrics.accuracy_score.

Средняя абсолютная ошибка и среднеквадратичная ошибка:

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

Чем ближе MAE и RMSE к 0, тем точнее модель.

Средняя абсолютная ошибка:

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

MAE = сумма (абс. (прогнозируемая - фактическая) / общая прогнозируемая величина

Рассмотрим пример.

Фактические значения = [2,4,6,8], прогнозируемые значения = [4,6,8,10]

MAE = абс (4–2 + 6–4 + 8–6 + 10–8) / 4 = 2

для вычисления средней абсолютной ошибки используется библиотека sklearn.metrics.mean_absolute_error.

Среднеквадратичная ошибка:

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

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

RMSE рассчитывается как квадратный корень из среднего квадрата разностей между фактическими результатами и прогнозами.

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

RMSE = sqrt (сумма ((прогнозируемое - фактическое) ²) / общее количество прогнозов)

Фактические значения = [2,4,6,8], прогнозируемые значения = [4,6,8,10]

RMSE = sqrt ((8) ² / 4) = sqrt (64/4) = sqrt (16) = 4

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

Если этот блог помог вам, дайте ЗАПИСКИ и ПОДЕЛИТЬСЯ с друзьями.

- Спасибо