1 引言

  给出多元线性回归的解法,本篇重点回答如何构造“梯度下降法解”的数学模型。

2 从线性回归模型到最小二乘法的构建 

  [问题] 对于给定向量集合Ω={Xi},i:={1,...m},Xi属于集合Rn;再给出一个数集Y={yi},i:={1,...m}存在一个映射{Di}→{Yi}试给出它们的最佳超平面模拟;

      [分析]   映射        Z = Xα + β          ; Z是m×1向量;X是m×n的矩阵; α是1×n的向量;β为标量常量

                 最小二乘法表达式: E = ∑i( yi  - Zi2

      改写为: E = ∑i( yi  - Xi α - β)2

                 重新拼接表达式:令 Xα + β = [X I ][α β],且W = [X,I],ω = [α,β]T

                 E = || Y - Wω||2

                 梯度表达式:∂E/∂ω = 2(-W)T( Y - W ω );       //   此处为E对ω的梯度;根据此梯度更新ω的系数;对矩阵求导后,需要转置换位;

                 令迭代序列为 {ω  ω1   ω2    ω3 ...  ωs }

                 其中 ωi+1 = ωi  - 2ε(∂E/∂ω) ,               其中ε是给定的迭代步长;每次迭代增加梯度方向上的ε个长度

       至此,按照梯度逐步下降的方向,一步一步将ωi迭带为数值解。

3 Python代码实现

import numpy as np
Y = np.array([0.75,0.98,1.76,1.98,2.63])
W = np.array([[2.1,1],[2.98,1],[4.9,1],[6.1,1],[7.6,1]])
omig = np.array([0,0])
for i in range(60000):
mid = Y - np.dot(W,omig)
Gnd = -2*np.dot(W.T,mid)
omig = omig - 0.0002*Gnd
if (i%10000 == 0 ):
print omig
结果打印
[ 0.01807416 0.00324 ]
[ 0.33869174 0.0163087 ]
[ 0.33910011 0.0140404 ]
[ 0.33912152 0.01392144]
[ 0.33912265 0.0139152 ]
[ 0.3391227 0.01391487]
打印图

 

posted on 2016-12-07 15:54  公迪  阅读(1193)  评论(0编辑  收藏  举报