概述
直线方程可以表示为
r
=
cos
θ
∗
x
+
sin
θ
∗
y
(1)
r = \cos\theta*x + \sin\theta*y \tag{1}
r=cosθ∗x+sinθ∗y(1)
假设一条直线
L
L
L为
r
=
cos
θ
∗
x
+
sin
θ
∗
y
(2)
r = \cos\theta*x + \sin\theta*y \tag{2}
r=cosθ∗x+sinθ∗y(2)
一组数据集合为
S
k
=
{
(
x
0
,
y
0
)
,
.
.
.
,
(
x
k
,
y
k
)
}
(3)
S_k= \{ (x_0,y_0),...,(x_k,y_k)\}\tag{3}
Sk={(x0,y0),...,(xk,yk)}(3)
那么这组数据集与直线
L
L
L的误差值为
e
i
=
∥
cos
θ
∗
x
i
+
sin
θ
∗
y
i
−
r
∥
(4)
e_i = \| \cos\theta*x_i + \sin\theta*y_i - r\|\tag{4}
ei=∥cosθ∗xi+sinθ∗yi−r∥(4)
方差为
E
2
=
∑
S
k
e
i
2
(5)
E_2 =\sum_{S_k}e_i^2\tag{5}
E2=Sk∑ei2(5)
那么与这些数据点最优的线段就是最小化方差值
E
2
E_2
E2。
求解推导
根据最值原理,求最小值,可以理解为算式的导数为零的解。
假设函数
f
(
θ
,
r
)
=
∑
S
k
(
cos
θ
∗
x
i
+
sin
θ
∗
y
i
−
r
)
2
(6)
f(\theta,r) = \sum_{S_k}(\cos\theta*x_i + \sin\theta*y_i - r)^2\tag{6}
f(θ,r)=Sk∑(cosθ∗xi+sinθ∗yi−r)2(6)
导数为
f
˙
(
θ
,
r
)
=
2
∑
S
k
(
cos
θ
∗
x
i
+
sin
θ
∗
y
i
−
r
)
′
(7)
\dot{f}(\theta,r) = 2\sum_{S_k}(\cos\theta*x_i + \sin\theta*y_i - r)'\tag{7}
f˙(θ,r)=2Sk∑(cosθ∗xi+sinθ∗yi−r)′(7)
根据函数参数
θ
\theta
θ 和
r
r
r,分别对其求偏导数得
f
˙
(
θ
,
r
)
=
∂
f
∂
θ
+
∂
f
∂
r
(8)
\dot{f}(\theta,r) = \frac{\partial f}{\partial \theta} + \frac{\partial f}{\partial r}\tag{8}
f˙(θ,r)=∂θ∂f+∂r∂f(8)
故得
f
˙
(
θ
,
r
)
=
2
∑
S
k
(
cos
θ
∗
x
i
+
sin
θ
∗
y
i
−
r
)
(
cos
θ
∗
y
i
−
sin
θ
∗
x
i
−
1
)
(9)
\dot{f}(\theta,r) = 2\sum_{S_k}(\cos\theta*x_i + \sin\theta*y_i - r)(\cos\theta*y_i - \sin\theta*x_i -1)\tag{9}
f˙(θ,r)=2Sk∑(cosθ∗xi+sinθ∗yi−r)(cosθ∗yi−sinθ∗xi−1)(9)
当
f
˙
(
θ
,
r
)
=
0
\dot{f}(\theta,r)= 0
f˙(θ,r)=0得
∑
S
k
(
cos
θ
∗
x
i
+
sin
θ
∗
y
i
−
r
)
(
cos
θ
∗
y
i
−
sin
θ
∗
x
i
−
1
)
=
0
(10)
\sum_{S_k}(\cos\theta*x_i + \sin\theta*y_i - r)(\cos\theta*y_i - \sin\theta*x_i -1) = 0\tag{10}
Sk∑(cosθ∗xi+sinθ∗yi−r)(cosθ∗yi−sinθ∗xi−1)=0(10)
详细推导过程参考博客
最终结果得
V
x
=
∑
i
=
0
k
x
i
k
(11)
V_x = \frac{\sum_{i=0}^kx_i}{k} \tag{11}
Vx=k∑i=0kxi(11)
V y = ∑ i = 0 k y i k (12) V_y = \frac{\sum_{i=0}^ky_i}{k} \tag{12} Vy=k∑i=0kyi(12)
V x y = ∑ i = 0 k ( x i − V x ) ( y i − V y ) (13) V_{xy} = \sum_{i=0}^{k}(x_i - V_x)(y_i - V_y)\tag{13} Vxy=i=0∑k(xi−Vx)(yi−Vy)(13)
V x x = ∑ i = 0 k ( x i − V x ) 2 (14) V_{xx} =\sum_{i=0}^{k}(x_i - V_x)^2 \tag{14} Vxx=i=0∑k(xi−Vx)2(14)
V
y
y
=
∑
i
=
0
k
(
y
i
−
V
y
)
2
(15)
V_{yy} = \sum_{i=0}^{k}(y_i - V_y)^2 \tag{15}
Vyy=i=0∑k(yi−Vy)2(15)
根据上述计算,分别求出直线的
θ
\theta
θ和
r
r
r得
θ
=
arctan
(
V
y
y
−
V
x
x
)
−
(
V
y
y
−
V
x
x
)
2
+
4
V
x
y
2
2
V
x
y
(16)
\theta = \arctan\frac{(V_{yy} - V_{xx}) - \sqrt{(V_{yy} - V_{xx})^2 + 4V_{xy}^2}}{2V_{xy}}\tag{16}
θ=arctan2Vxy(Vyy−Vxx)−(Vyy−Vxx)2+4Vxy2(16)
r = cos θ ∗ V x + sin θ ∗ V y (17) r = \cos\theta*V_x + \sin\theta*V_y \tag{17} r=cosθ∗Vx+sinθ∗Vy(17)