Основы машинного обучения: Введение в машинное обучение — Основы и Примеры

Содержание

Введение в машинное обучение — Основы и Примеры

Перевод статьи разработчика алгоритмов машинного обучения, бизнес-консультанта и популярного автора Ганта Лаборде «Machine Learning: from Zero to Hero». 

Начнешь c “Зачем?”, придешь к “Я готов!”

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

Почему машинное обучение сейчас в тренде

Искусственный интеллект (далее ИИ) всегда имел применение, начиная от перемещения ракетки в пинг понге и заканчивая выполнением комбо в Street Fighter.

ИИ опирается на представление программиста о том, как программа должна себя вести. Но как часто становится понятно, не все программисты талантливы в программировании искусственного интеллекта. Стоит только погуглить “эпичные фейлы в играх” и наткнуться на глюки в физике, даже у опытных разработчков.

Несмотря на это, компьютер поддается обучению для игры в видеоигры, понимания языка и распознавания людей и предметов. Этот навык исходит из старой концепции, которая только недавно получила необходимые вычислительные мощности для существования вне теории. Я имею в виду машинное обучение (ML, Machine learning).

Не продумывайте сложные алгоритмы самостоятельно — обучите компьютер создавать собственные сложные алгоритмы. Как это будет работать? Алгоритм не столько написан, сколько выведен. Посмотри это короткое видео, с помощью анимации оно должно дать понимание общего принципа создания ИИ.

И как возможно такое, что мы даже не понимаем устройство рабочего алгоритма? Прекрасным визуальным примером был ИИ, написанный для прохождения игр Марио. Люди хорошо знают, как нужно играть в сайд-скроллеры, но это безумие пытаться определить стратегию игры для ИИ.

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

Зачем следует использовать машинное обучение?

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

Во-вторых, если не влияете на мир, мир повлияет на вас. Компании инвестируют в ML, и эти инвестиции уже меняют мир. Лидеры мысли предупреждают, что нельзя позволить алгоритмам машинного обучения быть в тени. Представьте себе, если бы монополия из нескольких корпораций контролировала Интернет. Если мы не “возьмемся за оружие”, наука не будет нашей.

Christian Heilmann высказал правильную мысль в беседе о машинном обучении:

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

Хорошо, теперь я заинтересован…

Концепт полезный и веселый. Но что за дичь там в действительности творится? Как это работает? Если хочешь сразу погрузиться, советую пропустить раздел и перейти к следующему “С чего мне начать?”. Если вы уже мотивированы делать модели ML, эти видео не понадобятся.

Если ты все еще пытаешься понять, как такое вообще возможно, следующее видео проведет тебя через логику работы алгоритмов, используя классическую задачу ML — проблему распознавания рукописного текста.

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

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

Классический пример машинного обучения в действии — датасет прямиком из 1936-го года, называемый ирисами Фишера. На презентации эксперта JavaFX, посвященной машинному обучению, я узнал, как использовать этот инструмент, чтобы визуализировать прикрепление и обратное распространение весов к нейронам в нейронной сети. Понаблюдайте за тем, как тренируется нейронная сеть.

Обучение нейронной сети Ирисы

Готовы стать Эйнштейном новой эры? Прорывы происходят каждый день, поэтому начинайте сейчас.

С чего мне начать?

Доступных ресурсов много. Я рекомендую два подхода.

Основы

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

Если хочешь получить силу в этой сфере и вести серьезные обсуждения о ML, то этот путь для тебя. Советую пройти курс по искусственным нейронным сетям. Этот подход позволит вам изучать ML на вашем телефоне, убивая время, например, в очереди. Одновременной проходите курс о машинном обучении.

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

Гонщик

Если вы не заинтересованы в написании алгоритмов, но хотите использовать их для создания сайтов и приложений, то используйте TensorFlow и погрузитесь в crash course.

TensorFlow — это библиотека с открытым исходным кодом для машинного обучения. Ее можно использовать любым способом, даже с JavaScript. А вот crash source.

Услуги ML

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

Предупреждаю, что нет гарантии, что ваши данные будут в безопасности или вообще останутся вашими, но предложения услуг по ML очень привлекательны, если вы заинтересованы в результате и имеете возможность загрузить данные на Amazon/Microsoft/Google.

Давайте быть созидателями

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

Курсы по data science

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

Надеюсь, эта статья вдохновила вас и ваше окружение изучать ML!

Машинное обучение — это легко / Хабр

В данной статье речь пойдёт о машинном обучении в целом и взаимодействии с датасетами. Если вы начинающий, не знаете с чего начать изучение и вам интересно узнать, что такое «датасет», а также зачем вообще нужен Machine Learning и почему в последнее время он набирает все большую популярность, прошу под кат. Мы будем использовать Python 3, так это как достаточно простой инструмент для изучения машинного обучения.



Для кого эта статья?

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

оставляет желать лучшего

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

В цифрах

С каждым годом растёт потребность в изучении больших данных как для компаний, так и для активных энтузиастов. В таких крупных компаниях, как Яндекс или Google, всё чаще используются такие инструменты для изучения данных, как язык программирования R, или библиотеки для Python (в этой статье я привожу примеры, написанные под Python 3). Согласно

Закону Мура

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

Анализ данных — это просто?

Да. А так же интересно. Наряду с особенной важностью для всего человечества изучать большие данные стоит относительная простота в самостоятельном их изучении и применении полученного «ответа» (от энтузиаста к энтузиастам). Для решения задачи классификации сегодня имеется огромное количество ресурсов; опуская большинство из них, можно воспользоваться средствами библиотеки Scikit-learn (SKlearn). Создаём свою первую обучаемую машину:

clf = RandomForestClassifier()
clf.fit(X, y)

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

— Если все так просто, почему до сих пор не каждый предсказывает, например, цены на валюту?

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

Ближе к делу


— Получается, зарабатывать на этом деле я не сразу смогу?

Да, до решения задач за призы в $100 000 нам ещё далеко, но ведь все начинали с чего-то простого.

Итак, сегодня нам потребуются:

  • Python 3 (с установленной pip3)
  • Jupyter
  • SKlearn, NumPy и matplotlib

Если чего-то нет: ставим всё за 5 минут

Для начала,

скачиваем

и устанавливаем Python 3 (при установке не забудьте поставить pip и добавить в PATH, если скачали установщик Windows). Затем, для удобства был взят и использован пакет Anaconda,

включающий в себя

более 150 библиотек для Python (

ссылка

на скачивание). Он удобен для использования Jupyter, библиотек numpy, scikit-learn, matplotlib, а так же упрощает установку всех. После установки, запускаем Jupyter Notebook через панель управления Anaconda, или через командную строку(терминал): «jupyter notebook».


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

Как обычно, импортируем необходимые для работы библиотеки:

import numpy as np
from pandas import read_csv as read

— Ладно, с Numpy всё понятно. Но зачем нам Pandas, да и еще read_csv?

Иногда бывает удобно «визуализировать» имеющиеся данные, тогда с ними становится проще работать. Тем более, большинство датасетов с популярного сервиса Kaggle собрано пользователями в формате CSV.

А вот так выглядит визуализированный pandas’ом датасет

Здесь колонка Activity показывает, идёт реакция или нет (1 при положительном, 0 при отрицательном ответе). А остальные колонки — множества признаков и соответствующие им значения (различные процентные содержания веществ в реакции, их агрегатные состояния и пр.)



— Помнится, ты использовал слово «датасет». Так что же это такое?

Датасет — выборка данных, обычно в формате «множество из множеств признаков» → «некоторые значения» (которыми могут быть, например, цены на жильё, или порядковый номер множества некоторых классов), где X — множество признаков, а y — те самые некоторые значения. Определять, например, правильные индексы для множества классов — задача классификации, а искать целевые значения (такие как цена, или расстояния до объектов) — задача ранжирования. Подробнее о видах машинного обучения можно прочесть в статьях и публикациях, ссылки на которые, как и обещал, будут в конце статьи.

