什么是线性回归?
线性回归是一种基于监督学习的机器学习算法,它执行回归任务。回归基于自变量对目标预测值进行建模,它主要用于找出和预测变量之间的关系。不同的回归模型基于他们正在考虑的因变量和自变量之间的关系类型以及使用的自变量数量而异。
如何定义模型?
线性回归的执行是基于给定的自变量 (x) 预测因变量值 (y) 的任务。
线性回归方程公式如下:
Y = wX + b
其中X是自变量,Y是因变量。w是系数,b是偏差。
计算损失函数
损失函数是均方误差方程。对于监督学习,模型通过找到最小化成本函数的最优系数来优化。成本函数使用损失函数计算的每个数据点的损失总和。
线性回归最常用的损失函数是最小平方误差,它的成本函数也称为均方误差(MSE)。均方误差的公式为:
其中n是数据点的数量,y是模型返回的值,ŷ是数据点的实际值。
如何优化回归模型?
梯度下降是一种寻找损失函数的迭代优化算法。当函数达到全局最小值时,它将具有最佳的 w 和 b 值。
梯度下降是一种用于寻找可微函数的局部最小值的优化算法。梯度下降简单地用于机器学习中,以找到尽可能使成本函数最小化的函数参数(系数)值。
实施模型
现在将上面的所有内容都转换为代码,看看我们的模型是如何运行的。
# Making the imports
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['figure.figsize'] = (12.0, 9.0)
# Preprocessing Input data
data = pd.read_csv('data.csv')
X = data.iloc[:, 0]
Y = data.iloc[:, 1]
plt.scatter(X, Y)
plt.show()
# Building the model
m = 0
c = 0
L = 0.0001 # The learning Rate
epochs = 1000 # The number of iterations to perform gradient descent
n = float(len(X)) # Number of elements in X
# Performing Gradient Descent
for i in range(epochs):
Y_pred = m*X + c # The current predicted value of Y
D_m = (-2/n) * sum(X * (Y - Y_pred)) # Derivative wrt m
D_c = (-2/n) * sum(Y - Y_pred) # Derivative wrt c
m = m - L * D_m # Update m
c = c - L * D_c # Update c
print (m, c)
1.4796491688889395 0.10148121494753726
#(m = w et c = b)
# Making predictions
Y_pred = m*X + c
plt.scatter(X, Y)
plt.plot([min(X), max(X)], [min(Y_pred), max(Y_pred)], color='red') # regression line
plt.show()