Машинное обучение с учителем (алгоритмы регрессии)

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

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

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

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

Итак, сегодня мы подробно поговорим о регрессии.

Регресс

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

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

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

h(x) = Q0 + Q1*x

где Q0 и Q1 - параметры уравнения регрессии, x - независимая переменная, а h (x) - прогнозируемый результат. Наша цель - найти такие значения Q0 и Q1, чтобы значение (h (x) -y), где y является истинной зависимой переменной, было минимальным. Мы хотим, чтобы разница между прогнозируемым значением и истинным значением была минимальной, чтобы получить лучшую линию, которая проходит почти через все точки данных.

Алгоритм градиентного спуска - это решение, используемое для минимизации квадратичной средней ошибки, то есть (h (x) -y) ², для получения наилучшего возможного результата.

На диаграмме выше мы пытаемся оценить рост человека, используя информацию о весе. 130,2 и 0,6 - параметры Q0 и Q1 соответственно, вес - независимая переменная, а рост - зависимая переменная.

Код Python:

from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.2,random_state=0)
y_train.shape[0]
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(x_train.reshape(400,1),y_train.reshape(400,1))
y_pred = regressor.predict(x_test.reshape(100,1))

Многомерная линейная регрессия

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

h (x) = Q0 + Q1 * x1 + Q2 * x2 + Q3 * x3 + …… .. + Qnxn

В приведенном выше уравнении Q0, Q1, Q2, Q3… Qn - это параметры, x1, x2, x3… xn - независимые переменные, а h (x) - зависимая переменная, которая должна быть предсказана. Цель состоит в том, чтобы найти такие значения вышеуказанных параметров, чтобы среднеквадратичная ошибка, то есть (h (x) -y) ² (также называемая функцией стоимости), была минимальной, и мы достигли оптимальных результатов.

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

Полиномиальная регрессия

Полиномиальная регрессия - это другой тип алгоритма регрессии, в котором отношения между независимыми и зависимыми переменными моделируются как n-я степень полинома. Полиномиальная регрессия соответствует нелинейной зависимости между независимой переменной x и зависимой переменной y.

h(x) = Q0 + Q1*x + Q2*x² +…Qn*x^n

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

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

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

# Fitting Polynomial Regression to the dataset
from sklearn.preprocessing import PolynomialFeatures
poly_reg = PolynomialFeatures(degree = 4)
X_poly = poly_reg.fit_transform(X)
poly_reg.fit(X_poly, y)
lin_reg_2 = LinearRegression()
lin_reg_2.fit(X_poly, y)

Регрессия опорных векторов

Расскажем об этом алгоритме с помощью диаграмм.

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

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

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

Y = wx + b or Y = Q0 + Q1x

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

  • + a = wx + b (Верхняя граница решения)
  • -a = wx + b (нижняя граница решения)

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

  • -a < Y- (wx+b) <+a

SVR происходит от SVM (Support Vector Machines) - алгоритма классификации, который мы обсудим в следующем блоге.

from sklearn.svm import SVR
regressor = SVR(kernel = 'rbf')
regressor.fit(X, y)

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

Оставайтесь с нами и желаю удачного обучения!