Знакомимся с данными

Предложенный датасет можно скачать

здесь

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

path = "%путь к файлу%/wine.csv"
data = read(path, delimiter=",")
data.head()

Работая в Jupyter notebook, получаем такой ответ:

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

data.head()

просто

data

— теперь для просмотра вам доступна не только «верхняя часть» датасета.

Простая реализация задачи на классификацию

Переходим к основной части статьи — решаем задачу классификации. Всё по порядку:

  • создаём обучающую выборку
  • пробуем обучить машину на случайно подобранных параметрах и классах им соответствующих
  • подсчитываем качество реализованной машины

Посмотрим на реализацию (каждая выдержка из кода — отдельный Cell в notebook):

X = data.values[::, 1:14]
y = data.values[::, 0:1]

from sklearn.cross_validation import train_test_split as train
X_train, X_test, y_train, y_test = train(X, y, test_size=0.6)

from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(n_estimators=100, n_jobs=-1)
clf.fit(X_train, y_train)
clf.score(X_test, y_test)

Создаем массивы, где

X

— признаки (с 1 по 13 колонки),

y

— классы (0ая колонка). Затем, чтобы собрать тестовую и обучающую выборку из исходных данных, воспользуемся удобной функцией кросс-валидации

train_test_split

, реализованной в scikit-learn. С готовыми выборками работаем дальше — импортируем

RandomForestClassifier

из ensemble в sklearn. Этот класс содержит в себе все необходимые для обучения и тестирования машины методы и функции. Присваиваем переменной

clf

(classifier) класс RandomForestClassifier, затем вызовом функции

fit()

обучаем машину из класса clf, где

X_train

— признаки категорий

y_train

. Теперь можно использовать встроенную в класс метрику

score

, чтобы определить точность предсказанных для

X_test

категорий по истинным значениям этих категорий

y_test

. При использовании данной метрики выводится значение точности от 0 до 1, где 1 100% Готово!

Про RandomForestClassifier и метод кросс-валидации train_test_split

При инициализации clf для RandomForestClassifier мы выставляли значения n_estimators=100, n_jobs = -1, где первый отвечает за количество деревьев в лесу, а второй — за количество участвующих в работе ядер процессора (при -1 задействованы все ядра, по умолчанию стоит 1). Так как мы работаем с данным датасетом и нам негде взять тестирующую выборку, используем train_test_split для «умного» разбиения данных на обучающую выборку и тестирующую. Подробнее про них можно узнать, выделив интересующий Вас класс или метод и нажав Shift+Tab в среде Jupyter.


— Неплохая точность. Всегда ли так получается?

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

— Слишком легко. Больше мяса!

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

Да, с уменьшением количества признаков, падает и точность распознавания. И график получился не особенно-то красивым, но это и не решающее в простом анализе: вполне наглядно видно, как машина выделила обучающую выборку (точки) и сравнила её с предсказанными (заливка) значениями.

Реализация здесь
from sklearn.preprocessing import scale
X_train_draw = scale(X_train[::, 0:2])
X_test_draw = scale(X_test[::, 0:2])

clf = RandomForestClassifier(n_estimators=100, n_jobs=-1)
clf.fit(X_train_draw, y_train)

x_min, x_max = X_train_draw[:, 0].min() - 1, X_train_draw[:, 0].max() + 1
y_min, y_max = X_train_draw[:, 1].min() - 1, X_train_draw[:, 1].max() + 1

h = 0.02

xx, yy = np.meshgrid(np.arange(x_min, x_max, h),
            np.arange(y_min, y_max, h))

pred = clf.predict(np.c_[xx.ravel(), yy.ravel()])
pred = pred.reshape(xx.shape)

import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])

plt.figure()
plt.pcolormesh(xx, yy, pred, cmap=cmap_light)
plt.scatter(X_train_draw[:, 0], X_train_draw[:, 1], 
            c=y_train, cmap=cmap_bold)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())

plt.title("Score: %.0f percents" % (clf.score(X_test_draw, y_test) * 100))
plt.show()

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

Последнее слово

Надеюсь, данная статья помогла хоть чуть-чуть освоиться Вам в разработке простого машинного обучения на Python. Этих знаний будет достаточно, чтобы продолжить интенсивный курс по дальнейшему изучению BigData+Machine Learning. Главное, переходить от простого к углубленному постепенно. А вот полезные ресурсы и статьи, как и обещал:

Материалы, вдохновившие автора на создание данной статьи

Исторические очерки:

Подробнее про машинное обучение:

Изучаем python, или

до работы

с данными:

Однако для наилучшего освоения библиотеки sklearn пригодится знание английского: в

этом источнике

собраны все необходимые знания (так как это API reference).

Более углубленное изучение использования машинного обучения с Python стало возможным, и более простым благодаря преподавателям с Яндекса — этот курс обладает всеми необходимыми средствами объяснения, как же работает вся система, рассказывается подробнее о видах машинного обучения итд.
Файл сегодняшнего датасета был взят отсюда и несколько модифицирован.

Где брать данные, или «хранилище датасетов» — здесь собрано огромное количество данных от самых разных источников. Очень полезно тренироваться на реальных данных.

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

Гид: алгоритмы машинного обучения и их типы

Обучение с учителем

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

К категории обучения с учителем относятся классификация, регрессия и прогнозирование.

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

Обучение с частичным привлечением учителя

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

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

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

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

Методы обучения без учителя включают в себя:

  1. Кластеризация: Кластеризация предполагает группирование наборов похожих данных (на основе определенных критериев). Это полезно для сегментации данных на несколько групп и проведении анализа на основе каждого набора данных по отдельности для поиска закономерностей.
  2. Понижение размерности: Понижение размерности уменьшает количество используемых переменных и отделяет точную искомую информацию.

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

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

Машинное обучение — Российская Федерация

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

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

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

Неконтролируемое обучение

Неконтролируемое обучение используется, когда задача включает огромные объемы непомеченных данных. Например, все приложения социальных сетей, такие как Twitter, Instagram и Snapchat, содержат большие объемы непомеченных данных. Понимание смысла таких данных требует наличия алгоритмов для классификации данных на основе найденных закономерностей или кластеров. Неконтролируемое обучение представляет собой итеративный процесс анализа данных без участия человека. Такое обучение применяется в технологии обнаружения спама в электронной почте. Аналитику необходимо было учитывать слишком большое число переменных, для того чтобы отличить легитимное электронное сообщение от спама и пометить рекламные групповые рассылки. Вместо этого для идентификации нежелательной электронной почты применяются классификаторы машинного обучения, основанные на кластеризации и ассоциации.

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

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

Глубокое обучение

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

Руководство по машинному обучению для новичков | by Daria Sidorova | NOP::Nuances of Programming

  • Для технических специалистов, которые хотят повторить основы машинного обучения.
  • Для тех, кто не смыслит в технике, но хочет ознакомиться с машинным обучением и не знает, с чего начать.
  • Для тех, кто считает, что машинное обучение “тяжело” освоить.

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

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

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

  • Углубленные знания начального уровня алгебры: Вы должны разбираться в таких понятиях, как переменные, коэффициенты, линейные уравнения, исчисления, а также графики.
  • Владение основами программирования, а также опыт написания кода на Python: Опыт в машинном обучении не требуется, однако вы должны уметь читать и писать код Python с базовыми конструкциями, такими как определения функций, списки, словари, циклы и условные выражения.
  • Базовые знания следующих библиотек Python:
  1. NumPy
  2. Pandas
  3. SciKit-Learn
  4. SciPy
  5. Matplotlib (и/или Seaborn)

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

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

Семантическое дерево

Вероятностные основы машинного обучения — CodeRoad



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

Я ищу онлайн-ресурсы, где я могу быстро освежить понятия вероятности wrt Machine Learning.

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

machine-learning probability
Поделиться Источник futurenext110     25 октября 2012 в 10:54

