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

来源:互联网 发布:dht网络bt 编辑:程序博客网 时间:2024/05/29 04:37

斯坦福机器学习第二讲学习笔记及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;                endendend

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;endj = 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'*Ysize(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);
0 0