吴恩达——机器学习1

什么是机器学习

Tom定义的机器学习是,一个好的学习问题定义如下,他说,一个程序被认为能从经验E中学习,解决任务T,达到性能度量值P,当且仅当,有了经验E后,经过P评判,程序在处理T时的性能有所提升。在下棋任务中,经验E 就是程序上万次的自我练习的经验而任务T 就是下棋。性能度量值P是指它在与一些新的对手比赛时,赢得比赛的概率。在垃圾邮件识别任务中,任务T是识别垃圾邮件,经验E是被标记为垃圾的邮件,性能度量P是指被划分为垃圾邮件的准确率.

监督学习和无监督学习

  • 监督学习是通过带有标签的数据集训练算法,根据这些结果进行预测;(eg. 肿瘤预测(预测结果为离散值——分类问题)、房价预测(预测结果为连续值——回归问题))

测验:

假设你经营着一家公司,你想开发学习算法来处理这两个问题:

  1. 你有一大批同样的货物,想象一下,你有上千件一模一样的货物等待出售,这时你想预测接下来的三个月能卖多少件?(回归问题,预测结果为连续值)
  2. 你有许多客户,这时你想写一个软件来检验每一个用户的账户。对于每一个账户,你要判断它们是否曾经被盗过?  (分类问题,预测结果为被盗过和为被盗过两种)
  • 无监督学习是给机器一组不带有标签的训练集,让机器自己学习算法,从数据中找出某种结构或规律;无监督学习中没有任何的标签或者是有相同的标签(谷歌新闻的分类、Email分组、市场划分——聚类)

单变量线性回归

模型表示

根据房屋尺寸(x)预测房屋价格h_\theta \left ( x \right ):通过训练集拟合出一条直线h_\theta \left ( x \right )=\theta _0+\theta _1x,只有一个变量x,所以是单变量线性回归。选择合适的参数\theta _0 , \theta _1,便可以对数据进行预测了。

代价函数

\theta _0 , \theta _1的选择直接决定了模型的准确程度。模型的预测结果与真实结果的差距就是建模误差。

代价函数(平方误差代价函数)可以表示为:J\left ( \theta_0, \theta_1 \right )=\frac{1}{2}\sum_{i=1}^{m}\left ( h_\theta \left ( x^{\left ( i \right )} -y^{\left ( i \right )}\right ) \right )^{2}

min_\theta \left ( J \left ( \theta \right )\right )是解决回归问题的常用手段。常用的方法有梯度下降法和正规方程法。当特征变量的数量较小时,可以直接采用正规方程法替代梯度下降法。

批量梯度下降(banch gradient descent)

梯度下降方法是找到函数下降最快的方向(即:梯度最大的方向的反方向),寻找函数最优解的方法。

当选取不同的初始参数值,得到的局部最优解可能不同。

更新公式:repeat until convergence {

               \theta _i:=\theta _i-\alpha \left ( h_\theta \left ( x \right )-y \right )x_i  (单样本)

                \theta _i:=\theta _i-\alpha \sum_{j=1}^{m}\left ( h_\theta \left ( x_i^{\left ( j \right )} \right )-y^{\left ( j \right )} \right )x_i^{\left ( j \right )}(多样本)

              }

训练集数据量大时,计算耗时很严重,BGD不适用,提出随机梯度下降(Stochastic gradient descent):

repeat until convergence {

            for j=1 to m {

                       \theta _i:=\theta _i-\alpha \left ( h_\theta \left ( x_i^{\left ( j \right )} \right )-y^{\left ( j \right )} \right )x_i^{\left ( j \right )}  (每次更新所有参数只用一个样本)

            }

}

特征缩放

面对多维特征问题,当这些特征具有相近的尺度时,有助于梯度下降算法更快的收敛。

在特征尺度严重不平衡的情况下,绘制的代价函数的等高线趋于扁平,在迭代过程中,迭代算法求最优解路径趋于“之字形”。

解决方案:将所有特征的尺度都尽量缩放到-1到1之间。

学习率

梯度下降算法的每次迭代受到学习率的影响,如果学习率过小,则达到收敛所需的迭代次数会非常高;如果学习率过大,迭代过程中可能会越过局部最小值导致无法收敛。

其他一些求最优解的方法:共轭梯度Conjugate Gradient),局部优化法(Broyden fletcher goldfarb shann,BFGS)和有限内存局部优化法(LBFGS)

正规方程法

\theta :=\left ( X^{T}X \right )^{-1}X^{T}Y

推导过程见http://www.ai-start.com/ml2014/html/week2.html#header-n5

参考:http://www.ai-start.com/ml2014/html/week1.html#header-n248

猜你喜欢

转载自blog.csdn.net/lekusun9671/article/details/82284168