机器学习概论
1 定义和组成元素
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.
首先注意到两个词 computer program 和 learn,翻译成中文就是机器 (计算机程序) 和学习,再把上面英译中:
假设用性能度量 P 来评估机器在某类任务 T 的性能,若该机器通利用经验 E 在任务 T 中改善其性能 P,那么可以说机器对经验 E 进行了学习。
在该定义中,除了核心词机器和学习,还有关键词经验 E,性能度量 P 和任务 T。
在计算机系统中,通常经验 E 是以数据 D 的形式存在,而机器学习就是给定不同的任务 T 从数据中产生模型 M,模型 M 的好坏就用性能度量 P 来评估。
由上述机器学习的定义可知机器学习包含四个元素
- 数据 (Data)
- 任务 (Task)
- 性能度量 (Quality Metric)
- 模型 (Model)
2 数据
数据 (data) 是经验的另一种说法,也是信息的载体。数据可分为
- 结构化数据和非结构化数据 (按数据具体类型划分)
- 原始数据和加工数据 (按数据表达形式划分)
- 样本内数据和样本外数据 (按数据统计性质划分)
2.1 结构化和非结构化
结构化数据 (structured data) 是由二维表结构来逻辑表达和实现的数据。
非结构化数据是没有预定义的数据,不便用数据库二维表来表现的数据。
非结构化数据
非结构化数据包括图片,文字,语音和视频
对于以上的非结构数据,相关应用实例有
- 增强学习的阿尔法狗 (AlphaGo) 对棋谱数据学习无数遍最终打败了围棋世界冠军李世石和柯洁
- 深度学习的卷积神经网络 (convolutional neural network, CNN) 对图像数据做人脸识别或物体分类
- 深度学习的循环神经网络 (recurrent neural network, RNN) 对语音数据做语音识别或机器对话,对文字数据做文本生成或阅读理解
结构化数据
机器学习模型主要使用的是结构化数据,即二维的数据表。非结构化数据可以转换成结构化数据,比如把
- 文本类数据用独热编码转成二维数组
- 图像类数据里像素张量重塑成一维数组
结构化数据的术语
- 每行的记录 (这是一场比赛詹姆斯的个人统计) ,称为一个示例 (instance)
- 反映对象在某方面的性质,例如得分,篮板,助攻,称为特征 (feature) 或输入(input)
- 特征上的取值,例如「示例 1」对应的 27, 10, 12 称为特征值 (feature value)
- 关于示例结果的信息,例如赢,称为标签 (label) 或输出 (output)
- 包含标签信息的示例,则称为样例 (example),即样例 = (特征, 标签)
- 从数据中学得模型的过程称为学习 (learning) 或训练 (training)
- 在训练数据中,每个样例称为训练样例 (training example),整个集合称为训练集(training set)
2.2 原始和加工
计算机处理数值型的结构型数据最有效率,但是现实世界到处出是原始数据,分为两类
- 非结构数据比如图片和文字型数据
- 结构型数据的分类型变量
2.3 样本内和样本外
在统计中,把研究对象的全体称为总体 (population),而把组成总体的各个元素称为个体,把从总体中抽取的若干个体称为样本 (sample)。
统计学中做的事情就是用样本数据的统计 (statistics) 来推出总体数据的参数 (parameter)。样本数据也叫做样本内数据,除样本内数据之外的总体数据叫做样本外数据。
在机器学习中,样本内和样本外数据的定义稍微有些不同,如下图:
样本内数据是用来训练模型的数据,也叫训练数据。它们是已知的,可计算统计的。
样本外数据是未来的没见过的新数据。它们是未知的,不可计算统计的。
机器学习在样本内数据训练模型用来预测:
- 样本内预测:根据训练模型对样本内数据进行预测,可与已知标签比较来评估模型表现
- 样本外预测:根据训练模型对样本外数据进行预测,不能与未知的标签比较
3 任务
根据学习的任务模式 (训练数据是否有标签),机器学习可分为四大类:
- 有监督学习 (有标签)
- 无监督学习 (无标签)
- 半监督学习 (有部分标签)
- 增强学习 (有评级标签)
深度学习只是一种方法,而不是任务模式,因此与上面四类不属于同一个维度,但是深度学习与它们可以叠加成:深度有监督学习、深度非监督学习、深度半监督学习和深度增强学习。
迁移学习也是一种方法,也可以分类为有监督迁移学习、非监督迁移学习、半监督迁移学习和增强迁移学习。
由于 Sklearn
里面模型主要处理「有监督学习」和「无监督学习」两类,我们接下来也只讨论这两类。
3.1 有监督学习
有监督学习 (supervised learning) 利用输入数据及其对应标签来训练模型。这种学习方法类似学生通过研究问题和参考答案来学习,在掌握问题和答案之间的对应关系后,学生可自己给出相似新问题的答案了。
在有监督学习中,数据 = (特征,标签),而其主要任务是分类和回归。
分类
如果预测的是离散值 (discrete value),例如比赛结果赢或输,此类学习任务称为分类 (classification)。
回归
如果预测的是连续值 (continuous value),例如詹姆斯效率 65.1, 70.3 等等,此类学习任务称为回归 (regression)。
3.2 无监督学习
无监督学习 (unsupervised learning) 是找出输入数据的模式。比如,它可以根据电影的各种特征做聚类,用这种方法收集数据为电影推荐系统提供标签。此外无监督学习还可以降低数据的维度,它可以帮助我们更好的理解数据。
在无监督学习中,数据 = (特征,)。
聚类
除了根据詹姆斯个人统计来预测骑士队输赢或者个人效率值外,我们还可以对该数据做聚类 (clustering),即将训练集中的数据分成若干组,每组成为一个簇 (cluster)。
聚类的用处就是可以找到一个潜在的原因来解释为什么样例 1 和 3 可以赢球。
降维
4 性能度量
回归和分类任务中最常见的误差函数以及一些有用的性能度量如下。
回归任务的误差函数估量在数据集 D 上模型的连续型预测值 h(x) 与连续型真实值 y 的距离,h(x) 和 y 可以取任意实数。误差函数是一个非负实值函数,通常使用 ED[h] 来表示。图表展示如下。
分类任务的误差函数估量在数据集 D 上模型的离散型预测值 h(x) 与离散型真实值 y 的不一致程度,惯例是 y 和 h(x) 取±1,比如正类取 1 负类取 -1。图表展示如下。
除上述损失函数之外,分类任务还有很多其他有用的性能度量。
错误率:分类错误的样本数占样本总数的比例称为错误率 (error rate),相应的分类正确的样本数占样本总数的比例称为精度 (accuracy)。在 10 个样本中有 2 个样本分类错误,则错误率为 20%,而精度为 80%。
查准率和查全率:错误率和精度虽然常用,但是不能满足所有任务需求。假定用训练好的模型预测骑士赢球,显然,错误率衡量了多少比赛实际是赢球但预测成输球。但是若我们关心的是“预测出的比赛中有多少是赢球”,或“赢球的比赛中有多少被预测出了”,那么错误率这个单一指标显然就不够用了,这时需要引进更为细分的性能度量,即查准率 (precision) 和查全率 (recall)。
5 模型
有监督模型如下图所示:
无监督模型包括各种聚类分析 (KMeans, DBSCAN)
、主成分分析 (PCA)
、独立成分分析 (ICA)
、隐含狄利克雷分配 (LDA)
等等