一、背景
1. 学习参数:
直线可写为y=w0+w1*x。这是一次函数,w1是斜率(或者叫权重 ),w0相当于在y轴上的截距。斜率w1和截距w0是由有监督学习的算法学到的参数,称之为学习参数。在线性回归中,需要根据不在一条直线上的点求出学习参数。
2. 损失函数:
表示误差和学习参数之间关系的函数叫作误差函数(或损失函数)
线性回归需要在各条直线中找出使误差函数值最小的参数
二、案例
尝试对以下数据进行线性回归。使用LinearRegression类创建线性回归模型,并使用fit方法训练后,输出intercept_的值以查看截距,输出coef_的值以查看斜率。
from sklearn.linear_model import LinearRegression
X = [[10.0], [8.0], [13.0], [9.0], [11.0], [14.0],[6.0], [4.0], [12.0], [7.0], [5.0]]
y = [8.04, 6.95, 7.58, 8.81, 8.33, 9.96,7.24, 4.26, 10.84, 4.82, 5.68]
model = LinearRegression()
model.fit(X, y)
print(model.intercept_) # 截距
print(model.coef_) # 斜率
y_pred = model.predict([[0], [1]])
print(y_pred) # 对x=0, x=1的预测结果
输出如下:
三、线性回归不成功的例子
如图显示,对安斯库姆四重奏数据集的每一组数据分别进行线性回归的结果。尽管图中的4张图是不同的散点图,但线性回归的学习参数(截距和斜率)却相同。另外,这些数据的平均值、方差和相关系数也几乎相同。
注意:对原本不遵循线性分布的数据强行进行线性回归也得不到好的结果。拿到数据之后,首先应该进行可视化,再考虑是否进行线性回归。
四、学习参数的求法
通过均方误差进行定量判断。均方误差指的是目标变量和直线的差的平方的平均值。当存在n个数据时,可如下表示:
如何获得使均方误差最小的学习参数:
由于学习参数的变化,作为误差函数的均方误差也会发生变化。也就是说,均方误差可以使用学习参数的函数表示:
这时将训练数据代入目标变量yi和特征变量xi,就可以仅用w0、w1表示均方误差:
该式是w0 、w1 的二次函数,当w0 、w1 发生变化时,误差的值也各不相同。函数图形如图所示
本文主要说明了一元回归。一元回归是指独立特征变量只有一个时的线性回归,独立特征变量为两个及以上时的线性回归叫作多元回归。另外,尽管独立特征变量只有一个,但包含x2、x3这种特征变量的次方项的线性回归叫作多项式回归。
非线性回归的例子
如图所示这些函数中的学习参数w1和目标变量y之间的关系不是线性关系,所以被分类为非线性回归。