回归:梯度下降法

梯度下降法


给定 m条训练数据,假定方法,.那么损失函数
               
先说明向量问题,一个向量就代表一条特征值。梯度下降法就是从向量0(代表所有的特征值都是0)开始,向最陡峭的方向下降,直到收敛,那么此值就是最小值。
梯度下降公式:
    

重复公式直到 收敛。公式中意思是
 1、第i个减去第i个=0中的步长乘以的偏导数,然后赋值给第i个
 2、重复计算1。直到收敛。

为:
Repeat util  convergence {
                     

}
 
Python代码:
def gradient(x,y,bu,number):
    m, n = x.shape
    weight = np.ones(n)
    for index in range(n):
        for k in range(number):
           weight[index]=weight[index]-bu*np.sum(np.sum(x*weight,axis=1)-y)*np.sum(x,axis=0)[index]/m;
    return weight
x 是训练数组,y训练结果数组。bu是步长,number是循环次数。
MATLAB
function [theta, J_history] = gradientDescentMulti(X, y, theta, alpha, num_iters)

m = length(y);
J_history = zeros(num_iters, 1);
for iter = 1:num_iters
    h=(sum(X*theta,2)-y).*X
    kao=alpha*sum(h,1)
    theta= theta-transpose(kao)/m
    J_history(iter) = computeCostMulti(X, y, theta);

end

end



其中:梯度下降回归是局部回归,有可能不是全局最优解。还有步长的选择,步长过大,会出错,太小,程序执行次数太多。那么只有通过执行多次,来选择合适步长。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值