2 ответа


  • Библиотеки Машинного Обучения Для Android

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

  • Учебники по weka для машинного обучения

    Я новичок в области машинного обучения, я хотел бы знать, есть ли какие-либо учебные пособия по weka для машинного обучения. Спасибо,



9

Это может помочь: http://www.cs.cmu.edu/~tom/10601_fall2012/lectures.shtml

Приведенная выше ссылка взята из класса машинного обучения Тома Митчелла @ CMU. Видео также доступны. Вы получите очень хорошее понимание концепций ML, если пройдете через все видео. (Или только первые несколько видео для условной вероятности, теоремы Байеса и т. Д.).

Поделиться stealthspy     31 октября 2012 в 08:10



1

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

Навскидку я могу назвать два ресурса: во-первых, любой курс Coursera , посвященный вероятностям или машинному обучению (см. AI, Statistics One или Вероятностные графические модели), содержит эти предварительные материалы. Во-вторых, существует ряд книг по статистике, свободно доступных в Интернете, одним из примеров которых является Теория информации, логические выводы и алгоритмы обучения .

Поделиться Qnan     25 октября 2012 в 12:27


Похожие вопросы:


Статистическое сравнение алгоритма машинного обучения

Я работаю в области машинного обучения. Я застрял в одной из них. Я хочу сравнить 4 метода машинного обучения среди 10 наборов данных. После проведения эксперимента я получил площадь под значением…


Каков результат работы алгоритма машинного обучения?

Я начинаю изучать машинное обучение. У меня есть базовые знания об этом. Если бы я рассматривал общий алгоритм машинного обучения M, я бы знал, каковы его точные входы и выходы. Я не имею в виду…


Детектор краев на основе машинного обучения

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


Библиотеки Машинного Обучения Для Android

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


Учебники по weka для машинного обучения

Я новичок в области машинного обучения, я хотел бы знать, есть ли какие-либо учебные пособия по weka для машинного обучения. Спасибо,


Обзор машинного обучения

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


Реальные примеры машинного обучения?

Недавно я делала курс по машинному обучению на Coursera проф. Эндрю Нг. После прохождения этого курса я понял основы алгоритмов машинного обучения, но у меня есть следующие вопросы: Где я могу найти…


Какова роль вероятности в программном обеспечении машинного обучения?

Существует несколько компонентов и методов, используемых в обучающих программах. Компоненты машинного обучения включают ANN, байесовские сети, SVM, PCA и другие вероятностные методы. Какую роль…


Как протестировать модель машинного обучения?

Я хочу разработать фреймворк (для целей тестирования QA), который проверяет модель машинного обучения. Я много беседовал со своими сверстниками и читал статьи из google. Большинство дискуссий или…


Python: Gridsearch Без Машинного Обучения?

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

Введение в машинное обучение в Python: Полное руководство с примерами


Вы хотите сделать машинное обучение с помощью Python, но у вас возникли вопросы с чего начать?

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

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

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

Как начать использовать машинное обучение в Python?


Лучший способ научиться машинному обучению — проектировать и завершать небольшие проекты.

Python может быть пугающим при начале работы


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

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

Лучший способ начать использовать Python для машинного обучения — это разобрать готовый проект по машинному обучению и затем его сделать самому с нуля:

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

Новичкам нужен небольшой сквозной проект


Книги и курсы порой часто расстраивают. Они дают вам много теоретических конструкций и фрагментов, но вы никогда не увидите, как все они сочетаются друг с другом.

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

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

Лучший способ по-настоящему примириться с новой платформой или инструментом – это работать над проектом машинного обучения и покрыть эти ключевые этапы.

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

«Hello World!» машинного обучения


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

Это хороший проект, потому что он легко интерпретируется.

  • Атрибуты данных являются числовыми, так что вы должны разобраться, как загрузить и обрабатывать данные
  • Это проблема классификации, позволяющая практиковаться с, возможно, более простым типом контролируемого алгоритма обучения
  • Задача является многоклассовой классификацией и  может потребовать некоторой специализированной обработки
  • Выборка имеет только 4 атрибута и 150 строк, что означает, что она достаточно мала, легко будет обработана в операционном памяти локальном компьютера (и легко визуализировать на экране)
  • Все числовые атрибуты находятся в одном и том же масштабе и одинаковой шкале, не требуя специальной нормализации или масштабирования для начала работы

Давайте начнем проект машинного обучения hello world в Python.

Машинное обучение в Python (начало проекта)


Вот краткий обзор того, что мы собираемся охватить:

  • Установка платформы Python и SciPy
  • Загрузка датасета
  • Анализ  датасета
  • Визуализация данных
  • Оценка алгоритмов машинного обучения
  • Прогнозирование данных

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

Если у вас есть какие-либо вопросы, пожалуйста, задавайте их в чат.

1. Загрузка, установка и запуск Python и SciPy


Раздел для тех, у кого ее не установлен Python и SciPy. Мы не будем подробно останавливаться на том как устанавливать Python, есть много пошаговых руководств в интернете как это сделать или рекомендуем посетить раздел «Введение в Python».

1.1 Установка библиотек SciPy


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

  • scipy
  • numpy
  • matlibplot
  • pandas
  • sklearn

На сайте SciPy есть отличная инструкция по установке вышеуказанных библиотек на ключевых платформах: Windows, Linux, OS X mac. Если у вас есть какие-либо сомнения или вопросы, обратитесь к этому руководству, через него прошли миллионы людей.

Существует множество способов установить библиотеки. В качестве совета мы рекомендуем выбрать один метод и быть последовательным в установке каждой библиотеки. Если вы пользуетесь Windows или вы не уверены как это сделать, мы рекомендую установить бесплатную версию Anaconda, которая включает в себя все, что вам нужно (windows, macOS, Linux).

1.2 Запуск Python и проверка версий


Рекомендуется убедиться, что среда Python была успешно установлена и работает в штатном состоянии. Сценарий ниже поможет вам проверить вашу среду. Он импортирует каждую библиотеку, требуемую в этом учебнике, и печатает версию.

Откройте командную строку и запустите Python:

python

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

Введите или скопируйте и вставьте следующий скрипт в интерпретатор:

# Проерка версий библиотек
# Версия Python
import sys
print('Python: {}'.format(sys.version))

# Загрузка scipy
import scipy
print('scipy: {}'.format(scipy.__version__))

# Загрузка numpy
import numpy
print('numpy: {}'.format(numpy.__version__))

# Загрузка matplotlib
import matplotlib
print('matplotlib: {}'.format(matplotlib.__version__))

# Загрузка pandas
import pandas
print('pandas: {}'.format(pandas.__version__))

# Загрукзка scikit-learn
import sklearn
print('sklearn: {}'.format(sklearn.__version__))

Вот пример вывода:

Python: 3.7.0 (default, Jun 28 2018, 08:04:48) [MSC v.1912 64 bit (AMD64)]
scipy: 1.1.0
numpy: 1.15.1
matplotlib: 2.2.3
pandas: 0.23.4
sklearn: 0.19.2

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

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

2. Загрузите данные


Мы будем использовать датасет цветов ирисов Фишера. Этот датасет известен тем, что он используется практически всеми в качестве «hello world» примера в машинном обучении и статистике.

Набор данных содержит 150 наблюдений за цветами ириса. В датасете есть четыре колонки измерений цветов в сантиметрах. Пятая колонна является видом наблюдаемого цветка.

Все наблюдаемые цветы принадлежат к одному из трех видов. Узнать больше об этом датасете можно в Википедия.

На этом этапе мы загрузим данные из URL-адреса в CSV файл.

2.1 Импорт библиотек


Во-первых, давайте импортировать все модули, функции и объекты, которые мы планируем использовать в этом уроке.

# Загрузка библиотек

from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

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

2.2 Загрузка датасета


Мы можем загрузить данные непосредственно из репозитория машинного обучения UCI.

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

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

# Загрузка датасета

url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)

Датасет должен загрузиться без происшествий.

Если у вас есть проблемы с сетью, вы можете скачать файл iris.csv в рабочую директорию и загрузить его с помощью того же метода, изменив URL на локальное имя файла.

