一、机器学习概览
1.1 什么是机器学习
机器学习是一门能够让系统从数据中学习的计算机科学
1.2 机器学习的优点(相比于传统编程)
机器学习非常利于:①不存在已知算法解决方案的复杂问题;②需要大量手动调整或是规则列表超长的问题;③创建可以适应环境波动的系统;④帮助人类学习(比如数据挖掘)
1.3 机器学习的分类
1.3.1 是否在人类监督下训练
- 监督式学习
监督式学习,我们给定算法一个数据集,其中包含了正确的答案,算法的目的就是给出更多正确答案;就像给算法一些散点,算法能够拟合出一条曲线,来给出更多的预测。
个人理解:提供标记过的数据供训练,或者说提供特征供计算机训练(特征 = 属性 + 其值 )
典型例子:垃圾邮件分类任务;回归任务(汽车的价格和报废年限的关系等)
常见类型:回归、分类
在机器学习里,属性是一种数据类型(例如“里程”);而特征取决于上下文,可能有多个含义,但是通常状况下,特征意味着一个属性加上其值(例如,“里程=15000”)。尽管如此,许多人还是会可交接地使用属性和特征这两个名词。
一些重要的监督式学习算法:
K-近邻算法(k-Nearest Neighbors)
线性回归(Linear Regression)
逻辑回归(Logistic Regression)
支持向量机(Support Vector Machines,SVM)
决策树和随机森林(Decision Trees and Random Forests)
神经网络(Neural networks)
- 无监督式学习
个人理解:提供没有标记过的数据供计算机训练
典型例子:为博客访问数据分类;异常检测(异常的信用卡都有哪些特征等);关联规则学习(发现买啤酒的人也会买尿布)
常见例子:
聚类、可视化、降维、关联规则学习
一些重要的无监督式学习算法:
- 聚类算法
- k-平均算法(k-Means)
- 分层聚类分析(Hierarchical Cluster Analysis,HCA)
- 最大期望算法(Expectation Maximization)
- 可视化和降维
- 主成分分析(PCA)
- 核主成分分析(Kernel PCA)
- 局部线性嵌入(LLE)
- t-分布随机近临嵌入(t-SNE)、
- 关联规则学习
- Apriori
- Eclat
- 半监督式学习
个人理解:提供少量的标记过得数据,和大量未标记的数据进行训练
典型例子:百度网盘照片分类,
- 强化学习
强化学习则是一个非常与众不同的“巨兽”。它的学习系统(在其语境中称为智能体)能够观察环境,做出选择,执行操作,并获得回报(reward),或者是以负面回报的形式获得惩罚,见图1-12。所以它必须自行学习什么是最好的策略(policy),从而随着时间推移获得最大的回报。策略代表智能体在特定情况下应该选择的操作。
典型例子:机器人学走路,AlphaGo
1.3.2 是否可以动态进行增量学习
- 批量学习
个人理解:学习和应用不能同时进行,想要迭代数据集,需要把所有数据都重新训练
- 在线学习 (增量学习)
个人理解:属于小步快跑的学习,“步频”还可以调整。响应速度快,但是总容量小(感觉描述不准确,待改正)
在线学习面临的一个重大挑战是,如果给系统输入不良数据,系统的性能将会逐渐下降。现在某些实时系统的客户说不定已经注意到了这个现象。不良数据的来源可能是,例如,机器上发生故障的传感器,或者是有人对搜索引擎恶意刷屏以提高搜索结果排名等。为了降低这种风险,你需要密切监控你的系统,一旦检测到性能下降,要及时中断学习(可能还需要恢复到之前的工作状态)。当然,同时你还需要监控输入数据,并对异常数据做出响应(例如,使用异常检测算法)。
1.3.3 如何泛化
- 基于实例的模型
系统先完全记住学习示例,如果新的数据和示例相似度大于某一个值就泛化
- 基于模型的学习
从一组示例集中实现泛化的另一种方法是构建这些示例的模型,然后使用该模型进行预测。这就是基于模型的学习
简而言之:
- 学习数据
- 选择模型
- 使用训练数据进行训练(即前面学习算法搜索模型参数值,从而使成本函数最小化的过程)。
- 最后,应用模型对新示例进行预测(称为推断),祈祷模型的泛化结果不错