现有的机器学习种类繁多,我们一般可以进行如下的分类标准:
- 是否在人类监督下学习(监督学习、非监督学习、半监督学习和强化学习)
- 是否可以动态的增量学习(在线学习和批量学习)
- 是简单的将新的数据点和已知的数据点进行匹配,还是像科学家那样对训练数据进行模型检测,然后建立一个预测模型(基于实例的学习和基于模型的学习)
这些标准之间并不排斥。
一、监督学习和非监督学习
根据训练期间接受的监督数量和监督类型,可以将机器学习分为以下四种类型:监督学习、非监督学习、半监督学习和强化学习。
1.1 监督学习
在监督学习中,提供给算法的包含所需解决方案的训练数据,成为标签或标记。
简单地说,就是监督学习是包含自变量和因变量(有Y),同时可以用于分类和回归。下来常见的算法都是监督学习算法。
- K近邻算法
- 线性回归
- logistic回归
- 支持向量机(SVM)
- 决策树和随机森林
- 神经网络
1.2 无监督学习
无监督学习的训练数据都是未经标记的,算法会在没有指导的情况下自动学习。
简单地说,就是训练数据只有自变量没有因变量(就是没有Y)。
无监督学习的常见算法如下:
聚类算法
K均值算法(K-means)
基于密度的聚类方法(DBSCAN)
最大期望算法
可视化和降维
主成分分析
核主成分分析
关联规则学习
Apriori
Eclat
比如说,我们有大量的购物访客的数据,包括一个月内的到达次数、购买次数、平均客单价、购物时长、购物种类、数量等,我们可以通过聚类算法,自动的把这些人分成几个类别,分类后,我们可以人工的把这些分类标记,如企业客户、家庭主妇等,也可以分成更细的分类。
另一种任务是降维,降维的目的在于不丢失太多的信息的情况下简化数据。方法之一就是讲多个特征合并为一个特征,特变是特征之间存在很大的相关性的变量。如汽车的里程和使用年限是存在很大的相关性的,所以降维算法可以将它们合并为一个表示汽车磨损的特征。这个过程就叫做特征提取。
另一个典型的无监督学习的是异常检测,如可以从检测信用卡交易中发现异常,并且这些异常我们实现没有标记的,算法可以自动发现异常。
1.3 半监督学习
有些算法可以处理部分标记的训练数据,通常是大量未标记的数据和少量标记的数据,这种成为半监督学习。
如照片识别就是很好的例子。在线相册可以指定识别同一个人的照片(无监督学习),当你把这些同一个人增加一个标签的后,新的有同一个人的照片就自动帮你加上标签了。
大多数半监督学习算法都是无监督和监督算法的结合。例如深度信念网络(DBN)基于一种相互堆叠的无监督式组件。
1.4 强化学习
强化学习是一个非常与众不同的算法,它的学习系统能够观测环境,做出选择,执行操作并获得回报,或者是以负面回报的形式获得惩罚。它必须自行学习什么是最好的策略,从而随着时间推移获得最大的回报。
例如,许多机器人通过强化学习算法来学习如何行走。AlphaGo项目也是一个强化学习的好例子。
二、批量学习和在线学习
2.1 批量学习
批量学习中,系统无法进行增量学习,即必须使用所有可用数据进行训练。这需要大量的时间和计算资源,所以通常情况下,都是离线完成的。离线学习就是先训练系统,然后将其投入生产环境,这时学习过程停止,它只是将其所学到的应用出来。
如果希望批量学习系统学习新数据,你需要在完整数据集的基础上重新训练一个新版本的系统,然后停用就系统,用新系统代替。
2.2 在线学习
在在线学习中,你可以循序渐进给系统提供训练数据,逐步积累学习成果。这种提供数据的方式可以是单独的,也可以采用小批量的小组数据进行训练,每一步学习都是快速并且便宜的,所以系统可以根据快速进入的数据进行学习的。
三、基于实例与基于模型的学习
另一种对机器学习系统进行分类的方法是看它们如何泛化。大多数机器学习任务是要做出预测,需要在未知的数据进行泛化。泛化的主要方法有两种:基于实例的学习和基于模型的学习。
3.1 基于实例的学习
系统先完全记住学习的示例,然后通过某种相似度度量方式将其泛化到新的示例。
3.2 基于模型的学习
从示例中构建示例的模型,通过模型进行预测。