3. Анализ датасета


Теперь пришло время взглянуть на данные более детально. На этом этапе мы погрузимся в анализ данные несколькими способами:

  • Размерность датасета
  • Просмотр среза данных
  • Статистическая сводка атрибутов
  • Разбивка данных по атрибуту класса.

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

3.1 Размерность датасета


Мы можем получить быстрое представление о том, сколько экземпляров (строк) и сколько атрибутов (столбцов) содержится в датасете с помощью метода shape.

# shape
print(dataset.shape)

Вы должны увидеть 150 экземпляров и 5 атрибутов:

(150, 5)

3.2 Просмотр среза данных


Исследовании данных, стоит сразу в них заглянуть,  для этого есть метод head()

# Срез данных head
print(dataset.head(20))

Это должно вывести первые 20 строк датасета.

    sepal-length  sepal-width  petal-length  petal-width        class
0            5.1          3.5           1.4          0.2  Iris-setosa
1            4.9          3.0           1.4          0.2  Iris-setosa
2            4.7          3.2           1.3          0.2  Iris-setosa
3            4.6          3.1           1.5          0.2  Iris-setosa
4            5.0          3.6           1.4          0.2  Iris-setosa
5            5.4          3.9           1.7          0.4  Iris-setosa
6            4.6          3.4           1.4          0.3  Iris-setosa
7            5.0          3.4           1.5          0.2  Iris-setosa
8            4.4          2.9           1.4          0.2  Iris-setosa
9            4.9          3.1           1.5          0.1  Iris-setosa
10           5.4          3.7           1.5          0.2  Iris-setosa
11           4.8          3.4           1.6          0.2  Iris-setosa
12           4.8          3.0           1.4          0.1  Iris-setosa
13           4.3          3.0           1.1          0.1  Iris-setosa
14           5.8          4.0           1.2          0.2  Iris-setosa
15           5.7          4.4           1.5          0.4  Iris-setosa
16           5.4          3.9           1.3          0.4  Iris-setosa
17           5.1          3.5           1.4          0.3  Iris-setosa
18           5.7          3.8           1.7          0.3  Iris-setosa
19           5.1          3.8           1.5          0.3  Iris-setosa

3.3 Статистическая сводка


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

# Стастические сводка методом describe
print(dataset.describe())

Мы видим, что все численные значения имеют одинаковую шкалу (сантиметры) и аналогичные диапазоны от 0 до 8 сантиметров.

       sepal-length  sepal-width  petal-length  petal-width
count    150.000000   150.000000    150.000000   150.000000
mean       5.843333     3.054000      3.758667     1.198667
std        0.828066     0.433594      1.764420     0.763161
min        4.300000     2.000000      1.000000     0.100000
25%        5.100000     2.800000      1.600000     0.300000
50%        5.800000     3.000000      4.350000     1.300000
75%        6.400000     3.300000      5.100000     1.800000
max        7.900000     4.400000      6.900000     2.500000

3.4 Распределение классов


Давайте теперь рассмотрим количество экземпляров (строк), которые принадлежат к каждому классу. Мы можем рассматривать это как абсолютный счет.

# Распределение по атрибуту class
print(dataset.groupby('class').size())

Мы видим, что каждый класс имеет одинаковое количество экземпляров (50 или 33% от датасета).

class
Iris-setosa        50
Iris-versicolor    50
Iris-virginica     50
dtype: int64

3.5 Резюме загрузки датасета


На будущее мы можем объединить все предыдущие элементы вместе в один скрипт..

# Загрузка библиотек
from pandas import read_csv

# Загрузка датасета
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)

# shape
print(dataset.shape)

# Срез данных head
print(dataset.head(20))

# Стастические сводка методом describe
print(dataset.describe())

# Распределение по атрибуту class
print(dataset.groupby('class').size())

4. Визуализация данных


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

Мы рассмотрим два типа графиков:

  • Одномерные (Univariate) графики, чтобы лучше понять каждый атрибут.
  • Многомерные (Multivariate) графики, чтобы лучше понять взаимосвязь между атрибутами.

4.1 Одномерные графики


Начнем с некоторых одномерных графиков, то есть графики каждой отдельной переменной. Учитывая, что входные переменные являются числовыми, мы можем создавать диаграмма размаха (или «ящик с усами», по-английски «box and whiskers diagram») каждого из них.

# Диаграмма размаха
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()

Это дает нам более четкое представление о распределении атрибутов на входе.

Диаграмма размаха атрибутов входных данных

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

# Гистограмма распределения атрибутов датасета
dataset.hist()
pyplot.show()

Из графиков видно, что две из входных переменных имеют около гауссово (нормальное)  распределение. Это полезно отметить, поскольку мы можем использовать алгоритмы, которые могут использовать это предположение.

Гистограммы входных данных атрибутов датасета

4.2 Многомерные графики


Теперь мы можем посмотреть на взаимодействия между переменными.

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

#Матрица диаграмм рассеяния
scatter_matrix(dataset)
pyplot.show()

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

4.3 Резюме визуализации данных


Для справки мы можем связать все предыдущие элементы вместе в один скрипт. Полный пример приведен ниже.

# Загрузка библиотек
from pandas import read_csv

# Загрузка датасета
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)

# Диаграмма размаха
dataset.plot(kind='box', subplots=True, layout=(2,2), sharex=False, sharey=False)
pyplot.show()

# Гистограмма распределения атрибутов датасета
dataset.hist()
pyplot.show()

#Матрица диаграмм рассеяния
scatter_matrix(dataset)
pyplot.show()

5. Оценка алгоритмов


Теперь пришло время создать некоторые модели данных и оценить их точность на контрольных данных.

Вот что мы собираемся охватить в этом шаге:

  • Отделим обучающая выборка от контрольной (тестовой) выборке.
  • Настройка 10-кратной кросс-валидации
  • Построим несколько различных моделей для прогнозирования класса цветка из измерений цветов
  • Выберем лучшую модель.


5.1 Создание контрольной выборки


Мы должны знать, что модель, которую мы создали, хороша.

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

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

Разделим загруженный датасет на два:

  • 80% данных мы будем использовать для обучения, оценки и выбора лучшей среди наших моделей
  • 20% данных, что мы будем использовать в качестве контрольного теста качества полученных моделей
# Разделение датасета на обучающую и контрольную выборки
array = dataset.values

# Выбор первых 4-х столбцов 
X = array[:,0:4]

# Выбор 5-го столбца 
y = array[:,4]

# Разделение X и y на обучающую и контрольную выборки 
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

Теперь у вас есть обучающиеся данные в X_train и Y_train для подготовки моделей и контрольная выборка X_validation и Y_validation, которые мы можем использовать позже.

Обратите внимание, что мы использовали срез в Python для выбора столбцов в массиве NumPy.

5.2 Тестирование проверки


Для оценки точности модели мы будем использовать стратифицированную 10-кратную кросс-валидацию.

Это разделит наш датасет на 10 частей, обучающийся на 9 частях и 1 тестовой проверке и будет повторять обучение на всех комбинаций из выборок train-test.

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

Для получения дополнительной информации о том как работает метод k-fold кросс-валидации можно посмотреть по ссылке.

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

Мы используем метрику «acccuracy» для оценки моделей.

Это соотношение числа правильно предсказанных экземпляров, разделенных на общее количество экземпляров в наборе данных, умноженном на 100, чтобы дать процент (например, точность 95%). Мы будем использовать оценочную переменную, когда мы будем запускать сборку и оценивать каждую модель.

5.3 Строим модели машинного обучения


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

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

Давайте протестируем 6 различных алгоритмов:

  • Логистическая регрессия или логит-модель (LR)
  • Линейный дискриминантный анализ (LDA)
  • Метод k-ближайших соседей (KNN)
  • Классификация и регрессия с помощью деревьев (CART)
  • Наивный байесовский классификатор (NB)
  • Метод опорных векторов (SVM)

