Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
40_алгоритмов_Python.pdf
Скачиваний:
8
Добавлен:
07.04.2024
Размер:
13.02 Mб
Скачать

220

Глава 7. Традиционные алгоритмы обучения с учителем

Таблица 7.4

 

 

 

 

 

 

 

Алгоритм

Доля правильных

Полнота

Точность

 

ответов

 

 

 

 

 

 

Дерево решений

0.94

0.93

0.88

 

 

 

 

XGBoost

0.93

0.90

0.87

 

 

 

 

Случайный лес

0.93

0.90

0.87

 

 

 

 

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

0.91

0.81

0.89

 

 

 

 

SVM

0.89

0.71

0.92

 

 

 

 

Наивный байесовский

0.92

0.81

0.92

 

 

 

 

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

АЛГОРИТМЫ РЕГРЕССИИ

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

В данном разделе рассмотрены различные алгоритмы, которые можно исполь­ зовать для обучения регрессионных моделей МО с учителем — или просто ре­ грессоров. Прежде чем мы перейдем к деталям алгоритмов, давайте сформули­ руем задачу, которая позволит проверить их производительность, возможности и эффективность.

Задача регрессии

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

zz Мы можем подготовить данные один раз и использовать подготовленные данные во всех трех алгоритмах регрессии.

Алгоритмы регрессии

221

zzМы можем осуществить сравнение производительности трех алгоритмов регрессии.

Перейдем к постановке задачи.

Постановка задачи регрессии

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

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

Изучение набора исторических данных

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

Таблица 7.5

Название

Тип

Описание

 

 

 

NAME (имя)

Категориаль­

Идентифицирует конкретное транспортное

 

ный

средство

 

 

 

CYLINDERS

Непрерыв­

Количество цилиндров (от 4 до 8)

(цилиндры)

ный

 

 

 

 

DISPLACEMENT

Непрерыв­

Объем двигателя в кубических дюймах

(литраж)

ный

 

 

 

 

HORSEPOWER

Непрерыв­

Мощность двигателя в лошадиных силах

(лошадиные

ный

 

силы)

 

 

 

 

 

ACCELERATION

Непрерыв­

Время, необходимое для ускорения от 0 до

(ускорение)

ный

60 миль в час (в секундах)

 

 

 

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

Спроектируем пайплайн обработки данных для нашей задачи.

222

Глава 7. Традиционные алгоритмы обучения с учителем

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

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

1. Импортируем набор данных:

dataset = pd.read_csv('auto.csv')

2. Предварительно рассмотрим набор данных:

dataset.head(5)

Вот как будет выглядеть набор данных (рис. 7.25).

Рис. 7.25

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

dataset=dataset.drop(columns=['NAME'])

4.Теперь преобразуем все входные переменные и заменим все пропущенные значения на нули:

dataset=dataset.drop(columns=['NAME'])

dataset= dataset.apply(pd.to_numeric, errors='coerce') dataset.fillna(0, inplace=True)

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

Алгоритмы регрессии

223

5. Разделим данные на части для контроля и обучения:

from sklearn.model_selection import train_test_split #from sklearn.cross_validation import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.25, random_state = 0)

Это приведет к созданию следующих четырех структур:

zz X_train: структура данных, содержащая признаки обучающих данных; zz X_test: структура данных, содержащая признаки контрольных данных;

zz y_train: вектор, содержащий значения метки в наборе обучающих данных; zzy_test: вектор, содержащий значения метки в наборе контрольных данных.

Теперь испытаем подготовленные данные на трех различных регрессорах, чтобы оценить их производительность.

Линейная регрессия

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

Простая линейная регрессия

В своей простейшей форме линейная регрессия формулирует взаимосвязь между непрерывной зависимой переменной и непрерывной независимой переменной. Простая линейная регрессия демонстрирует, в какой степени изменения зависимой переменной (показанной на оси y) соотносятся с изменениями независимой пере­ менной (показанной на оси x). Ее можно представить следующим образом:

Пояснения к формуле:

zz y — зависимая переменная; zz X — независимая переменная;

zz w — наклон (угловой коэффициент), который указывает, насколько прямая поднимается или опускается при каждом изменении X;

zzα — свободный коэффициент, который указывает значение y при X = 0.

224

Глава 7. Традиционные алгоритмы обучения с учителем

Ниже приведены некоторые примеры взаимосвязей между непрерывной за­ висимой переменной и непрерывной независимой переменной:

zz вес человека и потребление им калорий;

zz цена дома и его площадь в квадратных футах в конкретном районе; zzвлажность воздуха и вероятность дождя.

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

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

дажи Про

Маркетинговые расходы

Рис. 7.26

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

Алгоритмы регрессии

225

Оценка регрессоров

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

Ошибка

Ошибка

 

Рис. 7.27

Чтобы количественно оценить эффективность модели линейной регрессии, обычно используется среднеквадратичная ошибка (Root Mean Square Error, RMSE). Это математическое вычисление стандартного отклонения ошибок, допущенных обученной моделью. Для примера в наборе обучающих данных функция loss рассчитывается следующим образом:

Loss (y(i), y(i)) = 1/2(y(i)- y(i))2.

Это приводит к функции cost, которая сводит к минимуму потери для всех примеров в обучающем наборе:

Давайте попробуем интерпретировать RMSE. Допустим, для нашей модели, которая предсказывает цену продукта, RMSE составляет 50 долларов. Это озна­ чает, что около 68,2 % прогнозов будут находиться в пределах 50 долларов от истинного значения (то есть α). Это также означает, что 95 % прогнозов будут находиться в пределах 100 долларов (то есть 2α) от фактического значения.

226

Глава 7. Традиционные алгоритмы обучения с учителем

Наконец, 99,7 % прогнозов окажутся в пределах 150 долларов от фактического значения.

Множественная регрессия

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

Аналогично простому линейному уравнению, зависимая переменная y равна сумме свободного члена α и произведения коэффициентов β на значение x для каждого из i признаков:

y = α + β1 x1 + β2 × 2 +...+ βi xi + ε.

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

Коэффициенты βпозволяют каждому признаку отдельно влиять на значение y, поскольку y изменяется на величину βi для каждого единичного увеличения xi. Более того, свободный коэффициент α указывает ожидаемое значение y, когда все независимые переменные равны 0.

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

Использование алгоритма линейной регрессии в задаче регрессии

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

1. Начнем с импорта пакета линейной регрессии:

from sklearn.linear_model import LinearRegression

2.Создадим экземпляр модели линейной регрессии и обучим ее с помощью обучающего набора данных:

Алгоритмы регрессии

227

regressor = LinearRegression() regressor.fit(X_train, y_train)

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

y_pred = regressor.predict(X_test)

from sklearn.metrics import mean_squared_error from math import sqrt sqrt(mean_squared_error(y_test, y_pred))

4.Выходные данные, сгенерированные при выполнении этого кода, будут вы­ глядеть так (рис. 7.28).

Рис. 7.28

Как обсуждалось в предыдущем разделе, RMSE — это стандартное отклонение для ошибок. Оно указывает на то, что 68,2 % прогнозов будут находиться в пределах 4.36 от значения целевой переменной.

Когда используется линейная регрессия?

Линейная регрессия используется для решения многих реальных задач, напри­ мер:

zz Прогнозирование продаж.

zz Прогнозирование оптимальных цен на продукцию.

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

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

Слабые стороны линейной регрессии

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

zz Она работает только с числовыми функциями.

zz Категориальные данные должны быть предварительно обработаны.