吴恩达机器学习(三)梯度下降算法的解析解

吴恩达机器学习(三)梯度下降算法的解析解

  • 随机梯度下降算法理论推导
  • 实例
  • 总结

随机梯度下降算法理论推导

由于在课程的讲义中老师已经推导了解析解,此处仅列出结论:
θ ⃗ = ( X T X ) − 1 X T y ⃗ \vec{\theta}=(X^TX)^{-1}X^T\vec{y} θ =(XTX)1XTy
在推导当中,老师使用了下面一个性质:
∇ A t r A B A T C = C A B + C T A B \nabla_AtrABA^TC=CAB+C^TAB AtrABATC=CAB+CTAB
到写这篇博客为止,我还没有找到一个比较满意的证明方法(要么太复杂,要么证明中还有些不明白的东西,碰到数学就头大的学渣o(╥﹏╥)o),在这儿贴出几个证明的网址:
证明1、证明2、证明3、证明4
有好证明方法的朋友欢迎在下面留言。

实例

数据来源https://blog.csdn.net/weixin_43084928/article/details/82529596
数据还是这位博主的。由于是解析解,代码相当简单。

%% 梯度下降算法解析解
% 作者:sddfsAv
% 日期:20190304
% 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;
%% gradient descnt closed form
X=[ones(length(Data(:,1)),1) Data(:,1)];
y=Data(:,2);
alpha=0.0005;  % 学习速率,过大会造成不收敛
theta=inv(X'*X)*X'*y;
plot(Data(:,1),theta(1)+theta(2)*Data(:,1))

拟合结果:
吴恩达机器学习(三)梯度下降算法的解析解_第1张图片

总结

按照讲义的顺序,接下来学习Probabilistic interpretation,也就是关于最小二乘回归的概率解释。

你可能感兴趣的:(机器学习)