Здесь приведена смесь простых линейных (LR и LDA), нелинейных (KNN, CART, NB и SVM) алгоритмов.

Давайте построим и оценим наши модели:

# Загружаем алгоритмы модели
models = []
models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC(gamma='auto')))

# оцениваем модель на каждой итерации
results = []
names = []

for name, model in models:
	kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True)
	cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')
	results.append(cv_results)
	names.append(name)
	print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))

5.4 Выбираем модель


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

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

LR: 0.955909 (0.044337)
LDA: 0.975641 (0.037246)
KNN: 0.950524 (0.040563)
CART: 0.951166 (0.052812)
NB: 0.951166 (0.052812)
SVM: 0.983333 (0.033333)

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

Как интерпретировать полученные значения качества моделей?

В этом случае, мы видим, что это выглядит как метод опорных векторов (SVM) имеет самый большой расчет точности около 0,98 или 98%.

Мы также можем создать график результатов оценки модели и сравнить расхождение средней точность каждой модели. Существует разбор показателей точности для каждого алгоритма, потому что каждый алгоритм был оценен 10 раз (в рамках 10-кратной кросс-валидации).

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

# Сравниванием алгоритмы
pyplot.boxplot(results, labels=names)
pyplot.title('Algorithm Comparison')
pyplot.show()

Мы видим, что ящики и усы участков в верхней части диапазона достигают 100% точности, а некоторые находятся в районе 85% точности.

5.5 Резюме оценки алгоритмов


Для справки мы можем связать все предыдущие элементы вместе в один скрипт. Полный пример приведен ниже.

# Загрузка библиотек
from pandas import read_csv
from pandas.plotting import scatter_matrix
from matplotlib import pyplot
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC

# Загрузка датасета
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)

# Разделение датасета на обучающую и контрольную выборки
array = dataset.values

# Выбор первых 4-х столбцов 
X = array[:,0:4]

# Выбор 5-го столбца 
y = array[:,4]

# Разделение X и y на обучающую и контрольную выборки 
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

# Загружаем алгоритмы моделей
models = []
models.append(('LR', LogisticRegression(solver='liblinear', multi_class='ovr')))
models.append(('LDA', LinearDiscriminantAnalysis()))
models.append(('KNN', KNeighborsClassifier()))
models.append(('CART', DecisionTreeClassifier()))
models.append(('NB', GaussianNB()))
models.append(('SVM', SVC(gamma='auto')))

# оцениваем модель на каждой итерации
results = []
names = []

for name, model in models:
	kfold = StratifiedKFold(n_splits=10, random_state=1, shuffle=True)
	cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring='accuracy')
	results.append(cv_results)
	names.append(name)
	print('%s: %f (%f)' % (name, cv_results.mean(), cv_results.std()))

# Сравниванием алгоритмы
pyplot.boxplot(results, labels=names)
pyplot.title('Algorithm Comparison')
pyplot.show()

6. Прогнозирование данных


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

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

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

6.1 Создаем прогноз


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

# Создаем прогноз на контрольной выборке
model = SVC(gamma='auto')
model.fit(X_train, Y_train)
predictions = model.predict(X_validation)

6.2 Оцениваем прогноз


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

# Оцениваем прогноз
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))

Мы видим, что точность 0,966 или около 96% на контрольной выборке.

Матрица ошибок дает представление об одной допущенной ошибке (сумма недиагональных значений).

Наконец, отчет о классификации предусматривает разбивку каждого класса по точности (precision), полнота (recall), f1-оценка, показывающим отличные результаты (при этом контрольная выборка была небольшая, всего 30 значений).

0.9666666666666667
[[11  0  0]
 [ 0 12  1]
 [ 0  0  6]]
                 precision    recall  f1-score   support

    Iris-setosa       1.00      1.00      1.00        11
Iris-versicolor       1.00      0.92      0.96        13
 Iris-virginica       0.86      1.00      0.92         6

    avg / total       0.97      0.97      0.97        30


6.3 Резюме прогнозирование данных


Для справки мы можем связать все предыдущие элементы вместе в один скрипт. Полный пример приведен ниже.

# Загрузка библиотек
from pandas import read_csv
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.metrics import accuracy_score

# Загрузка датасета
url = "https://raw.githubusercontent.com/jbrownlee/Datasets/master/iris.csv"
names = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
dataset = read_csv(url, names=names)

# Разделение датасета на обучающую и контрольную выборки
array = dataset.values

# Выбор первых 4-х столбцов 
X = array[:,0:4]

# Выбор 5-го столбца 
y = array[:,4]

# Разделение X и y на обучающую и контрольную выборки 
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.20, random_state=1)

# Создаем прогноз на контрольной выборке
model = SVC(gamma='auto')
model.fit(X_train, Y_train)
predictions = model.predict(X_validation)

# Оцениваем прогноз
print(accuracy_score(Y_validation, predictions))
print(confusion_matrix(Y_validation, predictions))
print(classification_report(Y_validation, predictions))

Машинное обучение в Python это не сложно


Проработайте примеры из урока, это не займет дольше 10-15 минут.

Вам не обязательно сразу все понимать. Ваша цель состоит в том, чтобы запустить ряд скриптов описанных в уроке и получить конечный результат. Вам не нужно понимать все при первом проходе. Записывайте свои вопросы параллельно с тем как пишите код. Рекомендуем использовать справку («FunctionName») в Python чтобы разобраться глубже во всех функциях, которые вы используете.

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

Вам не нужно быть программистом Python. Синтаксис языка Python может быть интуитивно понятным, даже если вы новичок в нем. Как и на других языках, сосредоточьтесь на вызовах функций (например,function()) и назначениях (например, a = «b»).  Если вы являетесь разработчиком, вы итак уже знаете, как подобрать основы языка очень быстро.

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

Итого


Вы сделали свой первый мини-проект по машинному обучению в Python.

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

Какие могут быть следующие шаги по изучению машинного обучения?

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

Основные понятия машинного обучения

Последнее обновление 15 августа 2020 г.

Каковы основные концепции машинного обучения?

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

Педро Домингос — лектор и профессор машинного обучения в Университете Стирки и автор новой книги под названием «Главный алгоритм: как поиски совершенной обучающей машины переделают наш мир».

Домингос предлагает бесплатный онлайн-курс по машинному обучению в компании Courser под соответствующим названием «Машинное обучение». Видео по каждому модулю можно предварительно просмотреть на Coursera в любое время.

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

Основные понятия машинного обучения
Фото Трэвиса Уайза, некоторые права защищены.

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

Первая половина лекции посвящена общей теме машинного обучения.

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

Почему нам нужно заботиться о машинном обучении?

Прорыв в машинном обучении стоил бы десяти Microsoft.

— Билл Гейтс, бывший председатель Microsoft

Машинное обучение заставляет компьютеры программировать себя. Если программирование — это автоматизация, то машинное обучение автоматизирует процесс автоматизации.

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

  • Традиционное программирование : данные и программа запускаются на компьютере для получения результата.
  • Машинное обучение : данные и вывод обрабатываются на компьютере для создания программы. Эту программу можно использовать в традиционном программировании.

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

Традиционное программирование и машинное обучение

Приложения машинного обучения

Примеры приложений машинного обучения:

  • Интернет-поиск : ранжирование страницы на основе того, на что вы, скорее всего, нажмете.
  • Вычислительная биология: рациональное проектирование лекарств в компьютере на основе прошлых экспериментов.
  • Финансы : решите, кому отправлять предложения по кредитной карте. Оценка риска по кредитным предложениям.Как решить, куда вложить деньги.
  • Электронная коммерция : Прогнозирование оттока клиентов. Является ли транзакция мошеннической.
  • Освоение космоса : космические аппараты и радиоастрономия.
  • Робототехника : как справиться с неопределенностью в новых условиях. Автономный. Беспилотный автомобиль.
  • Извлечение информации : задавайте вопросы по базам данных в Интернете.
  • Социальные сети : Данные об отношениях и предпочтениях.Машинное обучение для извлечения пользы из данных.
  • Отладка : Использование в задачах информатики, таких как отладка. Трудоемкий процесс. Могу подсказать, где может быть ошибка.

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

