机器学习基础(二)

机器学习基础

学习算法

  机器学习算法是一种能够从数据中学习的算法。那所谓的学习是什么意思呢?Mitchell(1997)提供了一个简洁的定义:对于某类任务和性能度量P, 一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。原文如下:

A computer program is said to learn from experience E with respect to someclass of tasks T and performance measure P, if its performance at tasks in T, asmeasured by P, improves with experience E.

性能度量P

  为了评估机器学习算法的能力,我们必须有一套其性能的定量度量标准。通常性能度量P是根据执行的任务T制定的。

  对于诸如分类、输入缺失分类和Transcription任务,我们通常用准确率(accuracy)来度量模型的好坏。准确率是指该模型输出正确结果的样本占全部样本的比率。与其对应的概念是错误率(errorrate),其指的是该模型输出错误结果的样本占全部样本的比率。我们通常把错误率称为0-1损失的期望。在一个特定的样本上。如果结果是对的,那么0-1损失是0;否则为1.但是对于密度估计这类任务而言,度量准确率错误率或者其他类型的0-1损失是没有意义的。反之,我们必须使用不同的性能度量,使模型对每个样本都输出一个连续数值的得分。最常用的方法是输出模型在一些样本上 log-probability 的平均值(在计算机程序中采用对数概率有几个好处,速度、准确性、简单,详细见维基百科)。

  通常,我们会更加关注机器学习算法在未观测数据上的性能,因为这将决定其在实际应用中的性能。因此我们使用 测试集 (test set)数据来评估系统性能,测试集和用于训练机器学习系统的训练集数据是两个不同的集合,通常两者是一个由样本数据集按照一定规则划分而成的,测试集应该尽可能与训练集互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。

  性能度量准则的选择看上去非常简单且客观,但是选择一个与系统理想表现对应的性能度量准则一般来说是非常困难的。

  在某些情况下,这是因为我们很难去确定应该度量什么。例如,在Transcription任务中,我们是应该度量系统转录整个序列的准确率呢,还是应该用一个更细粒(fine-grained)的指标来对序列中的正确的部分元素以正面评价?(比如识别很多段音频,可能某段音频识别错了,但是这段音频中的很多句子或者词语识别是对的,只有个别的错了,如果单纯的从音频识别的准确率来评价这个模型显然是不够准确的) 在执行回归任务时,我们应该更多地惩罚频繁犯一些中等错误的系统,还是犯错很少但犯的是大错的系统?这些设计的选择都取决于具体的应用场景。

  还有一些情况,我们知道应该度量哪些指标,但是问题在于度量它们不太现实或者代价太大。这种情况经常出现在密度估计中。很多最好的概率模型只能隐式地表示概率分布。在许多这类模型中,计算空间中特定点的概率是不可行的。在这些情况下,我们必须设计一个仍然对应于设计对象的替代标准,或者设计一个良好的近似理想的标准。

学习资源 DeepLearning 5 Machine Learning Basics

未完待续
上一篇
作为一个机器学习的入门者,希望通过细读经典书籍,整理学习过程,最后得到能力的提升。

你可能感兴趣的:(DeepLearning)