29、线性回归

1、线性回归

1、概念
利用回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。
2、数学公式
h_{(w)}=w_1x_1+w_2x_2+w_3x_3+...+b=w^Tx+b

2、线性回归API的使用

2.1、线性回归API示例

from sklearn.linear_model import LinearRegression
# 1.数据
x = [[160],[166],[172],[174],[180]]
y = [56.3,60.6,65.1,68.5, 75]
# 2.模型训练
# 2.1实例化
model = LinearRegression()
# 2.2训练
model.fit(x,y)
# 权重(weight)/偏置(bias)
print(model.coef_)
print(model.intercept_)
# 3.模型预测
print(model.predict([[176]]))

2.2、线性回归的求解方法

以身高体重为例,以下为5组样本数据,预测第6组的体重

编号 身高 体重
1 160 56.3
2 166 60.6
3 172 65.1
4 174 68.5
5 180 75
6 176 ?

线性预测图

求解过程
1、红色直线能更好的拟合所有点”也就是误差最小;误差和最小
2、假设线性方程式y = kx + b ,每个样本的(真实值-预测值)来形成损失函数
损失函数
L(k, b) = (160k+b-56.3)^2 + (166k+b-60.6)^2 +(172k+b-65.1)^2 +(174k+b-58.5)^2 + (180k+b-56.3)^2
求此损失函数小值
3、为简化计算,先固定截距b,x=0时,b可设置成一个负值,b固定成-100
L(k, b=-100) = (160k+(-100)-56.3)^2 +(166k+(-100)-60.6)^2 + (172k+ (-100)-65.1)^2 + (174k+(-100)-58.5)^2 + (180k+ (-100)-56.3)^2
当损失函数取最小值时,得到k就是最优解
求解出 k = -(-281671.6) / (2*145416) = 0.9685
截距等于-100情况下,最优解,求播仔体重:
y = 0.9685x + (-100) = 0.9685*176 – 100 = 70.456

2.2.1、损失函数

衡量每个样本预测值与真实值效果的函数,也叫代价函数、成本函数、目标函数
其中用预测值y – 真实值y就是误差
损失函数的种类和数学表达:
1、最小二乘法 : 误差平方和
J(w,b)=\sum_{i=0}^m (h(x^i)-y^i)^2
2、均方误差 (Mean-Square Error, MSE)
J(w,b)=\frac{1}{m}\sum_{i=0}^m (h(x^i)-y^i)^2
3、平均绝对误差 (Mean Absolute Error , MAE)
J(w,b)=\frac{1}{m}\sum_{i=0}^m |h(x^i)-y^i|

2.2.2、导数和矩阵

标量scalar:一个独立存在的数,只有大小没有方向
向量vector:向量指一列顺序排列的元素。默认是列向量
比如张三的成绩:70,80,90
\begin{pmatrix} 70 \\ 80\\ 90\\ \end{pmatrix}\in R
向量有大小和方向
矩阵matrix:二维数组
比如张三李四的成绩为70,80,90; 75,85,95
\begin{pmatrix} 70 & 80 & 90\\ 75&85&95\\ \end{pmatrix}\in R^{2*3}
张量Tensor:数组,张量是基于向量和矩阵的推广
数学中的张量 tensor∈R^{2∗3∗4} : 2个34矩阵 3个24 或4个2*3
导数:当函数y=f(x)的自变量x在一点x0上产生一个增量Δx时,函数输出值的增量Δy=f(x0+Δx)-f(x0)与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作 f’(x0) 或df(x0)/dx。

导数

导数的几何意义是表示函数的曲线上的切线斜率

2.2.3、正规方程求解过程

上面的例子中求损失函数的最小值
损失函数J(w,b)=\sum_{i=0}^m (h(x^i)-y^i)^2=\sum_{i=0}^m (kx^i+b-y^i)^2其中i代表第几个样本
一元线性回归 – 解析解
损失函数是关于k、b的函数,对k、b分别求导设置成0,得到2个方程
①:\frac{\alpha J(k,b)}{\alpha k}=\sum_{i=1}^m 2(kx^i+b-y^i)^{2-1}(kx^i+b-y^i)'=\sum_{i=1}^m(2kx^{(i)^2}+2bx^i-2x^iy^i)=0
②:\frac{\alpha J(k,b)}{\alpha k}=\sum_{i=1}^m 2(kx^i+b-y^i)^{2-1}(kx^i+b-y^i)'=\sum_{i=1}^m(2kx^{i}+2b-2y^i)=0
对①式、②式化简, y^i代表第i个样本的预测值
③:k\sum_{i=1}^mx^{(i)^2}+b\sum_{i=1}^mx^i-\sum_{i=1}^mx^iy^i=0
④:k\sum_{i=1}^mx^i+bm-\sum_{i=1}^my^i=0
对数据带入3式、4式求解k、b
852k + 5b - 325.5 = 0 请求解k、b的值
根据k、b进行预测:k = 0.0397 b = 60.7615 y = 0.0397*176+60.7615 = 67
多元线性回归 – 正规方程法
损失函数普通方式转成矩阵方式(正规方程):
j(w)=(h(x_1)-y_1)^2+(h(x_2)-y_2)^2+...+(h(x_m)-y_m)^2=\sum_{i=1}^m(h(x_i)-y_i)^2
损失函数最小值:w=(X^TX)^{-1}X^Ty

2.2.4、梯度下降法

什么是梯度 gradient grad
•单变量函数中,梯度就是某一点切线斜率(某一点的导数);有方向为函数增长最快的方向
•多变量函数中,梯度就是某一个点的偏导数;有方向:偏导数分量的向量方向
梯度下降公式
循环迭代求当前点的梯度,更新当前的权重参数
\theta_{i+1}=\theta_i-\alpha \frac{\delta}{\delta \theta_i}J(\theta)
\alpha:学习率(步长) 不能太大, 也不能太小. 机器学习中:0.001 ~ 0.01
梯度是上升最快的方向, 我们需要是下降最快的方向, 所以需要加负号

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容