Обучение модели для машинного обучения

машинное обучение
Обучение модели для машинного обучения

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

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

y=θ0+θ1x1+θ2x2+...+θnxny = \theta_0 + \theta_1x_1 + \theta_2x_2 + ... + \theta_nx_n

В этой формуле:

  • yпрогнозируемое значение
  • nэто количество функций
  • xix_iпервыйiсобственные значения
  • θj\theta_jпервыйjпараметры модели (включая член смещенияθ0\theta_0и веса функцийθ1,θ2,θ3,...,θn\theta_1,\theta_2,\theta_3,...,\theta_n)

Обучение модели линейной регрессии — это процесс настройки параметров модели до тех пор, пока модель не будет наилучшим образом соответствовать обучающему набору., для этого нам сначала нужно знать, как измерить, насколько хорошо модель соответствует обучающим данным. Наиболее распространенным показателем производительности регрессионных моделей является среднеквадратическая ошибка (RMSE), поэтому при обучении модели линейной регрессии кажется, что все дело в поиске минимизацииRMSEизθ\thetaценность. Однако на практике среднеквадратическая ошибка (MSE) минимизировать вместоRMSEсвести к минимуму, потому чтоMSEРасчет прост, а суммаRMSEТот же эффект.

в тренировочном набореX, используйте следующую формулу для расчета линейной регрессииMSE(hθh_\thetaявляется гипотетической функцией):

MSE=(X,hθ)=1mi=1m(θTx(i)y(i))2MSE=(X,h_\theta)=\frac{1}{m}\sum_{i=1}^m(\theta^Tx^{(i)}-y^{(i)})^2

Чтобы получить функцию минимальной стоимостиθ\thetaзначение, есть решение в закрытой форме (математическое уравнение, которое приводит непосредственно к результату), стандартное уравнение:

θ=(XTX)1XTy\theta=(X^TX)^{-1}X^Ty

В этом уравнении:

  • θ\thetaзаключается в минимизации функции стоимостиθ\thetaценность
  • г включительноy(1)y^{(1)}прибытьy(m)y^{(m)}Вектор целевого значения

Мы генерируем некоторые случайные линейные данные, чтобы проверить эту формулу:

import numpy as np
X = 2 * np.random.rand(100,1)
y = 4 + 3*X +np.random.randn(100,1)

Получите следующий линейный набор данных:

Теперь используем стандартное уравнение для расчетаθ\theta. использоватьNumPyПредоставленный модуль линейной алгебры (np.linalg)серединаinv()функция, чтобы инвертировать матрицу и использоватьdot()Функция вычисляет внутренний продукт матрицы:

X_b = np.c_[np.ones((100,1)),X] # add x0=1 to each instance
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.t).dot(y) 

Функция, в которой мы фактически генерируем данные,y=4+3x1+Гауссовский шумy=4+3x_1+гауссовский шум, посмотрите на результат формулы:

>>>theta_best
array([[4.21509616],[2.77011339]])

Это то, что мы ожидалиθ0=4\theta_0=4(4.21509616),θ1=3\theta_1=3(2,77011339) очень близка, но из-за наличия шума не может быть полностью восстановлена ​​до исходной функции, наносим предсказанный результат на график:

image.png

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