吴恩达机器学习笔记Day1

一. 监督学习与无监督学习

监督学习 : 人为的给算法一个都是正确答案的数据集,然后通过算法给出更多数据相对应的预测值。例如,我们给它一个房价数据集,在这个数据集中的每个样本是在市场中调查得来的数据,算法的目的就是给出更多的正确答案,例如为你朋友想要卖掉的这所新房子给出估价。

回归问题:结果是线性的(我们设法预测出一个连续值的结果) e.g. 房价问题

分类问题:结果是离散的(我们设法预测出一个离散值的结果,如0,1)e.g. 根据特征判断肿瘤类型

无监督学习 : 人为的给算法一堆无任何标记的数据,最后得到其中的结构,如分簇

鸡尾酒算法 : 从有两个声音源的录音中,把两种声音源分离开,比如综艺中在合唱的人群里分离出特定人的声音

[W,s,v] = svd((repmat(sun(x.*x,1),size(x,1),1).*x)*x');

svd:奇异值分解的缩写 (已内置于Octave)

二. 线性回归模型

m = 训练样本的数量

x = 输入变量/特征

y= 输出变量/目标变量

(x,y) = 一个训练样本

(x(i),y(i) )= 特定的训练样本 (第i行)

 假设函数:Hypothesis:

hθ(x)=θ01*x   (θ0和θ1是模型参数)

因此要确定θ0和θ1的值使得 J(θ01)=((1/2m)*Σ(hθ(x)-y)2最小,即算法得出来的值和实际值相差最小

代价函数:J(θ01

 梯度下降算法:针对找函数J的最小值的算法

repeat until convergence{

  θj := θj - α*(∂/∂θj)*J(θ01)    (for j = 0 and j = 1)     

  # :=表示赋值

  #α 一个被称为学习率的数字,控制梯度下降时迈多大步子,值越大下降越快,永远大于0

       #需要同时更新两个θ(设置temp0,temp1中间变量)

 }

 (∂/∂θj)*J(θ01)=(∂/∂θj)*(1/2m)*Σ(hθ(x)-y)2

         =(∂/∂θj)*(1/2m)*Σ(θ01x-y)2 

经过偏导计算可以得:j=0 也就是(θ0)  : (∂/∂θ0)*J(θ01)=(1/m)*Σ(hθ(x)-y)

          j=1 也就是(θ1)  : (∂/∂θ1)*J(θ01)=(1/m)*Σ[(hθ(x)-y)*x]

再将上面的结果带入到代码中:

repeat until convergence{

  θ0 := θ0  α*(1/m)*Σ(hθ(x)-y)

  θ1 := θ1 -   α*(1/m)*Σ[(hθ(x)-y)*x]

  #note: 要同时更新θ0和θ1

  #梯度下降容易陷入局部最优,但是线性回归问题的代价函数永远是凸函数,没有局部最优,只有全局最优,可以放心用

  #有时也被称作Batch梯度下降

 }

------------恢复内容结束------------

猜你喜欢

转载自www.cnblogs.com/enheng123/p/11951530.html
今日推荐