责任编辑约6000字,提议写作10+两分钟
责任编辑以Grignols的方式Kangra演算法中的软件系统自学,以及对集中自学在广度自学中的应用领域进行了详尽阐释。
产品目录
电脑自学概要learning from data甚么是电脑自学电脑自学类别Supervised learning 监督管理自学Unsupervised learning 无监督管理自学Reinforcement learning 加强自学电脑自学的过程怎样来衡量两个数学模型的优劣OverfittingTraining, Testing, and Validation SetsThe Confusion MatrixAccuracy Metrics此基础的统计数据挖掘过插值overfittting和欠插值underfittingbias and variance电脑自学概要
learning from data在研讨该主轴以后,让他们后退一步棋,思索呵呵或者说的自学是甚么。他们需要为电脑考量的关键性基本概念是learning from data。人类文明和其它鸟类能通过自学实战经验来修正他们的 犯罪行为。learning突显他们生活的稳定性,他们能修正适应环境捷伊情形,并自学捷伊基本功。人类文明自学的重要部分是remembering, adapting, and generalising:认识到上一次他们处在这种情形下(看到了此统计数据),他们试著了一些某一的姿势(得出了此输入)因此见效了(恰当),因此他们将再度试著,如果难以见效,他们将试著其它操作方式。德圣茹,最后一句话是有关辨识相同情形之间的关联性,以期将在两个地方性应用领域的小东西能在另两个地方性采用。这是learning管用的其原因,他们能在许多相同的地方性采用他们的科学知识。
甚么是电脑自学只好,电脑自学是要使计算机系统修正或修正姿势,让这些姿势显得更为精确,它的精确度是由所选姿势与恰当姿势的相近某种程度来来衡量。
其本质是让计算机系统learning from data。
正式定义:
Machine Learning is about building systems that can learn from data. Learning means getting better at some task, given some performance measure.
电脑自学类别
他们将learning宽松地定义为通过在某项任务上的练习显得更好。这就引出了两个重要的问题:计算机系统怎样知道是否在变好,怎样知道怎样改进?这些问题有几种相同的可能答案,它们会产生相同类别的电脑自学。现在,我们将考量电脑是否在自学: 他们能告诉演算法问题的恰当答案(带标签),以期下次能恰当解决;他们希望只需要告诉它一些恰当的答案,然后它就能“解决”怎样为其它问题获得恰当的答案;或者,他们能告诉它答案是否恰当,而不是怎样找到恰当的答案,因此它必须搜索恰当的答案;他们根据答案的恰当性给答案打分(概率),而不仅仅是“恰当或错误”的答案;最后,他们可能没有恰当的答案,他们只希望演算法查找具有共同点的输入。
这些相同的答案为他们将要讨论的相同演算法提供了分类。
Supervised learning 监督管理自学监督管理自学提供了具有恰当答案(targets/标签)的示例训练集,因此基于该训练集,演算法能概括为恰当响应所有可能的输入,这也称为learning from exemplars。
一些典型的监督管理自学演算法有:
k近邻线性回归逻辑回归SVM决策树和随机森林神经网络Unsupervised learning 无监督自学无监督管理自学未提供恰当的响应,而是演算法试著辨识输入之间的关联性,以期将具有共同点的输入归类在一起。用于无监督管理自学的统计方法称为密度估计(density estimation)。
一些重要的非监督管理自学方法:
聚类可视化和降维关联性规则Reinforcement learning 加强自学加强自学这是在监督管理自学和无监督管理自学之间的某个地方性。当答案错误时,系统会告知该演算法,但不会告诉你怎样更正该演算法。它必须探索并试著各种可能性,直到找到恰当的答案。加强自学有时被称为与批评者一起自学,因为该监视器能对答案进行评分,但不能提出改进提议。
电脑自学的过程
统计数据收集和准备:通常很难收集,要么是因为它需要进行许多测量,要确保它是干净的;它没有重大错误,缺少统计数据等,需要考量统计数据量。电脑自学演算法需求大量的统计数据,最好没有太多的噪音,但是增加了统计数据集的大小增加了计算成本,因此用足够的统计数据达到了最佳效果而没有过多的计算开销通常是不可能的。特征选择: 这个始终需要事先了解问题和统计数据;演算法根据给定的统计数据集,选择合适的演算法。参数和数学模型选择:对于许多演算法,有一些参数能必须手动设置,或者需要进行实验才能确定适当的值。训练给定统计数据集,演算法和参数:训练应该简单地采用计算资源以建立统计数据数学模型以进行预测新统计数据的输入。评估: 在部署系统以后,需要对其进行测试和评估以确保其性能, 对未经训练的统计数据的精确度计算。怎样来衡量两个数学模型的优劣
learning的目的是更好地预测输入。知道演算法成功自学的唯一真实方法是将预测与已知的目标标签进行比较,这是针对监督管理自学进行训练的方式。这表明你能做的一件事是仅查看演算法对训练集train set造成的错误error。但是,他们希望演算法能推广到训练集中没有看见的统计数据,因此显然他们难以采用训练集对其进行测试(因为统计数据已经被看见过了)。因此,他们还需要一些相同的统计数据(两个测试集test set)来对其进行测试。他们通过输入测试集(input, target) 对到训练好的网络中,并将预测的输入与目标进行比较,不做权重或其它参数修正:他们采用它们来确定演算法的性能怎么样。这样做唯一的问题是它减少了他们可用于训练的统计数据量,但这是他们必须忍受的。
Overfitting但实际情形要比上面的描述要复杂,他们可能还想要了解演算法在自学过程中的一般性: 他们需要确保进行足够的训练以使演算法有很好的一般性。实际上,过度训练的危险与训练不足中的危险一样大。在大多数电脑自学演算法中,可变性的数量是巨大的-对于神经网络,权重许多,因此每个权重都能变化。因此他们需要小心:如果训练时间太长,那么他们将过度插值统计数据,这意味着他们已经自学了统计数据中的噪声和不精确度。因此,他们自学的数学模型太复杂了,难以推广。
在自学过程中有两个相同的点。在图的左侧,曲线很好地插值了统计数据的总体趋势(已将其推广到基本的通用函数),但是训练误差不会接近于零。但是右图,随着网络的不断自学,最终将产生两个更复杂的数学模型,该数学模型具有较低的训练误差(接近于零),这意味着它已经记住了训练示例,包括其中的任何噪声成分,因此已经过插值训练统计数据。
验证集的出现
他们想在演算法过插值以后停止自学过程,这意味着他们需要知道它在每个时间步上的推广某种程度。他们不能为此采用训练统计数据,因为它是用来训练参数的,他们不会检测到过度插值;他们也不能采用测试统计数据,它是用来看数学模型性能的,他们将其保存为最终测试。因此,他们需要用于此目的的第三组统计数据,称为验证集validation set,因为到目前为止他们正在采用它来验证自学,这被称为统计中的交叉验证cross-validation。这是数学模型选择model selection的一部分:为数学模型选择恰当的参数,以期尽可能地泛化。
Training, Testing, and Validation Sets相同统计数据集的作用现在,他们需要三组数据:
训练集train set: 用于实际训练演算法的训练集,把它拿来做函数插值,使得数学模型好一点。验证集validation: 用于跟踪演算法自学情形, 观察函数好不好修正(改数学模型的时候依赖它),每次训练完后把数学模型拿到它的上面去测试呵呵看看数学模型好不好,用于没见过的统计数据,防止数学模型过插值,虽然没有训练数学模型,但是改数学模型是依据数学模型的,对于数学模型来说,validation实际上是见过的,测试或者说的效果应该给数学模型从来没有见过的统计数据。测试集test set: 当他们的数学模型都能忍受两个值的时候就定了,最后一步棋是拿test来数学模型上作用看最终的看优劣(用过一次就不用第二次)。如果test统计数据上了效果还是不好,就要重新选择这三个统计数据了,因为test统计数据集已经被见过了。统计数据集划分每种演算法都需要一些合理量的统计数据去自学(精确度有所相同,但是演算法看见的统计数据越多,看见每种可能输入类别的示例的可能性就越大,尽管更多的统计数据也会增加计算时间)。
平衡的分配
一般来说,统计数据划分比例取决于你,如果有大量统计数据,通常执行2:1:1,否则进行3:1:1。拆分方式也很重要。如果你选择前几个作为训练集,接下来选择测试集,依此类推,那么结果将是非常糟糕的,因为训练没有看见所有的类别。这能通过以下方法解决:首先对统计数据进行随机重新排序,或者将每个统计数据点随机分配给一组统计数据,如下图。
缺乏训练统计数据
如果你确实缺乏训练统计数据,那么如果你有单独的验证集,可能会担心算法将难以得到充分训练;那么就能执行leave-some-out, multi-fold cross-validation。这个想法如下图所示。统计数据集被随机分为K个子集,两个子集用作验证集,而演算法对其他所有统计数据进行训练。然后遗漏另两个子集,并在该子集上训练两个新数学模型,并对所有相同的子集重复相同的过程。最后,测试并采用产生最小验证误差的数学模型。由于他们不得不训练K个相同的数学模型,而不仅仅是两个数学模型,因此他们权衡了统计数据的运行时间。在最极端的情形下,存在留一法交叉验证,该演算法仅对一项统计数据进行验证,并对其余所有统计数据进行训练。
The Confusion Matrix无论他们采用多少统计数据来测试训练过的演算法,我们仍然需要确定结果是否良好。他们将在这里介绍一种适用于分类问题的方法,称为混淆矩阵。
混淆矩阵:制作两个包含水平和垂直方向上所有可能类别的方矩阵,并沿着表格顶部列出这些类别作为预测输入,然后在左侧向下列出目标类别。
因此,例如矩阵(i,j)的元素告诉他们输入的统计数据中,本来是i类的,结果演算法判别它呈j类的统计数据有多少个。演算法判断对的统计数据是对角线上的任何内容。假设他们有三个类:C1,C2和C3。现在,他们计算次数,当类别是C1时候,演算法判别它是C1的次数,判别它是C2的次数,等等。直到填写完表格:
该表告诉他们,对于这三个类,大多数示例已恰当分类,但是C3类的两个示例被错误分类为C1,依此类推。对于类少的时候,这是查看输入的好方法。如果只需要两个数字,则能将对角线上的元素之和除以矩阵中所有元素的总和,这是所谓的精确度accuracy,他们将看见它并不是评估电脑自学演算法结果的唯一方法。
Accuracy Metrics他们不仅能测量精确度,还能做更多分析结果的工作。如果考量这些类的可能输入,则能将它们安排在这样的简单图表中,ture positive是真实情形,predicted condition 是预测情形,condition positive是真实情形是真的,condition negative是真实情形是假的,predicted condition positive是预测情形是真的,predicted condition negative是预测情形是假的。
就像混淆矩阵一样,此图表的对角线上的输入是恰当的(预测情形和真实情形一致),而副对角线上的输入则是错误的(预测情形和真实情况不一致)。
只好精确度定义:
精确度的问题在于,它难以告诉他们结果的所有信息,因为它将四个数字变成两个。有一些互补的测量值能帮助他们解释分类器的性能,即 sensitivity 和 specificity 以及 precision 和 recall。接下来显示它们的定义,然后进行一些解释。
sensitivity(也称为true positive rate)是恰当的阳性样本与分类为阳性的样本之比。specificity 是恰当的阴性样本与分类为阴性的样本之比。precision 是恰当的阳性样本与实际阳性样本数量的比率,预测恰当的值中,或者说预测恰当的是对少,精确率是多少。recall 是分类为阳性的阳性样本中恰当阳性的样本数量的比率,这与sensitivity相同。所有正的值中,实际找到它多少个。如果再度查看该图表,你会发现 sensitivity 和 specificity 的分母是各列的和,而 precision 和 recall 的分母是第一列和第一行的和,因此错过了一些在否定示例中的信息。
总之,这些任何两个都提供了更多的信息,而不仅仅是精确度。如果你考量 precision 和 recall,你会发现它们在某种某种程度上是负相关的,因为如果 false positive 的数量增加,那么 false negative 的数量通常会减少,反之亦然。能将它们组合在一起以得出两个单独的度量标准,即F1度量标准:
以及就false positive的数量而言
此基础的统计数据挖掘
如果统计数据是数字类别,能提前做两个统计数据挖掘,以下几个量是比较常见的:
中位数: 统计数据从小到大排列,最中间的数字是中位数。众数: 统计数据中出现次数最多的数字。百分位数: 如果将一组统计数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应统计数据的值就称为这一百分位的百分位数。标准差,方差: 来衡量统计数据的分布均衡不均衡。统计数据的标准化normalization:以前的统计数据差距大,通过标准化,将它们的差距缩小,这样使得程序更好的计算,统计数据集和测试集都要标准化。异常值outline: 异常值的定义方法有许多,一种方法是比25%的1.5倍还小或75%的1.5倍(大太多了)还大,是异常值。过插值overfittting和欠插值underfitting过插值overfittting: 训练统计数据上效果非常好,没见过的统计数据就不行 。
欠拟合underfitting: 训练统计数据上的效果都不怎么行。
过插值发生在相对于训练统计数据的量和噪声,数学模型过于复杂的情形。可能的解决办法有:
简化数学模型,能通过选择两个参数更少的数学模型(比如线性数学模型,而不是高阶型让它更简单,正则化。欠插值发生在你的数学模型过于简单的时候,可能解决的办法有:
选择两个更复杂的数学模型,带有更多的参数。用更好的特征训练自学演算法(特征工程)。减小Kangra的限制(比如减小正则化超参数)。电脑学习重点解决的事情怎样克服overfitting和underfitting。在统计学中,underfitting和overfittting是bias and variance。
bias and variancebias: 随着数学模型复杂度的上升,错误有一些变化。数学模型不够完整,没有把相关的特性挖掘出来。这种情形叫bias。
variance: 对训练统计数据太过敏感,统计数据稍微一变就会产生错误。
上图的意思:
随着数学模型的复杂度越来越高,overfitting的情形会越来越多(variance),underffting的情形越来越小。期望达到对于现有的统计数据比较好,对于预期的统计数据也比较好。参考资料
Hands on TensorFlow统计自学方法Machine learning: an algorithmic perspectiveLearning from data编辑:王菁
校对:林亦霖
—完—
想要获得更多统计数据统计数据派THU ”。