吴恩达机器学习(二)随机梯度下降算法练习

吴恩达机器学习(二)随机梯度下降算法练习

随机梯度下降算法理论推导(待完成)

在吴恩达的机器学习课程中,在介绍了批量梯度下降算法后,又介绍了随机梯度下降算法,随机梯度下降算法在处理大批量数据的时候运算速度优于批量梯度下降算法。
讲义中并未提及该算法的具体推导,仅列出了算法的流程:
Loop
{
for i = 1 i=1 i=1 to m,
θ j : = θ j − α ( y ( i ) − h ( x j ( i ) ) ) x j ( i ) \theta_j := \theta_j-\alpha(y^{(i)}-h(x^{(i)}_j))x^{(i)}_j θj:=θjα(y(i)h(xj(i)))xj(i)
}
找个时间我会查找资料补全该部分的内容。个人理解,随机算法与批量梯度下降算法的不同点在于目标函数仅包含一个样本误差:
J ( θ 0 , θ 1 ) = 1 2 ( y ( i ) − h ( x 1 ( i ) ) 2 J(\theta_0,\theta_1) = \frac{1}{2}(y^{(i)}-h(x^{(i)}_1)^2 J(θ0,θ1)=21(y(i)h(x1(i))2
然后用这样的目标函数来计算梯度。

实例

数据来源https://blog.csdn.net/weixin_43084928/article/details/82529596

%% 单变量随机梯度下降算法
% 作者:sddfsAv
% 日期:20190227
% Matlab版本:2018b
% 简介:吴恩达机器学习课程练习,数据集来源于https://blog.csdn.net/weixin_43084928/article/details/82529596
clear
clc

%% 导入原始数据
Data=csvread('Salary_Data.csv',1,0);    % 读取csv数据文件
scatter(Data(:,1),Data(:,2),40,'MarkerEdgeColor',[0 .5 .5],...
              'MarkerFaceColor',[0 .7 .7],...
              'LineWidth',1.5);         % 绘制散点图
title("Experience and Salary");         % 图表标题
xlabel("Experience(years)");            % x轴标题
ylabel("Salary(dollar)");               % y轴标题
hold on;
%% random gradient descnt
alpha=0.001;  % 学习速率,过大会造成不收敛
theta=[0 0]';   % 参数初值
theta_data=[];
for j=1:2000
    for i=1:length(Data(:,1))
        theta0=theta(1,i);
        theta1=theta(2,i);
        theta(1,i+1)=theta0+alpha*(Data(i,2)-(theta0+theta1*Data(i,1)));
        theta(2,i+1)=theta1+alpha*(Data(i,2)-(theta0+theta1*Data(i,1))).*Data(i,1);
    end
    theta_data=[theta_data theta];
    theta(:,1)=theta(:,end);
    if abs(theta(:,31)-theta(:,30))<1e-8
        break;
    end
end
plot(Data(:,1),theta0+theta1*Data(:,1))

拟合结果:
拟合结果

总结

之后按照课程矩阵推导,得到最小二乘法的解析解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值