Gradient Descent 矩阵python实现

梯度下降法的矩阵方式描述
主要讲解梯度下降法的矩阵方式表述,要求有一定的矩阵分析的基础知识,尤其是矩阵求导的知识。
1. 先决条件:需要确认优化模型的假设函数和损失函数。对于线性回归,假设函数

hΘ(x)=Θ0x0+Θ1x1+Θ2x2++Θnxn h Θ ( x ) = Θ 0 x 0 + Θ 1 x 1 + Θ 2 x 2 + ⋯ + Θ n x n
的矩阵表达方式为:
hΘ(x)=XΘ h Θ ( x ) = X Θ
其中, 假设函数 hΘ h Θ y^(m1) y ^ ( m ∗ 1 ) 的矩阵, Θ Θ Θ(n1) Θ ( n ∗ 1 ) 的向量,里面有n个代数法的模型参数。 X(mn)mn X ( m ∗ n ) 维 的 矩 阵 。 m 代 表 样 本 的 个 数 , n 代 表 样 本 的 特 征 数 。 损 失 函 数 的 表 达 式 为 J(Θ)=12(XΘY)T(XΘY) J ( Θ ) = 1 2 ( X Θ − Y ) T ( X Θ − Y ) , , 其 中 Y(m1) Y ( m ∗ 1 ) 是样本的输出向量,维度为m*1, 12 1 2 是一个额外加上的系数,用于抵消二元导数的2
2. 算法相关参数初始化: θ 向量可以初始化为默认值,或者调优后的值。算法终止距离ε,步长α
在这里推导一下上述公式,从一维的角度进行推导:

hΘ(x)=Θ0x0+θ1x1+θ2x2++θnxn h Θ ( x ) = Θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + ⋯ + θ n x n
y^=hΘ(x)=i=0nΘixi y ^ = h Θ ( x ) = ∑ i = 0 n Θ i x i
L(Θ)=12j=0m(y^y)2 L ( Θ ) = 1 2 ∑ j = 0 m ( y ^ − y ) 2
ΔL(Θ)ΔΘi=Δ12mj=0(y^y)2ΔΘi Δ L ( Θ ) Δ Θ i = Δ ( 1 2 ∑ j = 0 m ( y ^ − y ) 2 ) Δ Θ i
0++mm 0 + ⋯ + m 的 累 和 是 m 个 特 征 点 累 和 当 只 看 一 个 样 本 时 , 上 式 可 看 成 :
Δ(12(y^y)2)ΔΘi=(y^y)Δ(hΘ(x))ΔΘi=(y^y)xi Δ ( 1 2 ( y ^ − y ) 2 ) Δ Θ i = ( y ^ − y ) ∗ Δ ( h Θ ( x ) ) Δ Θ i = ( y ^ − y ) ∗ x i
得 到 多 维 :
L(Θ)=j=0m(y^jyj)xj L ( Θ ) = ∑ j = 0 m ( y ^ j − y j ) ∗ x j

1. x = np.array(x) # X(mn) X ( m ∗ n )
2. y = np.array(y) # Y(m1) Y ( m ∗ 1 ) #m是样本个数,n是特征点个数
3. x= np.concatenate((np.ones((x.shape[0],1)),x), axis=1) #add bias
4. x_t = x.transpose()
4. w = mp.zero.(len(x[0]) #w.shape = n+1 value = 0
5. x_tmp = np.dot(x,w) # this is y^ y ^
6. loss = x_tmp - y
7. gra = np.dot(x_t, loss) #在这里只要进行这样的矩阵乘法就是实现上述的公式

你可能感兴趣的:(机器学习,个人笔记,李宏毅课程)