Coursera 机器学习笔记(一)

主要是第一二周内容

机器学习概要

机器学习是什么?

生活在信息时代的我们,其实时时刻刻都离不开机器学习算法。比如日常使用的搜索引擎就涉及到很多学习算法。

Arthur Samuel 给出第一个定义。他定义机器学习为:在进行特定编程的情况下,给予计算机学习能力的领域。维基百科给出的定义为:

机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。

可见这是一门交叉学科,涉及很多统计方面的知识。

机器学习分类

机器学习可以分成下面几种类别:

  • 监督学习(supervised learning)从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。
  • 无监督学习(unsupervised learning)与监督学习相比,训练集没有人为标注的结果。
  • 半监督学习(Semi-Supervised Learning)介于监督学习与无监督学习之间。
  • 增强学习(reinforcement learning)通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。

主要介绍下前两个类别。监督学习是指从给定“正确答案”的数据集学习一个算法,用来算出新数据的“正确答案”。监督学习主要分为回归问题和分类问题。比如:通过房屋面积来预测房价问题,而房价可以看成是连续值,这就是一个回归问题。回归主要的种类有:线性回归,曲线回归,二元logistic回归,多元logistic回归。而分类问题指的是预测值是离散的,“正确答案”是离散的。比如根据鱼的某些特征判断是哪种鱼,A鱼还是B鱼。

而无监督学习即没有所谓的“正确答案”。常用的无监督学习有聚类(clustering)。

线性回归(Linear Regression)

问题定义

模型参数表示:

  • \( m \) 代表训练集中实例的数量
  • \( x \) 代表特征/输入变量
  • \( y \) 代表目标变量/输出变量
  • \( (x,y)\) 代表训练集中的实例
  • \( (x{(i)},y{(i)}) \)代表第i个观察实例
  • \( h \) 代表学习算法的解决方案或函数也成为假设(hypothesis)

模型表示为:

机器学习(指监督学习)即利用学习算法通过训练集来学习到一个假设h,对新的输入x,做出相应的输出预测y。要怎么表示\( h \)呢?当h与输入变量是线性关系时,如:[ {h_\theta } = {\theta _0} + {\theta 1}x ,或者{h\theta } = {\theta _0} + {\theta _1}{x_1} + {\theta 2}{x_2}+......],统一表示为\({H\theta }(x) = {\theta ^T}x\) 。需要这样表示\( h \)的问题即为线性回归问题。

成本函数

接下来需要为模型选定合适的参数 \(\theta\)。我们要选定合适的参数使得我们的模型所预测的结果与训练集实际值的差距最小,即准确程度最高。其中预测值与实际值之间的差距就是建模误差。
定义成本函数(代价函数,cost function)为:

\[J(\theta ) = \frac{1}{{2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x^{(i)}}) - {y^{(i)}})}^2}} \]

当只有\(\theta \)为二维向量时,我们可以绘制相应的等高线图:

我们的目标就是找出成本函数中的最低点。

梯度下降

梯度下降是求成本函数最小值的一种算法。梯度下降背后的思想是:开始时我们随机选择一个参数的组合( θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
批量梯度下降( batch gradient descent)算法的公式为:
[\theta _j := \theta _j - \alpha \frac{\partial }{\partial \theta _j}J(\theta ) \space \space \space \space \space \space \space \space (for \space \space j=0 \space \space to \space \space j =n) ]
期中\(\alpha \) 是学习率,决定我们在下降方向上迈出的步伐的大小。不断重复批量梯度下降直至收敛。

我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

特征缩放

在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
如二维特征问题,进行特征缩放有利于梯度下降。如图:

特征缩放公式为:
[ {x_n} = \frac{{{x_n} - {\mu _n}}}{{{s_n}}} ]

学习率

梯度下降算法的每次迭代受到学习率的影响,如果学习率 α 过小,则达到收敛所需的迭代次数会非常高;如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通常选择 α=0.01, 0.03, 0.1, 0.3, 1, 3, 10 中的值。

正则方程

正则方程也是计算成本函数最小值的一种方法。正如高数中所学的,函数的极值点在函数导数为0的位置。即我们可以通过求解[ \frac{\partial }{{\partial {\theta _j}}}J({\theta _j}) = 0 ] 来计算出使得成本函数最小的参数。
最后得出\(\theta = {({XT}X){ - 1}}{X^T}y\).

两种方法的对比

原文地址:https://www.cnblogs.com/findwg/p/4771312.html