机器学习基石 -- 机器学习的分类

本文是《机器学习基石》第三讲 Types of Learning 课程的笔记。主要概括性介绍了机器学习的几个分类标准及其具体分类。

根据输出来分

根据模型输出来对机器学习分类是最常见的分类方法,往往可以分为回归(regression)和分类(classification)两大问题,而根据类比数量的不同,分类问题又往往又有二分类和多分类两种。

除了分类和回归,讲义中还提到了一种 Structured Learning, 这一类型的输出的信息之间有结构化的信息。如输入 "I love ML", 输出该句子中各个词对应的词性(如 PVN,PVP,NVN 等),可以粗略将其看作是一个多分类问题,只是这个多分类问题的类别非常多且类比没有明确的定义。用到这一类型学习方法的例子还包括语音识别(语音 -> 句子)等

根据样本来分

根据给出的样本是否有标记对机器学习进行分类也是一种常见的分类方法,可分为有监督学习(supervised),无监督学习(unsupervised)和半监督学习(semi-supervised)。

有监督学习就是除了给出样本的属性 \(x\) 外,还给出了样本的标记 \(y\), 这个标记可以是样本的分类等。常见的分类、回归等一般都是有监督学习。

而无监督学习则是只给出给出样本的属性 \(x\),让后要求找出这些样本内在属性及联系。其代表的应用是聚类,如给出若干无标记的文章,根据其主题将其聚成不同的类,最常见的聚类方法是 K-Means,但是解决文本聚类问题一般通过主题模型,常见的有 LSA,pLSA,LDA,HDP 等;除此之外,无监督学习还应用到密度估计(density estimation)中,如根据交通事故的发生地点做密度估计,从而得到危险的地段,一般解决这类问题可通过混合高斯模型等;无监督学习还可应用在异常点检测(outlier detection)中,例如从海量的用户日志中找到某个可疑的用户操作,解决这类问题的方法也有很多,比如通过 PCA 映射到低维度后通过可视化来找。

无监督学习解决了有监督学习中需要获取大量标记样本带来的困难,而半监督学习则是介于两者之间的一种方法。半监督学习主要考虑如何利用少量的标注样本和大量的未标注样本进行训练和分类的问题。如 active learning 就是半监督学习的一种,其思想就是让机器标注数据然后对于有疑问的标记进行 “提问”。

除了上面提到的三种的学习方法,讲义还提到了另外一种不那么明显依赖于样本的学习方法 Reinforcement Learning:强化学习 (增强学习),这种学习方法通过奖励或惩罚来训练当前的算法。常见的应用有机器人以及各种 AI Game(如 AlphaGo,Fine Art 等)

根据训练方式来分

这里根据训练方式主要是指训练时数据的输入方式,根据数据是否一次性送入到模型中训练将其分为 batch learning 和 online learning。

batch learning 指数据整批输进去,训练出一个模型用于预测等。

而 online learning 指每次有新样本的时候就用来训练更新 hypothesis,常见的比如说有垃圾邮件分类系统,这里有两点需要注意:

一是这种方法往往是依赖于训练算法的,如 SGD 等就适用在 online learning 中,因为其每次重新训练只需要依靠新的样本即可,而其他一些算法如果要加入新的数据就需要将所有的数据重新进行训练,这样的算法如果用在 online learning 中的代价就太大了。

二是虽然说每次有新的样本就训练更新 hypothesis,但是也不是来一个就更新一下,这样的训练成本也很高,实际中往往是等样本数积累到一定数量的时候才对这一批进行一个训练和更新。就像 gradient descent 中的 mini-batch。

根据输入来分

根据输入的样本的特征来分也可以分为下面三类(虽然这中分类方法并不常见):concrete features,raw feaures 和 abstract features。

concrete features 指输入的样本已经明确给出了其各种特征,如信用卡例子中顾客的各项资料等。

raw feaures 一般指图像或音频中的图像或声波,这些信息是原始的信号,需要进行一些转换才能使用。

abstract features 并没有一个严格定义,原讲义给出了 KDDCup 2011 的例子:

given previous (userid, itemid, rating) tuples, predict the rating that some userid would give to itemid

这种按照输入样本的 features 进行分类的方法在实际中并不常用,因为输入的样本往往是各种 features 交杂在一起的,不同问题需要与其相应的 features 才能得到好的效果,features 对结果的影响比较大。因此机器学习中也产生了 feature engineering 一说。