Ключевые элементы машинного обучения

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

Каждый алгоритм машинного обучения состоит из трех компонентов:

  • Представление : как представить знания.Примеры включают деревья решений, наборы правил, экземпляры, графические модели, нейронные сети, опорные векторные машины, ансамбли моделей и другие.
  • Оценка : способ оценки кандидатских программ (гипотез). Примеры включают точность, предсказание и отзыв, квадратичную ошибку, правдоподобие, апостериорную вероятность, стоимость, маржу, расхождение энтропии k-L и другие.
  • Оптимизация : способ создания программ-кандидатов, известный как процесс поиска.Например комбинаторная оптимизация, выпуклая оптимизация, оптимизация с ограничениями.

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

Типы обучения

Существует четыре типа машинного обучения:

  • Обучение с учителем : (также называемое индуктивным обучением) Данные обучения включают желаемые результаты. Это спам, это не так, обучение контролируется.
  • Обучение без учителя : данные обучения не содержат желаемых результатов.Пример — кластеризация. Трудно сказать, что такое хорошее обучение, а что нет.
  • Полу-контролируемое обучение : данные обучения включают несколько желаемых результатов.
  • Обучение с подкреплением : вознаграждение за последовательность действий. Типам ИИ это нравится, это самый амбициозный вид обучения.

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

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

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

Машинное обучение на практике

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

  1. Пусковой цикл
    1. Понимание предметной области, предварительных знаний и целей . Поговорите с экспертами в предметной области. Часто цели очень неясны. Часто у вас есть больше вещей, которые нужно попробовать, чем вы можете реализовать.
    2. Интеграция, выбор, очистка и предварительная обработка данных .Часто это самая трудоемкая часть. Важно иметь качественные данные. Чем больше у вас данных, тем больше отстой, потому что данные грязные. Мусор на входе, мусор на выходе.
    3. Обучающие модели . Самое интересное. Эта часть очень зрелая. Инструменты общие.
    4. Интерпретация результатов . Иногда не имеет значения, как работает модель, если она дает результаты. В других областях требуется, чтобы модель была понятной. Вам бросят вызов эксперты-люди.
    5. Консолидация и внедрение обнаруженных знаний . Большинство успешных в лаборатории проектов не используются на практике. Очень сложно что-то использовать.
  2. Концевая петля

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

Индуктивное обучение

Вторая часть лекции посвящена индуктивному обучению.Это общая теория обучения с учителем.

Что такое индуктивное обучение?

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

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

Некоторые практические примеры индукции:

  • Оценка кредитного риска .
    • Х — это свойства заказчика.
    • F (x) утвержден кредит или нет.
  • Диагностика заболеваний .
    • Х — это свойства пациента.
    • f (x) — болезнь, от которой они страдают.
  • Распознавание лиц .
    • Х — растровые изображения лиц людей.
    • Функция f (x) предназначена для присвоения имени лицу.
  • Автоматическое рулевое управление .
    • x — это растровые изображения, снятые камерой перед автомобилем.
    • f (x) — угол поворота рулевого колеса.

Когда следует использовать индуктивное обучение?

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

4 задачи, где индуктивное обучение может быть хорошей идеей:

  • Проблемы, в которых нет эксперта-человека .Если люди не знают ответа, они не могут написать программу для его решения. Это области настоящих открытий.
  • Люди могут выполнить задачу, но никто не может описать, как это сделать . Есть проблемы, когда люди могут делать то, что компьютер не может делать или делать хорошо. Примеры включают езду на велосипеде или вождение автомобиля.
  • Проблемы, при которых желаемая функция часто меняется . Люди могут описать это и написать программу для этого, но проблема меняется слишком часто.Это не рентабельно. Примеры включают фондовый рынок.
  • Проблемы, при которых каждому пользователю нужна собственная функция . Написание индивидуальной программы для каждого пользователя не является рентабельным. Примером могут служить рекомендации фильмов или книг на Netflix или Amazon.

Суть индуктивного обучения

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

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

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

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

Две точки зрения на индуктивное обучение:

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

Вы могли ошибаться.

  • Наши предварительные знания могут быть неверными.
  • Наше предположение о классе гипотез могло быть неверным.

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

Основа для изучения индуктивного обучения

Терминология, используемая в машинном обучении:

  • Пример обучения : образец из x, включая его выходные данные из целевой функции
  • Целевая функция : функция отображения f из x в f (x)
  • Гипотеза : аппроксимация f, функция-кандидат.
  • Концепция : логическая целевая функция, положительные и отрицательные примеры для значений класса 1/0.
  • Классификатор : обучающая программа выводит классификатор, который можно использовать для классификации.
  • Ученик : процесс, создающий классификатор.
  • Пространство гипотез : набор возможных приближений f, которые может создать алгоритм.
  • Пространство версий : подмножество пространства гипотез, которое согласуется с наблюдаемыми данными.

Ключевые проблемы машинного обучения:

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

Есть 3 проблемы при выборе пространства для гипотезы:

  • Размер : количество гипотез на выбор
  • Случайность : стохастический или детерминированный
  • Параметр : количество и тип параметров

Есть 3 свойства, по которым вы можете выбрать алгоритм:

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

Сводка

В этом посте вы открыли для себя основные концепции машинного обучения.

