什么是回归
回归百度百科的定义是:研究一组随机变量 Y = ( y 1 , y 2 , , , , y n ) Y = (y_1, y_2, ,,, y_n) Y=(y1,y2,,,,yn)与另一组随机变量 X = ( x 1 , x 2 , , , , x n ) X = (x_1, x_2, ,,, x_n) X=(x1,x2,,,,xn)之间关系的统计变量方法。回归主要的种类有:线性回归、曲线回归、二元logistic回归、多元logistic回归。
回归从一组数据出发,确定某些变量之间的定量关系式;即建立数学模型并估计未知参数。通常用最小二乘法。
线性回归
当因变量和自变量为线性关系时,它是一种特殊的线性模型,也就是线性回归,你可以把线性回归理解为求一条直线来拟合你的数据点。
推导
以预测房价为例,给定一组数据点 ( Y 1 , Y 2 , , , , Y n ) (Y_1, Y_2, ,,, Y_n) (Y1,Y2,,,,Yn), ( X 1 , X 2 , , , , X n ) (X_1, X_2, ,,, X_n) (X1,X2,,,,Xn),其中的 Y i Y_i Yi表示对应的样本输入为 X i X_i Xi时的房价,是一个标量,而 X i X_i Xi是一个d维向量,每一维表示衡量房价的一个标准,比如第一维表示面积、第二维表示房间地理位置、第三维表示楼层等。
我们知道2维空间中直线的方程是:
y
=
k
x
+
b
y = k x + b
y=kx+b
3维空间中直线方程是:
z
=
k
1
x
+
k
2
y
+
b
z = k_1x + k_2y + b
z=k1x+k2y+b
那么类比d维空间中的直线方程应该是:
y
=
θ
1
x
1
+
θ
2
x
2
+
.
.
.
+
θ
d
x
d
+
θ
0
(1)
\tag{1} y = \theta_1x_1 + \theta_2x_2 +... + \theta_dx_d + \theta_0
y=θ1x1+θ2x2+...+θdxd+θ0(1)
线性回归就是要求出这条直线,也就是已知数据点,求出直线的参数
θ
i
,
i
=
[
0
,
1
,
2
,
.
.
.
d
]
\theta_i, i= [0,1,2,... d]
θi,i=[0,1,2,...d],其中,小写的
x
j
x_j
xj表示
X
i
X_i
Xi的d个特征中的第j个特征的数值。
我们发现
X
i
X_i
Xi相当于一个d维的向量,而参数
θ
\theta
θ也有d+1个,所以想到用
θ
=
[
θ
0
,
θ
1
,
,
,
θ
d
]
\theta = [\theta_0, \theta_1,,, \theta_d]
θ=[θ0,θ1,,,θd]来表示,将
X
i
X_i
Xi扩展1维也变成d+1维,即
X
i
=
[
1
,
x
1
,
x
2
,
.
.
.
x
d
]
X_i= [1, x_1, x_2, ... x_d]
Xi=[1,x1,x2,...xd],所以(1)式可以变成向量相乘的形式:
Y
^
=
X
θ
(2)
\tag{2} \hat Y = X\theta
Y^=Xθ(2)
其中,
X
,
θ
都
是
d
+
1
X, \theta都是d+1
X,θ都是d+1维的向量, X是行向量,
θ
是
列
向
量
\theta是列向量
θ是列向量。
(2)式是我们建立好的模型,将来我们要用它来预测房价,那么怎么衡量预测值与真实值之间的差异呢?就是用平方损失函数来衡量。
平方损失函数
J
(
θ
)
=
∑
i
=
1
n
(
Y
i
−
Y
^
i
)
2
(3)
\tag{3}J(\theta) = \displaystyle\sum_{i=1}^n (Y_i - \hat Y_i)^2
J(θ)=i=1∑n(Yi−Y^i)2(3)
(3)式也可以向量化,如下图所示:
所以损失函数可向量化为:
J
(
θ
)
=
(
y
−
X
d
θ
)
T
(
y
−
X
d
θ
)
(4)
\tag{4}J(\theta) = (y - X_d\theta)^T(y - X_d\theta)
J(θ)=(y−Xdθ)T(y−Xdθ)(4)
其中y是真实标签,
X
d
θ
X_d\theta
Xdθ是预测标签,这样就可以衡量损失了。
要计算
θ
\theta
θ,则可以先把(4)式展开,然后对
θ
\theta
θ求导:
求导之后就变成下面的式子:
变形得到:
之后就可以用得到的线性方程来预测房价了。
实现
实现可以看我的github地址:实现
参考:通俗理解线性回归(二)