拟合直线的五层境界

第一层 两点定一线

给出两个点的坐标(x_1,y_1)(x_2,y_2),求通过这两点的直线.

line1.png

把直线方程和两个点的坐标代入后,可以得到一个方程组:

\begin{cases} ax+by+c=0 \\ ax_1+by_1+c=0 \\ ax_2+by_2+c=0 \\ \end{cases}

把 a,b,c 看作未知数,齐次方程组有非平凡解的条件是行列式等于 0:

\begin{vmatrix} x & y & 1\\ x_1 & y_1 & 1\\ x_2 & y_2 & 1\\ \end{vmatrix}=0

可得直线方程为:x(y_1-y_2) + y(x_2-x_1) + x_1y_2 - x_2y_1 = 0.

第二层 多点拟合

有多个数据点时,拟合一条直线。记 n 个点的坐标为(x_i,y_i)i=1,..,n.

line2.png

设直线方程为y=ax+b,最小化\sum{[y_i-(ax_i+b)]^2},列出矩阵方程:

\begin{bmatrix} x_1 & 1 \\ x_2 & 1 \\ | & | & \\ x_n & 1 \\ \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix}=\begin{bmatrix} y_1 \\ y_2 \\ | \\ y_n \end{bmatrix}

应用最小二乘法可得:

\begin{bmatrix} \sum{x_i^2} & \sum{x_i} \\ \sum{x_i} & n \\ \end{bmatrix} \begin{bmatrix} a \\ b \end{bmatrix}=\begin{bmatrix} \sum{x_iy_i} \\ \sum{y_i} \end{bmatrix}

解出:

\begin{cases} a=\frac{n\sum{x_iy_i}-\sum{x_i}\sum{y_i}}{n\sum{x_i^2}-(\sum{x_i})^2}=\frac{\sum{x_iy_i}-n\overline{x}\overline{y}}{\sum{x_i^2}-n\overline{x}^2}=\frac{∑x_iy_i-∑x_i\overline{y}-∑\overline{x}y_i+∑\overline{x}\overline{y}}{∑x_i^2-2∑x_i\overline{x}+∑\overline{x}^2}=\frac{∑(x_i-\overline{x})(y_i-\overline{y})}{∑(x_i-\overline{x})^2} \\ \\ b=\frac{\sum{x_i^2}\sum{y_i}-\sum{x_i}\sum{x_iy_i}}{n\sum{x_i^2}-(\sum{x_i})^2}=\frac{\overline{y}\sum{x_i^2}-\overline{x}\sum{x_iy_i}}{\sum{x_i^2}-n\overline{x}^2}=\frac{\overline{y}(\sum{x_i^2}-n\overline{x}^2)-\overline{x}(\sum{x_iy_i}-n\overline{x}\overline{y})}{\sum{x_i^2}-n\overline{x}^2}=\overline{y}-a\overline{x} \\ \end{cases}

其中\overline{x}=\frac{1}{n}\sum{x_i}\overline{y}=\frac{1}{n}\sum{y_i}为 x 和 y 坐标的平均值.

最小二乘法的缺陷是最小化的是点到直线的竖直距离的平方和,且不能拟合竖直的直线.

第三层 多点最优拟合

最优拟合是最小化点到直线的垂直距离的平方和.

line3.png

设直线方向为单位向量𝗹,法向为单位向量𝗻,取直线上的一个点(x_o,y_o)为坐标原点,得到平移后的坐标值:
𝘅_i=(x_i-x_o,y_i-y_o)

𝘅_i到直线的距离为𝗻^T𝘅_i𝘅_i投影到直线上的长度为𝗹^T𝘅_i,因为𝗹⊥𝗻,有

\sum{‖𝘅_i‖^2}=\sum{[(𝗻^T𝘅_i)^2+(𝗹^T𝘅_i)^2]}=\sum{𝗻^T𝘅_i𝘅_i^T𝗻}+\sum{𝗹^T𝘅_i𝘅_i^T𝗹}=𝗻^T\sum{𝘅_i𝘅_i^T}𝗻+𝗹^T\sum{𝘅_i𝘅_i^T}𝗹

S=\sum{𝘅_i𝘅_i^T}

\sum{‖𝘅_i‖^2}=𝗻^TS𝗻+𝗹^TS𝗹

𝗻^TS𝗻为点到直线的垂直距离的平方和,𝗹^TS𝗹为点到直线投影长度的平方和.

\sum{‖𝘅_i‖^2}是一个固定的数值,所以目标是选取合适的𝗹𝗻,使𝗻^TS𝗻最小且𝗹^TS𝗹最大.

S 为二阶对称的正定矩阵,有一大一小两个正的本征值λ_{max}\geqslantλ_{min},对应两个正交的本征向量𝘃_{max},𝘃_{min}.

