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 来评估计算机程序在某类任务的性能,若一个程序通利用经验 E在任务 T 中改善其性能,我们就说关于性能度量 P 和任务 T,程序对经验 E 进行了学习。 在该定义中,除了核心词机器和学习, 还有关键词经验 E,性能度量 P 和任务 T。在计算机系统中,通常“经验”是以“数据”形式存在,而机器学习就是给定不同的任务从数据中产生模型的算法,即“学习算法” (leanring algorithm)。于是两个问题应运而生:
好奇不?想学不?接下来三节我会从数据,任务和性能度量三个方面高层的介绍机器学习。你不需要了解任何算法就可以理解它们,它们非常简单但又非常重要。 2. 数据2.1 干净数据 对于任何模型,“垃圾进垃圾出” (GIGO, garbage in garbage out) 这个公理永远成立。如果用于建模的算法基于的数据是没有代表性,低质量,不干净的等等,那就千万不要浪费时间建模而首要事情是处理数据 (tidy data)。处理数据是一门很深的学问,今后在《数据科学》那个课题下我在会详细描述。在《机器学习》这个课题下,我们主要还是关注算法,因此假设数据是有代表性高质量的。对于一个大问题,这样假设其他环节没问题,一次集中解决一个环节到最后再总结整合会更高效些。 假设我们收集了勒布朗詹姆斯 (Lebron James) 在最近四场的数据,如下图。 根据大神 Hadley Wickhan 在他 2014 年在 Tide Data 文中对干净数据的定义:
上面表格中的数据是干净的。 2.2 术语 下面术语大家在深入了解机器学习前一定要弄清楚:
假设我们想学习的问题是詹姆斯的得分篮板助攻到达什么水平可以帮助骑士赢球?我们可以在上表加多一列数据标记“输赢”,见下图。 咋一看可以发现先好像詹姆斯助攻上10就可赢球,反之得分再多也不行。这也合理,因为助攻多就让队友全部参与整个队配合就流畅,赢球也不奇怪了。但是这个只是第一眼直觉 (hunch),不是模型。如果希望学到一个根据詹姆斯个人统计来判断骑士输赢的模型,我们须获得一个结果信息 (输赢),如 [[得分 = 27, 篮板 = 10, 助攻 = 12], 赢]。 更多术语:
所有东西浓缩为一张图如下: 2.3 数学符号 接下来是数学符号 (mathematical notation),我个人喜欢用一致性的符号,在接下来算法研究的帖子里,我都会用本贴定义的符号。如果你现在不想看可以跳过不影响整篇的阅读,以后随时需要可以查阅本贴。 通常令 表示包含 m 个样例的输入变量和输出变量。每个示例由 d 个属性描述 (例如詹姆斯个人统计使用了 3 个属性),则每个示例 是 d 维的一个向量,其中 x(i)j 是 x(i) 在第 j 个属性上的取值 (例如詹姆斯第 3 场在第 2 个属性上的值是 10),而 y(i) 是示例 x(i) 的标记。一般的,用 (x(i), y(i)) 表示第 i 个样例,而 {(x(i), y(i)); i = 1,2, ..., m} 表示训练集。 所有东西浓缩为一张图如下: 3. 任务根据训练数据是否拥有标记,学习任务可大致分两类:监督学习 (有标记) 和无监督学习 (无标记)。还有一种叫强化学习 (有一些评级标记)。我们先把注意力放在前两个。 3.1 监督学习 (supervised learning) 在监督学习中,数据不包含输出变量或标记,而其主要任务是预测和分类。以上述詹姆斯为例:
在分类任务中:
3.2 无监督学习 (unspuervised learning) 在无监督学习中,数据包含输出变量或标记,而其主要任务是发掘模式。除了根据詹姆斯个人统计来预测骑士队输赢或者他个人效率值,我们还可以对他做“聚类” (clustering), 即将训练集中的数据分成若干组,每组成为一个“簇” (cluster)。比如生成了下面四个簇:
聚类一个用处就是可以找到一个潜在的原因来解释为什么詹姆士在第 2, 3 种情况不是最有价值球员。难道真的是 defense wins MVP? Just saying ... 4. 性能度量 (performance measure)对模型进行评估,不仅需要有效可行的实验估计方法,还需要衡量模型泛化能力的评价标准,称之为性能度量。性能度量是个任务相关的,接下来我们就拿监督学习里的回归和分类任务和无监督学习里的聚类任务为例,来给出它们相对应的性能度量。 4.1 回归任务 (regression) 在回归任务中,给定训练数据集 要评估模型 h 的性能,就要把模型预测结果 h(x) 与真实标记 y 进行比较。回归任务最常用的性能度量是“均方误差” (MSE, mean square error) 4.2 分类任务 (classification) 精度和错误率 (accuracy & error) 通常我们把分类错误的样本数占样本总数的比例称为“错误率” (error),相应的分类正确的样本数占样本总数的比例称为“精度” (accuracy)。假设在 m 个样本中有 a 个样本分类错误,则错误率为 a/m,而精度为 1 - a/m。 查准率和查全率 (precision & recall) 错误率和精度虽然常用,但是不能满足所有任务需求。以詹姆斯问题为例,假定我们用训练好的模型预测骑士赢球,显然,错误率衡量了多少比率的比赛实际是赢了但判断成输了。但是若我们关心的是“预测出的比赛中有多少比例是赢球”,或者“赢球的比赛中有多少被预测出来了”,那么错误率显然就不够用了,这是需要使用其他的性能度量,也就是“查准率” (precision) 和“查全率” (recall)。有人也称它们为准确率和召回率,但我觉得前者定义更直观,因为查准率就是查准的 (查出东西多少是有用的不就是准吗?),而查全率就是查全的 (有用的东西有多少被查出不就是全吗?)。 对于二分类问题,可将样例根据其真实类别与模型预测类别的组合划分为真正例 (true positive, TP),真反例 (true negative, TN), 假正例 (false positive, FP) 和假反例 (false negative, FN)。其中
一旦你捋顺上诉绕口 (mouthful) 的划分,下图的意义不言而喻;如果没有捋顺,希望下图能直观的帮助你。 著名的“混淆矩阵” (confusion matrix) 如下表:(这名字起得真TM好,混淆死我了) 查准率 P 和查全率 R 定义如下: P = TP / (TP + FP) R = TP / (TP +FN) 查准率和查全率是一对矛盾的度量。一般来说:
比如,打三国杀时,你是主公,你想杀反贼而不错杀忠臣,你可以只选最有把握的杀,就是不杀任何人,因此查准率 100% 而查全率 0%; 或者你想杀掉所有反贼,你可以通过增加杀人的数量把所有人杀了,这样你的确杀掉所有反贼了,因此查全率 100% 而查准率 60% (假设6人场1主公1忠1内3反)。通常在一些非常简单的任务或者你作弊时,查准率和查全率都很高。比如你知道每个人的身份牌,那你当然一杀一个准直到清场,查准率和查全率都是 100%。 F1 度量 F1 度量是基于查准率和查全率的调和平均 (harmonic mean) 定义的: 跟算术平均 (arithmetic mean, P+R) 和几何平均 (geometric mean, sqrt(PR)) 相比,调和平均更重视较小值。可从上式左边部分看出,P 和 R 都在分母位置,较小那个的变动比较大那个的变动对 F1 值影响更大些。F1 度量的一个弊端是对查准率和查全率重视程度相同,但是在实际的机器学习问题中,我们通常会对查准率和查全率有不同的重视程度。比如:
为了区分不同重视程度,我们介绍一个 F1 度量一个一般形式 Fβ 其中 β 度量了查准率和查全率的相对重要性,根据公式有
4.3 聚类任务 (clustering) 聚类任务是将全部数据集划分为若干互不相交的子集,即蔟。那么什么样的聚类结果比较好呢?直观来讲,我们希望物以类聚,即同一簇的样本尽可能彼此相似,而不同簇的样本尽可能不同。换言之,聚类结果的“簇内相似度” (intra-cluster similarity) 要高而“簇外相似度” (inter-cluster similarity) 要低。 聚类的性能度量有两类。一类是将聚类结果与某个参考模型比较,称为“外部指标” (external index) 比如 Jaccard 系数,FM 指数和 Rand 指数; 另一类是直接考察聚类结果而不利用任何模型,称为“内部指标” (internal index) 比如 DB 指数和 Dunn 指数。作者会在专门讲聚类任务时细讲这些度量指标。 对于相似度计算,通常我们会用两种“距离度量” (distance measure),欧式距离 (Euclidean distance) 和余旋相似 (cosine similarity): 前者计算的距离是没有单位化的,后者计算的相似度是有单位化的。单位化 (normalization) 有好处也有坏处:
|
|
来自: taotao_2016 > 《物理》