01-线性回归
回归分析
回归分析(Regression Analysis):根据数据,确定两种或两种以上变量间相互依赖的定量关系。
例如:百万人口医生数量预测区域人均寿命
函数表达式:
y
=
f
(
x
1
,
x
2
,
⋯
,
x
n
)
y=f(x_1,x_2,\cdots,x_n)
y=f(x1,x2,⋯,xn)
回归主要有以下分类方式:
- 按变量数分为:
- 一元回归: y = f ( x ) y=f(x) y=f(x)
- 多元回归: y = f ( x 1 , x 2 , ⋯ , x n ) y=f(x_1,x_2,\cdots,x_n) y=f(x1,x2,⋯,xn)
- 按函数关系分为
- 线性回归: y = a x + b y=ax+b y=ax+b
- 非线性回归: y = a x 2 + b x + c y=ax^2+bx+c y=ax2+bx+c
线性回归
线性回归:回归分析中,变量和因变量存在线性关系,属于机器学习中的监督学习
函数表达式:
y
=
a
x
+
b
y=ax+b
y=ax+b
回归问题求解步骤:例如,判断某 x x x值 x ~ \widetilde{x} x 是否在其对应 y y y值 y ~ \widetilde{y} y 的合理范围内
- 确定
x
x
x和
y
y
y之间的定量关系
- y = f ( x ) y=f(x) y=f(x)
- 线性模型: y = a x + b y=ax+b y=ax+b——寻找合理的 a a a和 b b b
- 根据关系预测合理值
- y ( x = x ~ ) = f ( y ~ ) y_{(x=\widetilde{x})}=f(\widetilde{y}) y(x=x )=f(y )
- 做出判断
如何寻找到最合适的
a
a
a、
b
b
b?假设
y
′
y'
y′为模型输出结果,
m
m
m为样本数,目标:
y
′
y^{\prime}
y′尽可能接近
y
y
y
m
i
n
{
∑
i
=
1
m
(
y
i
′
−
y
i
)
2
}
min\{\sum^{m}_{i=1}{ (y_i^{\prime}-y_i)^{2}}\}
min{i=1∑m(yi′−yi)2}
上式意味着
y
i
′
y_i'
yi′与
y
y
y的距离和最小
m
i
n
{
1
2
m
∑
i
=
1
m
(
y
i
′
−
y
i
)
2
}
min\{\frac{1}{2m}\sum^m_{i=1}(y_i^{\prime}-y_i)^2\}
min{2m1i=1∑m(yi′−yi)2}
在前式的基础上除以
2
m
2m
2m,可以在求导时将
2
m
2m
2m约掉,以上算式即为损失函数 J。那么,目标变为:尽可能让 J 变小!
(作为初学者:
看到这里我:就这??如果在学校这一定是水课!
开始听后面:啊?啊?啊?为什么啊?啊?)
损失函数
1
2
m
∑
i
=
1
m
(
y
i
′
−
y
i
)
2
=
1
2
m
∑
i
=
1
m
(
a
x
i
+
b
−
y
i
)
2
=
g
(
a
,
b
)
\frac{1}{2m}\sum^m_{i=1}(y_i^{\prime}-y_i)^2=\frac{1}{2m}\sum^m_{i=1}(ax_i+b-y_i)^2=g(a,b)
2m1i=1∑m(yi′−yi)2=2m1i=1∑m(axi+b−yi)2=g(a,b)
通过换元得到以上等式,我们可以将损失函数推导为关于
a
a
a,
b
b
b的二次函数。那么如何寻找最小值呢?
梯度下降法
通过向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索,直到在极小点收敛。(你在说什么???)
J
=
f
(
p
)
→
p
i
+
1
=
p
i
−
α
∂
∂
p
i
f
(
p
i
)
J=f(p)\rightarrow p_{i+1}=p_i-\alpha\frac{\partial}{\partial p_i}f(p_i)
J=f(p)→pi+1=pi−α∂pi∂f(pi)
来点通俗易懂的:步长是从 p i p_i pi到 p i + 1 p_{i+1} pi+1在x轴上的距离,就是通过求偏导的方式向极小值一步一步靠近。
寻找损失函数极小值
主要分为以下步骤:
- 设置 a a a和 b b b的初始值(只要不是小于极小值的数,看起来不无所谓,不过离极小值越远计算次数越多)
- 计算两个临时值
t
e
m
p
a
temp_a
tempa和
t
e
m
p
b
temp_b
tempb满足下式:
t e m p a = a − α ∂ ∂ a g ( a , b ) = a − α 1 m ∑ i = 1 m ( a x i + b − y i ) x i temp_a=a-\alpha\frac{\partial}{\partial a}g(a,b)=a-\alpha\frac{1}{m}\sum^m_{i=1}(ax_i+b-y_i)x_i tempa=a−α∂a∂g(a,b)=a−αm1i=1∑m(axi+b−yi)xi
t e m p b = b − α ∂ ∂ b g ( a , b ) = b − α 1 m ∑ i = 1 m ( a x i + b − y i ) temp_b=b-\alpha\frac{\partial}{\partial b}g(a,b)=b-\alpha\frac{1}{m}\sum^m_{i=1}(ax_i+b-y_i) tempb=b−α∂b∂g(a,b)=b−αm1i=1∑m(axi+b−yi) - 将 t e m p a temp_a tempa和 t e m p b temp_b tempb作为初始值重复计算,直到两值稳定
关于步长的思考:有没有可能一步跨大了?或者跨得太小了这辈子跨不完?答案是有!经过检索发现,步长的选取是线性回归模型的优化方式之一,有固定步长和动态步长等选取方式。
回到数据预测
回归问题求解步骤:
- 由数据生成损失函数
- 使用梯度下降或其他方法求解最小化损失函数的模型参数
- 得到回归模型
- 使用回归模型预测
以上为B站BV1884y1k7cv的课程笔记,如有不足之处请指出,谢谢!