对于任意的向量 𝘅 有:

𝘅^TS𝘅=𝘅^T(λ_{max}𝘃_{max}^T𝘅𝘃_{max}+λ_{min}𝘃_{min}^T𝘅𝘃_{min})=λ_{max}(𝘃_{max}^T𝘅)^2+λ_{min}(𝘃_{min}^T𝘅)^2

因为λ_{min}[(𝘃_{max}^T𝘅)^2+(𝘃_{min}^T𝘅)^2]\leqslantλ_{max}(𝘃_{max}^T𝘅)^2+λ_{min}(𝘃_{min}^T𝘅)^2\leqslantλ_{max}[(𝘃_{max}^T𝘅)^2+(𝘃_{min}^T𝘅)^2]
所以λ_{min}‖𝘅‖^2\leqslant𝘅^TS𝘅\leqslantλ_{max}‖𝘅‖^2,且仅当 𝘅 与本征向量重合时取等号.

所以当𝗻为较小的本征值对应的本征向量时,𝗻^TS𝗻最小且𝗻^TS𝗻=λ_{min},同时𝗹为较大的本征值对应的本征向量,𝗹^TS𝗹最大且𝗹^TS𝗹=λ_{max}.

这种方法叫做主成分分析法,如果取S=\dfrac{\sum{𝘅_i𝘅_i^T}}{n-1}为协方差矩阵,那么λ_{min}为点到直线垂直距离的均方差.

如果已知直线确切地通过某个点,则可以把这个点作为坐标原点;否则由于

\sum{‖𝘅_i‖^2}=\sum{(x_i-x_o)^2}+\sum{(y_i-y_o)^2}=(nx_o^2-2x_o\sum{x_i}+\sum{x_i^2})+(ny_o^2-2y_o\sum{y_i}+\sum{y_i^2})

可见,当x_o=\frac{1}{n}\sum{x_i}y_o=\frac{1}{n}\sum{y_i}时,\sum{‖𝘅_i‖^2}的值最小,也就是说可以把坐标原点放到 n 个坐标点的中心点上。

S=\dfrac{\sum{𝘅_i𝘅_i^T}}{n-1}=\frac{1}{n-1}\begin{bmatrix} \sum{(x_i-x_o)^2} & \sum{(x_i-x_o)(y_i-y_o)} \\ \sum{(x_i-x_o)(y_i-y_o)} & \sum{(y_i-y_o)^2} \\ \end{bmatrix}=\begin{bmatrix} S_{xx} & S_{xy} \\ S_{xy} & S_{yy} \\ \end{bmatrix}
λ_{min}=\cfrac{1}{2} ( S_{xx} + S_{yy} - \sqrt{(S_{xx}-S_{yy})^2 + 4 S_{xy}^2}), 𝘃_{min}=(S_{xx} - S_{yy} - \sqrt{(S_{xx}-S_{yy})^2 + 4 S_{xy}^2}, 2S_{xy})=(n_x,n_y).
直线方程为:n_xx + n_yy - n_xx_o - n_yy_o = 0.

第四层 加权拟合

每个点除了有坐标值(x_i,y_i),还有权重w_i. 下图中点的颜色越深,权重越大.

line4.png

x_o=\cfrac{\sum{w_ix_i}}{\sum{w_i}}y_o=\cfrac{\sum{w_iy_i}}{\sum{w_i}}.

S=\dfrac{\sum{w_i𝘅_i𝘅_i^T}}{n-1}=\frac{1}{n-1}\begin{bmatrix} \sum{w_i(x_i-x_o)^2} & \sum{w_i(x_i-x_o)(y_i-y_o)} \\ \sum{w_i(x_i-x_o)(y_i-y_o)} & \sum{w_i(y_i-y_o)^2} \\ \end{bmatrix}=\begin{bmatrix} S_{xx} & S_{xy} \\ S_{xy} & S_{yy} \\ \end{bmatrix}
其余计算方法同上。

第五层 排除异常数据的干扰

数据在测量过程可能会受到干扰,或者录入错误等,下图左边是正常的拟合,右边是排除外点的拟合.

line5.png

有两种思路:

1、随机抽样一致算法:随机选取 k 个点进行拟合,剩余的点到直线距离平方大于方差的记作外点(outliers),重复 N 次,返回外点个数最小的一组数据点所拟合的直线.

2、加权迭代算法:先设初始权重都为 1,拟合一条直线,取每个点到直线的距离d_i,当d_i小于平均距离时取距离的平均值,然后把d_i的倒数作为权重再次拟合,迭代进行,直到最近两次拟合的方差没有明显改善时停止.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容