- 回归是另一类重要的监督学习算法。与分类不同的是,回归问题的目标是通过对训练样本的学习,得到从样本特征到样本标签之间的映射,且样本标签是连续值。
- 线性回归的问题中,目标值与特征之间存在线性相关的关系
- 线性回归模型
- 对于线性回归算法,希望从训练数据中学习到线性回归方程,即:
y
=
b
+
∑
i
=
1
n
w
i
x
i
y = b + \sum_{i=1}^{n}w_{i}x_{i}
y=b+i=1∑nwixi
其中,b是偏置, w i w_{i} wi是回归系数,另 x 0 = 1 x_{0} = 1 x0=1 则回归方程为: y = ∑ i = 0 n w i x i y = \sum_{i=0}^{n}w_{i}x_{i} y=i=0∑nwixi
- 对于线性回归算法,希望从训练数据中学习到线性回归方程,即:
y
=
b
+
∑
i
=
1
n
w
i
x
i
y = b + \sum_{i=1}^{n}w_{i}x_{i}
y=b+i=1∑nwixi
- 损失函数
线性回归的损失函数可以是绝对损失 d = ∣ y − y ^ ∣ d = |y-\hat{y}| d=∣y−y^∣或者平方损失 d = ( y − y ^ ) 2 d = (y-\hat{y})^2 d=(y−y^)2.
- 最小二乘法求解以及推导
看了书上的矩阵方式,不太懂,就用一般的方式求吧。
- 假设最终的直线方程为
y
=
a
x
+
b
y = ax + b
y=ax+b,存在一个数据集
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
,
.
.
.
.
.
.
,
(
x
n
,
y
n
)
)
}
\left \{ (x_{1},y_{1}),(x_{2},y_{2}, ......,(x_{n},y_{n}))\right \}
{(x1,y1),(x2,y2,......,(xn,yn))}。则对于数据集中的点
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi)的回归误差为
d
=
y
i
−
a
x
i
−
b
d = y_{i} - ax_{i} - b
d=yi−axi−b。那么对于整个数据集来说,误差为:
D
=
∑
i
=
1
n
(
y
i
−
a
x
i
−
b
)
2
D = \sum_{i=1}^{n}(y_{i} - ax_{i} - b)^2
D=i=1∑n(yi−axi−b)2
所以,只要使得整个数据及上的误差尽可能的小,则回归方程拟合的越好。所以取极值对a,b求导。 - 误差函数对a求导: ϑ ϑ a D = ∑ i = 1 n 2 ( y i − a x i − b ) ∗ ( − x i ) \frac{\vartheta }{\vartheta a}D = \sum_{i=1}^{n}2(y_i - ax_{i}- b) * (-x_{i}) ϑaϑD=i=1∑n2(yi−axi−b)∗(−xi)
- 误差函数对b求导: ϑ ϑ b D = ∑ i = 1 n 2 ( y i − a x i − b ) ∗ ( − 1 ) \frac{\vartheta }{\vartheta b}D = \sum_{i=1}^{n}2(y_i - ax_{i} - b) * (-1) ϑbϑD=i=1∑n2(yi−axi−b)∗(−1)
- 令 ϑ ϑ b D = 0 \frac{\vartheta }{\vartheta b}D = 0 ϑbϑD=0得: b = y ˉ − a x ˉ b = \bar{y} - a\bar{x} b=yˉ−axˉ
- 令
ϑ
ϑ
a
D
=
0
\frac{\vartheta }{\vartheta a}D = 0
ϑaϑD=0并将
b
=
y
ˉ
−
a
x
ˉ
b = \bar{y} - a\bar{x}
b=yˉ−axˉ代入得到:
a
=
∑
i
=
1
n
x
i
y
i
−
n
x
ˉ
y
ˉ
∑
i
=
1
n
x
i
2
−
n
x
ˉ
a = \frac{\sum_{i=1}^{n}x_{i}y_{i} - n\bar{x}\bar{y}}{\sum_{i=1}^{n}x_{i}^{2} -n\bar{x} }
a=∑i=1nxi2−nxˉ∑i=1nxiyi−nxˉyˉ
因为: ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) = ∑ i = 1 n x i y i − n x ˉ y ˉ \sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y}) = \sum_{i=1}^{n}x_{i}y_{i} - n\bar{x}\bar{y} i=1∑n(xi−xˉ)(yi−yˉ)=i=1∑nxiyi−nxˉyˉ
∑ i = 1 n ( x i − x ˉ ) 2 = ∑ i = 1 n x i 2 − n x ˉ \sum_{i=1}^{n}(x_{i} - \bar{x})^2 = \sum_{i=1}^{n}x_{i}^{2} -n\bar{x} i=1∑n(xi−xˉ)2=i=1∑nxi2−nxˉ
所以: a = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 a = \frac{\sum_{i=1}^{n}(x_{i}-\bar{x})(y_{i}-\bar{y})}{\sum_{i=1}^{n}(x_{i} - \bar{x})^2} a=∑i=1n(xi−xˉ)2∑i=1n(xi−xˉ)(yi−yˉ) - 所以根据上述的公式,将数据集的数据代入即可求得a b参数。
- 假设最终的直线方程为
y
=
a
x
+
b
y = ax + b
y=ax+b,存在一个数据集
{
(
x
1
,
y
1
)
,
(
x
2
,
y
2
,
.
.
.
.
.
.
,
(
x
n
,
y
n
)
)
}
\left \{ (x_{1},y_{1}),(x_{2},y_{2}, ......,(x_{n},y_{n}))\right \}
{(x1,y1),(x2,y2,......,(xn,yn))}。则对于数据集中的点
(
x
i
,
y
i
)
(x_{i},y_{i})
(xi,yi)的回归误差为
d
=
y
i
−
a
x
i
−
b
d = y_{i} - ax_{i} - b
d=yi−axi−b。那么对于整个数据集来说,误差为:
D
=
∑
i
=
1
n
(
y
i
−
a
x
i
−
b
)
2
D = \sum_{i=1}^{n}(y_{i} - ax_{i} - b)^2
D=i=1∑n(yi−axi−b)2
线性回归 最小二乘法求
最新推荐文章于 2025-01-24 23:29:16 发布