机器学习 有监督学习

Classification,分类,将事物归属到属于它的类别(离散)。
Regression,回归,属于结果为连续的实数。
特征提取 =》 分类器训练 =》 应用
特征是根据事物自身的特点,提取某方面数字或属性,并将其用向量表示。


分类器(不使用神经网络的简单分类)

分类器是一个函数,用于将特征向量转为预测的类别。
对同一数据集,不同的算法对应不同的 损失函数,用以衡量分类器在训练过程中输出错误的程度。通过损失函数不断优化方法,最终会获得不同的分类器及其参数。
通常对一个问题会训练多个分类器,通过测试数据找出准确率最高的分类器,再投入实际应用。

线性分类器

线性分类器即一条直线 ,将二维坐标系中的点分隔为两类。其中都称为模型参数(paramaters)
以下为两种常见的线性分类器算法,以最简单的2维特征值的2分类问题进行举例:

感知器(perceptron)

通过被误分类的训练数据调整现有参数,使分类器更准确。

  • 损失函数(loss function)

    其中为第个数据的真实分类(-1或1)
    如误分类数据越多,误差越大,则损失函数越大。不断迭代调整分类器参数,置到损失函数最小。
  • 调整参数
    若分类错误,即,则按以下规则更新:



    其中 为学习率(learning rate),即每一次更新参数的程度大小
支持向量机(support vector machine,SVM)

感知器可以找到多个符合训练集的参数,而支持向量机可以在其中找出最优解。

在分类准确的前提下,数据点距离分类直线越远,可信度越高。而两个类别中距离分类直线最近的点到直线的距离之和称为分类间隔(classification margin)。支持向量机即用于找出最大的分类间隔,其对应的两个坐标向量称为支持向量(support vector)。最终的分类器函数即该分类间隔的中间线。

任一数据和分类直线的几何间隔:
找到其最小值:
分类间隔为几何间隔2倍,即需要找到 ,换而言之损失函数即,同时需满足每个训练数据点到分类直线几何间隔至少为,则:

二分类与多分类

通常将多分类(multiclass classification)问题转化为多个二分类(binary classification)问题,每一个分类函数都只判别一个类别,如ABC三个类型,则对应三个分类器,分别判断是否为A、是否为B、是否为C。最终通过一个归一化指数函数(softmax)将多个分类器的结果合并输出为一个概率:

其中,表示共个二分类函数,为第个二分类函数输出的结果。先经过指数计算并最终会相加为1,因此称为归一化指数函数。
如三个二分类函数结果分别为,则经过归一化指数函数结果为:

\left\{ \begin{aligned} \frac{e^{-1}}{e^{-1} + e^{2} + e^{3}} = 0.013 \\ \frac{e^{2}}{e^{-1} + e^{2} + e^{3}} = 0.265 \\ \frac{e^{3}}{e^{-1} + e^{2} + e^{3}} = 0.722 \end{aligned} \right.

可知概率分别为,相加为

分类器的应用

  • 人脸检测
    在图片中进行大量密集、重叠的切割,并分别判断是否为人脸。多个框都符合人脸且重叠时还会合并为一个框。

线性回归算法(linear regression algorithm)

假设共有个样本,每个样本有个特征量,用表示第个样本的第个特征量,用表示模型参数(paramaters),也称系数或权重(weight),则有线性假设(linear hypothesis)函数:

其矩阵表示形式如下(其中):

平方差代价函数(cost function)

为各训练集数据真实值 与 函数预测值 的差值平方和的平均值(通常取,方便后续微分时和相消):

一元线性回归的平方差代价函数

多项式回归与特征选取

特征不仅可以缩放,还可以自行进行其他变换。当使用线性函数无法拟合数据时,可考虑使用多项式函数。
如,则令特征取为:,可转化回线性回归:

梯度下降算法(gradient descent algorithm)

为赋予任意初始值(通常为0),不断同步改变各的值,使代价函数的值不断变小,直到收敛为局部最小值:


...


...

  • 其中为偏导数。局部最低点的偏导数为0
  • 每一次求偏导都用所有样本,则称为 Batch gradient descent,也有
学习率(learning rate)

学习率(learning rate),用于控制梯度下降的幅度。学习率过大会导致跃过最低点出现震荡,过小则会导致计算过慢。
总是正数,这是改变能使变小的保证。
通常可以以3倍左右间隔选取多个值进行尝试(...、0.001、0.003、0.01、0.03、0.1、0.3、1、...),以获取一个合适的学习速率

特征缩放(feature scaling)

当不同特征量的取值范围差距过大时,梯度大的维度由于步长太大而震荡,梯度小的维度由于步长小而缓慢,此时需通过特征缩放使特征量的取值范围尽量接近,通常可采用 -1~1 附近的范围:
如 为0 ~ 2000米,而 为1 ~ 5个,此时每一步偏导数计算后,的改变值明显大于。通过特征缩放,将单位改为(2000米),单位改成(5个),则两者范围都变为 0~1。
也可以更进一步,令,则不但范围统一,还使平均值都为0.

正规方程(normal equation)

不同于梯度下降算法,通过导数方法直接输出使代价函数最小的值。
但当特征量比较多时(如超过一万个)不如梯度下降算法,运算极慢


当为不可逆矩阵时,可以做如下操作:

  1. 删除一些相互间非线性独立的特征,如特征时,删除其一
  2. 使用伪逆函数代替逆函数求解(如Octave中的pinv代替inv

你可能感兴趣的:(机器学习 有监督学习)