斯坦福机器学习2:监督学习应用

斯坦福机器学习第二讲学习笔记及MATLAB实现

代码及笔记打下载地址:http://download.csdn.net/detail/misscoder/9381026
第一部分–笔记

一:内容提纲
1:线性回归
2:梯度下降
3:正规方程组
二:学习内容
学习第一个监督学习算法,同时也属于线性回归问题范畴,教学引入例子是房价预测问题。本节课程提供了线性回归问题两种求解方法—梯度下降和正规方程组法。
三:监督学习的内容和步骤
这里写图片描述
如上图,首先确定h的形式(如线性回归问题中假设h是特征的线性函数);然后设计学习算法,该算法根据训练样本集求解h中参数,确定h最终形式;最后基于h,可对任意输入变量x进行预测:y=h(x)。
梯度下降法和正规方程法是线性回归问题中求解h的两种算法。
四:梯度下降法
核心思想:重复沿最陡方向减小成本函数J(),直到算法收敛。
数学表示:依照如下表达式重复更新参数直到算法收敛
这里写图片描述
算法收敛的判断:θ变化不大;J(θ)变化不大;J(θ)取最小值
备注:α的合理取值关乎算法成败,若取值过小,则迭代次数过多;若取值过大,则可能会跳过最优解,使θ、J(θ)以及整个算法无法达到收敛状态。实验结果表面,因根据训练样本以及算法运行情况调整α,寻找能使算法收敛的较大α

五:正规方程法
核心思想:求解矩阵方程∇_θ J(θ)=0,则h(x)=θ^T x
数学表示:
这里写图片描述

第二部分—代码

一:梯度下降法

1:算法实现函数。

% Function: 梯度下降法求解线性回归模型
% Create Time:2015/12/14
% Parameter:
%   tx--训练样本输入
%   ty--训练样本输出
%   a --步长
%   x --输入变量
% Steps:
%   1:沿梯度方向更新参数theta
%   2:计算此参数下的评价函数Jtheta
%   3: 判断算法是否收敛。若是,停止迭代。算法收敛时,theta,J收敛。

function y = laLMS(tx,ty,a,x)
[m,n] = size(tx);%m--样本数,n--特征数
tx0 = ones(m,1);
tx = [tx0 tx];

theta = zeros(1,n+1)';

y = 0;
for k = 1:1:80
%   1:沿梯度方向更新参数theta
    oldTheta = theta;
    for j = 1:1:n+1
        dstep = 0;
        for i = 1:1:m
            dstep = dstep + (h_func(oldTheta',tx(i,:)) - ty(i))*tx(i,j);
        end
        theta(j) = theta(j) - a*dstep;        
    end
%   2:计算此参数下的评价函数Jtheta
    J = J_func(tx,ty,theta);
    Jold = J_func(tx,ty,oldTheta);
    if abs(Jold-J)/Jold<0.0001
      theta=oldTheta
      y = h_func(theta,[1 x]);
      break;            
    end
end

end


2:两个相关函数。

function h = h_func(theta,tx)
% 参数:tx--一个训练样本输入
%       h --该训练样本输入预测值

h =dot(theta',tx);
end

function j = J_func(tx,ty,theta)
j = 0;
m = size(tx,1);

for i = 1:1:m
    j = j + (h_func(theta',tx(i,:))- ty(i))^2;
end
j = j/2;
end

3:测试函数。

% Function: 测试线性回归问题两种解法
% Create Time:2015/12/14
% Parameter:
clc;
clear;
% 训练样本集一:
tx = [1 40 ;2 40 ;1 50 ;2 50 ;2 80 ;2 82 ;3 83 ;2 88 ;3 120 ;2 120 ];
ty = [805;807;1005;1007;1608;1646;1670;1769;2411;2407];
 x = [2 110] ;
% 训练样本集二:
% tx = [1;2;3;4]; 
% ty = [1.1;2.2;2.7;3.8];  
%  x = 1.5 ;
 y1= laLMS(tx,ty,0.00001,x);%第一组训练样本a=0.00001,第二组训练样本a=0.01

二:正规方程法
1:算法实现函数。

% Function: 正规方程法求解线性回归模型
% Create Time:2015/12/14
% Parameter:
%   tx--训练样本输入
%   ty--训练样本输出
%   x --输入变量
% Steps:
%   1:沿梯度方向更新参数theta
%   2:计算此参数下的评价函数Jtheta
%   3: 判断该函数是否为局部最小值。若是,停止迭代

function y = laNormalEquations(tx,ty,x)
[m,n] = size(tx);%m--样本数,n--特征数
tx0 = ones(m,1);
X = [tx0 tx];
Y = ty;

theta = pinv(X'*X)*X'*Y
size(theta)
size([1 x])
y = dot(theta',[1 x]);

end

2:测试函数。

% Function: 测试线性回归问题两种解法
% Create Time:2015/12/14
% Parameter:
clc;
clear;
% 训练样本集一:
tx = [1 40 ;2 40 ;1 50 ;2 50 ;2 80 ;2 82 ;3 83 ;2 88 ;3 120 ;2 120 ];
ty = [805;807;1005;1007;1608;1646;1670;1769;2411;2407];
 x = [2 110] ;
% 训练样本集二:
% tx = [1;2;3;4]; 
% ty = [1.1;2.2;2.7;3.8];  
%  x = 1.5 ;
 y2=  laNormalEquations(tx,ty,x);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值