В итоге это были:

  • Что такое машинное обучение?
  • Приложения машинного обучения
  • Ключевые элементы машинного обучения
  • Типы обучения
  • Машинное обучение на практике
  • Что такое индуктивное обучение?
  • Когда следует использовать индуктивное обучение?
  • Суть индуктивного обучения
  • Основа для изучения индуктивного обучения

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

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

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

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

    Эрик Сигель, Ph.D.

    основатель Predictive Analytics World; автор книги «Предиктивная аналитика: способность предсказывать, кто нажмет, купит, солгает или умрет»

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

    Падрайг Каннингем

    Профессор знаний и инженерии данных, Школа компьютерных наук, Университетский колледж Дублина; соредактор методов машинного обучения для мультимедиа

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

    Натали Япкович

    Профессор компьютерных наук, Оттавский университет; соавтор книги «Оценка алгоритмов обучения: взгляд на классификацию

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

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

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

    Ресурсы для инструкторов

    Доступны загружаемые ресурсы для инструкторов по этому заголовку: Руководство по решениям для инструкторов, слайды и файлы рисунков

    основ машинного обучения для начинающих | Надейха Салам | AlmaBetter

    Изображение отсюда

    «Нам нужна машина, которая может учиться на собственном опыте.. » — Алан Тьюринг

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

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

    Отличительные особенности AI, ML, DL — они разные или одинаковые?

    Изображение отсюда

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

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

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

    Зависимые переменные и независимые переменные

    Изображение отсюда

    Учтите, что нам предоставили вышеуказанный набор данных и попросили предсказать, играли ли в футбол или нет; следовательно, столбец Сыгранный футбол (да / нет) будет нашей целевой переменной или зависимой переменной , а другие столбцы — нашими независимыми переменными или характеристиками .

    Задачи в машинном обучении

    Изображение отсюда

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

    Изображение отсюда

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

    Изображение отсюда

    Машинное обучение с учителем и без учителя

    Изображение отсюда

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

  • Предварительная обработка данных: выполнение EDA, очистка данных от отсутствующих значений и выбросов и т. Д. Манипулирование данными для задачи. Если вы правильно обработаете свои данные, вы, скорее всего, получите лучшие результаты.
  • Разделите данные на обучение и проверку
  • Обучите данные
  • Оцените производительность вашей модели
  • Повысьте производительность, если производительность неудовлетворительна, т. Е. Повторите с шага 4
  • Разверните модель, получите прогнозы в реальном времени и оцените .
  • Основы машинного обучения и аналитики данных

    Что вы узнаетеЭто мероприятие в прямом эфире для вас? ScheduleInstructors

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

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

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

    Это мероприятие в прямом эфире для вас, потому что…

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

    Предварительные требования

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

    Рекомендуемое продолжение

    Pearson LiveLessons Video: «Понимание основ аналитики больших данных и машинного обучения» Роберта Бартона и Джерома Генри

    Расписание

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

    Введение в аналитику данных и машинное обучение (25 мин)

    • Что такое Data Analytics, определение данных
    • Определение искусственного интеллекта и машинного обучения
    • Роль машинного обучения в мире аналитики данных
    • Обзор ландшафта AI / ML и анализа данных

    Аналитика данных 101 (25 мин)

    • Архитектуры больших данных
    • Hadoop и пряжа
    • Роль брокеров данных

    ПЕРЕРЫВ (10 мин)

    Машинное обучение 101 — Обучение с учителем (55 минут)

    • Линейная регрессия
    • Логистическая регрессия
    • Случайные леса
    • Машина опорных векторов (SVM)

    ПЕРЕРЫВ (10 мин)

    Полу-контролируемое обучение (20 мин)

    • Различия между контролируемым и частично контролируемым обучением
    • Обучение с подкреплением
    • Приложения и варианты использования

    Обучение без учителя (30 мин)

    • Введение в обучение без учителя
    • Обзор общих алгоритмов
    • Объяснение алгоритмов K-средних

    ПЕРЕРЫВ (10 мин)

    Глубокое обучение и нейронные сети (50 мин)

    • Введение в глубокое обучение и нейронные сети
    • Как работает алгоритм
    • Приложения глубокого обучения для видеоаналитики и NLP

    ПЕРЕРЫВ (10 мин)

    Анализ основных компонентов (20 мин)

    • Необходимость уменьшения размерности
    • Объяснение алгоритма PCA

    Как создать проект искусственного интеллекта / машинного обучения (20 мин)

    • Компоненты проекта машинного обучения
    • Рабочий процесс проекта машинного обучения

    Введение в программные средства машинного обучения (30 мин)

    • Обзор наборов инструментов машинного обучения
    • Более подробный взгляд на TensorFlow

    ПЕРЕРЫВ (10 мин)

    Аппаратные ускорители машинного обучения (20 мин)

    • Требования к аппаратному ускорению в машинном обучении
    • Введение в блоки графической обработки (GPS)

    Будущие направления в области искусственного интеллекта и машинного обучения (20 мин.)

    • Что ИИ может и что не может делать
    • Этические вопросы искусственного интеллекта и машинного обучения
    • Сингулярность
    • Текущая исследовательская работа в области машинного обучения

    7 отличных книг по машинному обучению (ML) для начинающих

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

    Автор: Оливер Теобальд Веб-сайт: Amazon Название носит пояснительный характер, верно? Если вам нужно полное введение в машинное обучение для начинающих, это может быть хорошим началом.Когда Теобальд говорит «абсолютные новички», он абсолютно уверен в этом. Не требуется ни математического образования, ни опыта программирования — это самое базовое введение в тему для всех, кто интересуется машинным обучением. Здесь очень ценится «простой» язык, чтобы новички не были перегружены техническим жаргоном. Четкие, доступные объяснения и наглядные примеры сопровождают различные алгоритмы, чтобы упростить выполнение действий. Также предлагается простое программирование, чтобы поместить машинное обучение в контекст.

    Авторы: Джон Пол Мюллер и Лука Массарон Веб-сайт: Amazon В то время как мы идем с «абсолютными новичками», популярная серия «Чайников» — еще одна полезная отправная точка. Эта книга призвана познакомить читателей с основными концепциями и теориями машинного обучения и их применением в реальном мире. В нем представлены языки программирования и инструменты, являющиеся неотъемлемой частью машинного обучения, и показано, как превратить, казалось бы, эзотерическое машинное обучение в нечто практическое.Книга знакомит с небольшим кодом на Python и R, который используется для обучения машин поиску закономерностей и анализу результатов. На основе этих небольших задач и шаблонов мы можем экстраполировать, насколько машинное обучение полезно в повседневной жизни, с помощью веб-поиска, интернет-рекламы, фильтров электронной почты, обнаружения мошенничества и т. Д. С помощью этой книги вы сможете сделать небольшой шаг в сферу машинного обучения.

    Авторы: Джон Д. Келлехер, Брайан Мак Нейме и Аойф Д’Арси Веб-сайт: Amazon Эта книга охватывает все основы машинного обучения, углубляясь в теорию предмета и используя практические приложения, рабочие примеры и тематические исследования, чтобы донести знания до дома.«Основы» лучше всего читают люди с некоторыми знаниями в области аналитики. В нем представлены различные подходы к обучению с помощью машинного обучения и каждая концепция обучения сопровождается алгоритмами и моделями, а также рабочими примерами, показывающими концепции на практике.

    Автор: Тоби Сегаран Веб-сайт: О’Рейли | Amazon Это скорее практическое руководство по внедрению машинного обучения, чем введение в машинное обучение. Из этой книги вы узнаете, как создавать алгоритмы машинного обучения для сбора данных, полезных для конкретных проектов.Он учит читателей, как создавать программы для доступа к данным с веб-сайтов, сбора данных из приложений и выяснения значения этих данных после того, как вы их собрали. «Программирование коллективного разума» также демонстрирует методы фильтрации, методы обнаружения групп или шаблонов, алгоритмы поисковых систем, способы прогнозирования и многое другое. Каждая глава включает упражнения для отображения уроков в приложении.

    Основы машинного обучения | Packt

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

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

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

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

    Отсутствующие значения

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

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

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

    • Среднее вменение : замена отсутствующих значений средним или медианным значениями доступных функций

    • Вменение регрессии : замена отсутствующих значений прогнозируемые значения, полученные с помощью функции регрессии

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

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

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

    Выбросы

    Выбросы — это значения, далекие от среднего.Это означает, что если значения атрибута следуют распределению Гаусса, выбросы находятся в хвостах.

    Выбросы могут быть глобальными или локальными. Первая группа представляет те значения, которые далеки от всего набора значений функции. Например, при анализе данных от всех членов квартала глобальным выбросом будет человек, которому 180 лет (как показано на следующей диаграмме ( A )). Последний, с другой стороны, представляет значения, которые далеки от подгруппы значений этой функции.В том же примере, который мы видели ранее, локальным выбросом может быть студент колледжа в возрасте 70 лет ( B ), который обычно отличается от других студентов колледжа в этом районе:

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

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

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

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

    После обнаружения выбросов есть три обычных способа их обработки:

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

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

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

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

    Примечание

    Шумные данные соответствуют значениям, которые не являются правильными или возможными. Сюда входят числовые (выбросы, которые являются ошибками) и номинальные значения (например, пол человека неправильно написан как «fimale»).Как и выбросы, зашумленные данные можно обработать, полностью удалив значения или присвоив им новое значение.

    Упражнение 2: Работа с беспорядочными данными

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

    1. Откройте Jupyter Notebook для реализации этого упражнения.

    2. Загрузите набор данных titanic и сохраните его в переменной с именем titanic .Используйте следующий код:

       import seaborn as sns
      titanic = sns.load_dataset ('titanic') 
    3. Затем создайте переменную с именем age для хранения значений этой функции из набора данных. Распечатайте 10 верхних значений переменной age :

       age = titanic ['age']
      age.head (10) 

      Результат будет выглядеть следующим образом:

      Как видите, функция имеет NaN ( Not a Number ) значений, которые представляют пропущенные значения.

    4. Проверьте форму переменной age . Затем подсчитайте количество значений NaN и , чтобы определить, как с ними обращаться. Используйте функцию isnull () , чтобы найти значения NaN , и используйте функцию sum () , чтобы просуммировать их все:

       age.shape
      (891,)
      age.isnull (). sum ()
      177 
    5. Доля значений NaN в общем размере переменной составляет 5,03%. Хотя этого недостаточно, чтобы рассмотреть возможность удаления всей функции, необходимо обработать недостающие значения.

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

       mean = age.mean ()
      среднее = среднее. круглое ()
      среднее значение 

      Среднее значение равно 30.

      Примечание

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

    7. Заменить все пропущенные значения средним. Используйте функцию fillna () . Чтобы проверить, что значения были заменены, снова выведите первые десять значений:

       age.fillna (среднее, на месте = Истина)
      age.head (10) 

      Примечание

      Установите inplace на True , чтобы заменить значения в тех местах, где находятся значения NaN .

      Напечатанный результат показан ниже:

      Как вы можете видеть на предыдущем снимке экрана, возраст экземпляра с индексом 5 изменился с NaN на 30, что является средним значением, вычисленным ранее. Та же процедура выполняется для всех 177 значений NaN .

    8. Импортируйте Matplotlib и построите гистограмму переменной age .Используйте функцию Matplotlib hist () . Для этого введите следующий код:

       import matplotlib.pyplot as plt
      plt.hist (возраст)
      plt.show () 

      Гистограмма должна выглядеть так, как на следующей диаграмме, и, как мы видим, ее распределение похоже на гауссово:

    9. Найдите выбросы в данных. Давайте использовать три стандартных отклонения в качестве меры для расчета минимального и максимального значений.

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

       min_val = age.mean () - (3 * age.std ())
      min_val 

      Минимальное значение составляет около -9,248. Согласно минимальному значению, в левом хвосте гауссова распределения нет выбросов. Это имеет смысл, учитывая, что распределение немного наклонено влево.

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

       max_val = age.mean () + (3 * age.std ())
      max_val 

      Максимальное значение, которое составляет около 68,766, определяет, что экземпляры с возрастом более 68,76 лет представляют собой выбросы. Как вы можете видеть на предыдущей диаграмме, это также имеет смысл, поскольку есть небольшие экземпляры, превышающие этот порог, и на самом деле они далеки от колокола гауссова распределения.

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

      Сначала, используя индексирование, вызовите значения в age , которые превышают максимальное значение, и сохраните их в переменной, называемой выбросами. Затем подсчитайте выбросы, используя count () :

       выбросы = age [age> max_val]
      outliers.count () 

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

      Поскольку количество выбросов невелико и они соответствуют истинным выбросам, их можно удалить.

      Примечание

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

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

       age = age [age <= max_val]
      возраст.форма
      (884,) 

      Как видите, форма возраста уменьшилась на семь, что составило количество выбросов.

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

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

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

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

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

    Примечание

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

    Работа с категориальными признаками

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

    Разработка функций

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

    Как это работает? Разработка функций генерирует кодировку меток, которая присваивает числовое значение каждой категории; это значение затем заменит категорию в наборе данных. Например, переменная с именем genre с классами pop, rock и country может быть преобразована следующим образом:

    Упражнение 3: Применение проектирования функций к текстовым данным

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

    1. Используйте тот же блокнот Jupyter Notebook, который вы создали для последнего упражнения.

    2. Импортируйте класс LabelEncoder () из scikit-learn, а также библиотеку Pandas. Используйте следующий код:

       из sklearn.preprocessing import LabelEncoder
      import pandas as pd 
    3. Создайте переменную с именем em_town и сохраните информацию об этой функции из набора данных titanic , который был импортирован в предыдущем упражнении.Выведите 10 первых значений новой переменной:

       em_town = titanic ['embark_town']
      em_town.head (10) 

      Результат выглядит следующим образом:

      Как видите, переменная содержит текстовые данные.

    4. Преобразование текстовых данных в числовые значения. Используйте класс, который был импортирован ранее ( LabelEncoder ):

       enc = LabelEncoder ()
      new_label = pd.Series (enc.fit_transform (em_town.astype ('str'))) 

      Прежде всего, инициализируйте класс, введя первую строку кода.Во-вторых, создайте новую переменную с именем new_label и используйте встроенный метод fit_transform () из класса, который присвоит числовое значение каждой категории и выведет результат. Мы используем функцию pd.Series () для преобразования вывода кодировщика этикеток в серию Pandas. Распечатайте 10 первых значений новой переменной:

      Как видите, текстовые категории переменной были преобразованы в числовые значения.

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

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

    Преобразование текстовых данных выполняется с помощью проектирования функций, где каждой текстовой категории присваивается числовое значение, которое ее заменяет. Более того, хотя это можно сделать вручную, существуют мощные встроенные классы и методы, облегчающие этот процесс.Одним из примеров этого является использование класса LabelEncoder scikit-learn.

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

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

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

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

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

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

    Следующее уравнение позволяет нормализовать значения объекта:

    Здесь zi соответствует нормализованному значению ith , а x представляет все значения.

    Стандартизация : это метод изменения масштаба, который преобразует данные в распределение Гаусса со средним значением, равным 0, и стандартным отклонением, равным 1.

    Один простой способ стандартизации функции показан в следующем уравнении:

    Здесь zi соответствует стандартизованному значению ith , а x представляет все значения.

    Упражнение 4: Нормализация и стандартизация данных

    В этом разделе рассматривается нормализация и стандартизация данных на примере набора данных titanic . Используйте тот же блокнот Jupyter, который вы создали для последнего упражнения:

    1. Используя переменную age , которая была создана в первом упражнении этой записной книжки, нормализуйте данные с помощью предыдущей формулы и сохраните их в новой переменной с именем . Кирилловский .Распечатайте 10 первых значений:

       age_normalized = (age - age.min ()) / (age.max () - age.min ())
      age_normalized.head (10) 

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

    2. Опять же, используя переменную age , стандартизируйте данные, используя формулу для стандартизации, и сохраните их в переменной с именем age_standardized .Распечатайте 10 первых значений:

       age_standardized = (age - age.mean ()) / age.std ()
      age_standardized.head (10) 

      В отличие от нормализации, при стандартизации значения обычно распределяются около нуля.

    3. Распечатайте среднее и стандартное отклонение переменной age_standardized , чтобы подтвердить ее среднее значение 0 и стандартное отклонение 1:

       print ("Среднее:" + str (age_standardized.mean ()))
      print ("Стандартное отклонение:" + str (age_standardized.std ()))
      Среднее: 9.645376503530772e-17
      Стандартное отклонение: 1,0 

      Как видите, среднее значение приближается к 0, а стандартное отклонение равно 1, что означает, что стандартизация данных прошла успешно.

    Поздравляем! Вы успешно применили к своим данным методы масштабирования.

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

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

    В этом разделе объяснялись две методологии масштабирования данных: нормализация и стандартизация. С одной стороны, нормализация преобразует данные в длину, равную единице (от 0 до 1). С другой стороны, стандартизация преобразует данные в распределение Гаусса со средним значением 0 и стандартным отклонением 1.

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

    Задание 2: Предварительная обработка всего набора данных

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

    1. Загрузите набор данных и создайте функции и целевые матрицы, введя следующий код:

       import seaborn as sns
      titanic = sns.load_dataset ('титаник')
      X = титаник [['пол', 'возраст', 'тариф', 'класс', 'embark_town', 'одинокий']]
      Y = титанический ['выжил'] 

      Примечание

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

    2. Проверить отсутствующие значения и выбросы во всех характеристиках матрицы признаков ( X ). Выберите методику их обработки.

      Note

      Могут пригодиться следующие функции:

      Note

      notnull () : для обнаружения непустых значений. Например, X [X ["age"]. Notnull ()] будет извлекать все строки в X, кроме тех, в которых отсутствуют значения в столбце age .

      value.counts () : для подсчета появления уникальных значений массива. Например, X ["пол"]. Value_counts () подсчитает, сколько раз присутствуют классы мужской и женский .

    3. Преобразует все текстовые элементы в их числовое представление.

      Примечание

      Используйте класс LabelEncoder из scikit-learn. Не забудьте инициализировать класс перед вызовом любого из его методов.

    4. Измените масштаб данных путем нормализации или стандартизации.

      Примечание

      Решение для этого действия можно найти на странице 179.

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

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *