监督式学习和无监督式学习
根据训练期间接受的监督数量和监督类型,可以将机器学习系统分为一下四个主要类别:监督式学习、无监督式学习、半监督式学习、强化学习。
监督式学习
在监督式学习中,提供给算法的包含所需解决方案的训练数据,称为标签或者标记。
分类任务是一个典型的监督式学习任务。垃圾邮件过滤系统就是一个很好的例子,通过大量的电子邮件示例以及其所属的类别(垃圾邮件或者常规邮件)进行训练,然后学习如何对新邮件进行分类。
还有典型的任务,是通过预测变量,也就是组给定的特征(里程、使用年限、品牌等)来预测一个目标数值,例如:汽车的价格。这种类型的任务称为回归任务。要训练这样一个系统,需要提供大量的汽车示例,包括他们的预测变量和标签(也就是它们的价格)。
- 在机器学习里,属性是一种数据类型;而特征取决于上下文,可能有很多个含义,但是通常状况下,特征意味着一个属性加上其值。
一些回归算法也可以用于分类任务,反之亦然。例如:逻辑回归就被广泛地用于分类,因为它可以输出“属于某个给定类别”的概率。
这里是一些最重要的监督式学习的算法:
- K-近邻算法(k-Nearest Neighbor)
- 线性回归(Linear Regression)
- 逻辑回归(Logistic Regression)
- 支持向量机(Support Vector Machines,SVM)
- 决策树和随机森林(Decision Trees and Random Forests)
- 神经网络(Nerual network)
无监督学习
无监督式学习的训练数据都是未经标记的。
这里列出一些最重要的无监督式学习的算法:
- 聚类算法:
- k-平均算法(k-Means)
- 分层聚类算法(Hierarchical Cluster Analysis)
- 最大期望算法(Expectation Maximization)
- 可视化和降维:
- 主成分分析(PCA)
- 核主成分分析(Kernel PCA)
- 局部线性嵌入(LLE)
- t-分布随机近邻嵌入(t-SNE)
- 惯量规则学习:
- Apriori
- Eclat
通过聚类算法来检测访问博客的相似的访客,并进行分组,无法告诉这个算法每个访客属于哪个分组——希望算法自己去寻找这种关联,而无需我们的帮助,例如:算法可能注意到40%的访客喜欢夜晚访问博客、20%的访客喜欢阅读科幻小说。如果使用层次聚类算法,还可以将每一组分成更小的组。
可视化算法也是无监督式学习算法的好例子。提供大量复杂的、未标记的数据,得到轻松绘制而成的2D或者3D
的数据呈现作为输出。这些算法会尽其所能的保留更多的结构(例如:尝试保持让输入的单独集群在可视化中不会重叠),便于理解这些数据是如何组织的,甚至识别出一些特殊的模式。
与之相关的另一个任务是降维,目的是在不丢失太多信息的前提下,简化数据。方法是将多个特征合并为一个。
例如:汽车的历程与汽车的使用年限有很强的相关性,降维算法会将其合并成为一个代表汽车磨损的特征。这个过程叫作特征提取。
- 通常比较好的做法是,先使用降维算法减少训练的训练数据的维度,再将其提供给另一个机器学习算法(例如:监督式学习算法)。这会使他运行的更快,数据占用的磁盘空间和内存都会更小,执行性能可能也会更好。
另一个很重要的无监督式任务式异常检测,例如:检测异常信用卡从而防止欺诈行为,或者是在提供数据给一种机器学习算法之前,自动从数据集中移除异常值。系统使用正常的实例进行训练,然后看到新的实例时,他就可以判断出新的实例时正常还是异常。
最后,还有一个常见的无监督式任务时关联规则学习,其目的是挖掘大量数据,发现属性之间有趣的联系,例如:购买了牛排的人也很喜欢购买薯片。
半监督式学习
这些算法可以处理部分标记的训练数据——通常是大量未标记的数据和少量标记的数据,这被称为半监督学习。
照片托管服务就是很好的例子,例如:Google相册,算法中的无监督部分会先自动识别出人物A出现在了照片1、2、4中,人物B出现在了照片4、6、7中,我们只需要标记这些出现在不同照片中同一个人的名字,他就可以给每个照片的每个人命名,便于图片的搜索。
大多数半监督式学习算法是无监督式与监督式算法的结合,例如:深度信念网络(DBN)。它基于一种互相堆叠的无监督式组件,这个组件叫作受限玻尔兹曼机(RBM)。受限玻尔兹曼机以无监督的方式进行训练,然后使用监督式学习对整个系统进行微调。
强化学习
强化学习的学习系统能够观察环境,做出选择,执行操作,并获得回报,或者是以负面回报的形式获得惩罚。
他必须自行学习什么是最好的策略,从而随着时间的推移获得最大的回报。策略代表强化学习算法在特定情况下应该选择的操作。
目前,许多机器人通过强化学习算法来学习如何行走,AlphaGo和DeepMind也是强化学习的好例子。