uniform机器学习极简入门7—机器学习入门概述

uniform机器学习极简入门这个系列已经介绍了6节课,大家对机器学习(统计学习)有了些了解(当然之前都是些基础),今天我们从宏观整体上介绍下什么是机器学习,以及目前机器学习的分类,包括我们后续会陆续和大家介绍的方向。有了这个宏观理解后,可以针对性的在实践中选择自己合适的场景方法,而不是盲目的用一个方法来套。

1 机器学习目标及分类

机器学习(也称为统计机器学习)是通过数据来构建概率统计模型,然后利用训练好的模型来预测和分析未知数据。

目前统计学习可以分为以下四类

  1. 无监督学习
  2. 半监督学习
  3. 有监督学习
  4. 强化学习

我们这个系列也会尽量把这四种方法对应的模型和理论都介绍下,前面几节其实就是围绕无监督学习展开的模型。
无监督模型表示数据完全无标记数据;半监督学习模型则有少量标记数据和大量未标记数据;有监督学习则是在有大量已表述数据下学习的模型。强化学习有些不太一样,他们的训练数据需要agent和environment不断交互中产生。

监督学习模型可以是概率模型也可以是非概率模型,由条件概率分布P(Y|X)或者决策函数y=f(x)表示。这类的学习方法应该是我们后续重点介绍的模型,因为在实际工程中,通过监督学习来解决问题的场景特别多。

强化学习近几年也再次火起来(因为alphaGo采用的模型就是深度强化学习模型),最近的人机游戏对决也是采用强化学习来训练的,强化学习也被认为是我们寻找通用人工智能的最有希望的方式,所以建议大家可以多多关注目前强化学习的一些新paper,我们后面也会详细介绍这里涉及到的一些模型。

统计机器学习有三要素(见李航老师的《统计学习方法》)

  1. 模型
    模型指的是我们采用的函数空间,可能是概率模型也可能是决策函数。

  2. 策略
    有了模型来表示,我们需要某种指标来告诉我们如何学习模型的参数,其实就是我们的损失函数了,一般损失函数有以下几种

  • 0-1损失函数

  • 平方损失函数
  • 对数损失函数

    由1的模型我们可以得到我们假设的f(X)结构,然后根据策略,可以得到我们优化的目标
  1. 算法
    有了策略(优化目标),那我们只需要某种算法就可以来求解对应的模型参数了。其实这里问题就转换为了最优化问题。(后面我们会单独介绍一节,关于现有传统机器学习和深度学习涉及到的优化方法。)

2 模型衡量指标

模型训练的目标是为了对未知数据的分析,因此我们需要寻找某个指标来衡量这样的结果。

上面的损失函数是我们训练模型的目标,那又该怎么评价我们学习到的模型效果是否具有泛化能力?这里我们简单介绍几个方法:

  1. 准确率
  2. 精准率和召回率

精准率 precision 检索出的信息中有多少是正确的信息。
召回率 recall 有多少有用的信息被检索出。

为了公式化表示上面这两个指标,我们一般会借助如下表格

真实\预测
TP FN
FP TN



我们的目标就是希望召回率和精准率尽可能高,另外还有个综合指标就是F1-score,一般我们定义如下

  1. ROC
    很多机器学习是为测试样本产生一个实值或者概率预测,然后将这个预测值与某个阈值比较,如果大于该阈值则为正样本,否则负样本。
    ROC的定义同样也需要用到之前的表格,其横坐标和纵坐标定义如下


3 过拟合与欠拟合

模型训练目标就是把损失函数降到最低,是否这种评价指标在测试集合就一定最优呢?

假设我们有如下数据:


Data

我们需要进行拟合这些数据,假设我们采用多项式模型


这里存在一个参数n究竟该选择多少?
我们分别选择n=1, 3, 10进行拟合得到如下图

Fit

  1. n=1
    从图中看出,仍然存在很多点偏离较大,这种情况下,属于欠拟合。判断欠拟合的方法就是该模型在训练集合上的表现就很差,预测能力较弱,此时需要增加模型的复杂度。

  2. n=3
    从图中可以看出,该模型复杂度对Data的拟合具有较好的结果

  3. n=10
    我们看到图像在未知数据区间的表现很奇怪,有个上扬的趋势,这就是对未知数据的预测,可见效果并不是很好,虽然它对已知数据拟合效果很好。此时被称为过拟合,模型往往是由于过于复杂,过分拟合了训练集合,而缺失了泛化能力。

一般模型复杂度和预测误差存在如下曲线:


模型复杂度和预测误差关系

模型越复杂,往往能够降低训练集合的误差,但是测试集合的误差可能会反而增加。模型需要符合奥卡姆剃刀原理。

所有可选择的模型中,能够很好地解释已知数据并且模型越简单越好。

如何限制模型的复杂度?可以采用正则化的方法来惩罚模型复杂度。
还记得我们在刚开始介绍最大似然法时候有提到的MAP(最大后验概率),其实先概率就是一种正则化的方法。

所以通用的损失函数一般定义如下

第一项表示经验损失(训练集合上的拟合误差);第二项表示模型复杂度的惩罚项。

在深度学习中,有个训练的trick叫做early stop,就是不希望模型过分拟合训练集合,而是更多让模型拥有泛化能力。

另外,在训练中建议采用交叉验证的方法,例如s折交叉验证。

你可能感兴趣的:(uniform机器学习极简入门7—机器学习入门概述)