吴恩达机器学习(三)梯度下降算法的解析解
随机梯度下降算法理论推导
由于在课程的讲义中老师已经推导了解析解,此处仅列出结论:
θ
⃗
=
(
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))
拟合结果:
总结
按照讲义的顺序,接下来学习Probabilistic interpretation,也就是关于最小二乘回归的概率解释。