[ML0to100] — S1E12

Другой способ обобщения * набора примеров - это построить модель из этих примеров, а затем использовать эту модель для прогнозирования.

* Обобщение - обычно относится к способности модели ML эффективно работать с новыми невидимыми данными, а не только с данными, на которых она была обучена.

Пример-

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

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

Итак, вы решили смоделировать удовлетворенность жизнью как линейную функцию от ВВП на душу населения.

Этот шаг называется выбор модели: вы выбрали линейную модель удовлетворенности жизнью только с одним атрибутом - ВВП на душу населения.

life_satisfaction = θ0 + θ1 × GDP_per_capita

Эта модель имеет два модельных параметра θ0 и θ1. Настраивая эти параметры, вы можете заставить свою модель представлять любую линейную функцию, как показано

Прежде чем вы сможете использовать свою модель, вам необходимо определить значения параметров θ0 и θ1.

Итак, вам нужно указать меру производительности. Вы можете определить:

- Функция полезности (или функция фитнеса), которая измеряет, насколько хороша ваша модель.

- Функция затрат, которая измеряет, насколько это плохо.

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

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

В нашем случае алгоритм находит, что оптимальные значения параметров равны

θ0 = 4.85 и θ1 = 4.91 × 10–5.

Терминология: «модель» может относиться к-

- тип модели (например, линейная регрессия)

- полностью определенная архитектура модели (например, линейная регрессия с одним входом и одним выходом)

- окончательная обученная модель, готовая к использованию для прогнозов (например, линейная регрессия с одним входом и одним выходом, используя θ0 = 4,85 и θ1 = 4,91 × 10–5)

Наконец-то вы готовы запустить модель, чтобы делать прогнозы.

Допустим, вы хотите знать, насколько счастливы индийцы (данные ОЭСР не дают ответа)

Вы можете использовать свою модель, чтобы сделать хороший прогноз:

Вы просматриваете ВВП на душу населения в Индии, находите 2009,98 долларов США, а затем применяете свою модель и обнаруживаете, что удовлетворенность жизнью, вероятно, будет где-то рядом.

4.85 + 2,009.987× 4.91 × 10–5 = 4.95

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

Просто скопируйте и вставьте его в IDE Python по вашему выбору, чтобы попробовать.

Ничего страшного, если вы еще не поняли весь код; мы представим Scikit-Learn в следующих выпусках.

Я предполагаю, что вы уже знакомы с основами pip и python.

Выполните следующие команды в cmd одну за другой, чтобы получить зависимости (окна)

pip install matplotlib
pip install numpy
pip install pandas
pip install scipy
pip install scikit-learn

Если бы вместо этого вы использовали алгоритм обучения на основе экземпляров, например, Кипр (ВВП - 20 732 доллара США)

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

Поскольку данные ОЭСР говорят нам, что удовлетворенность жизнью словенцев составляет 5,7, вы могли бы прогнозировать удовлетворенность жизнью на уровне 5,7 для Кипра.

Если вы немного уменьшите масштаб и посмотрите на две ближайшие ближайшие страны, вы найдете Португалию и Испанию с уровнем удовлетворенности жизнью 5,1 и 6,5 соответственно.

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

Этот простой алгоритм называется регрессией k-ближайших соседей (в этом примере k = 3).

Заменить модель линейной регрессии на k-Nearest Neighbor в предыдущем коде так же просто, как заменить эти две строки (строки 46 и 63):

import sklearn.linear_model 
model = sklearn.linear_model.LinearRegression()

с этими двумя:

import sklearn.neighbors 
model = sklearn.neighbors.KNeighborsRegressor( n_neighbors=3)

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

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

Возможно, вам потребуется использовать больше атрибутов (уровень занятости, здоровье, загрязнение воздуха и т. Д.)

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

В итоге:

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

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

В отличие от обучения, он не вычисляет ошибку и не обновляет веса (значения параметров).

Теперь ты знаешь

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

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

Читать далее - Характеристики« неверных данных для машинного обучения и возможные решения? [S1E13

Сводные шпаргалки, заметки, флэш-карты, записные книжки Google Colab, коды и т. д. будут предоставлены в дальнейших уроках по мере необходимости.

Прочтите всю серию «S1» [ML0to100], чтобы узнать о следующем:

  • Что такое машинное обучение, какие проблемы оно пытается решить, а также основные категории и фундаментальные концепции его систем.
  • Шаги в типичном проекте машинного обучения
  • Обучение путем подбора модели к данным
  • Оптимизация функции стоимости
  • Обработка, очистка и подготовка данных
  • Выбор и инженерные особенности
  • Выбор модели и настройка гиперпараметров с помощью перекрестной проверки
  • Проблемы машинного обучения, в частности, недостаточная и переоснащенная (компромисс смещения / дисперсии)
  • Наиболее распространенные алгоритмы обучения: линейная и полиномиальная регрессия, логистическая регрессия, k-ближайшие соседи, машины опорных векторов, деревья решений, случайные леса и ансамблевые методы.
  • Уменьшение размерности обучающих данных для борьбы с «проклятием размерности»
  • Другие методы неконтролируемого обучения, включая кластеризацию, оценку плотности и обнаружение аномалий. Часть II, Нейронные сети и глубокое обучение, охватывает следующие темы:
  • Что такое нейронные сети и чем они хороши для построения и обучения нейронных сетей с использованием TensorFlow и Keras
  • Наиболее важные архитектуры нейронных сетей: нейронные сети с прямой связью для табличных данных, сверточные сети для компьютерного зрения, повторяющиеся сети и сети долгосрочной краткосрочной памяти (LSTM) для обработки последовательностей, кодировщики / декодеры и преобразователи для обработки естественного языка, автокодеры и генеративные состязательные сети (GAN) для генеративного обучения
  • Методы обучения глубоких нейронных сетей
  • Как создать агента (например, бота в игре), который может изучать хорошие стратегии методом проб и ошибок, используя обучение с подкреплением
  • Эффективная загрузка и предварительная обработка больших объемов данных
  • Обучение и масштабное развертывание моделей TensorFlow

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