机器学习基础知识
模型评估与参数选择
若对于给定的输入,若某个模型的输出偏离真实目标值,那么就说明模型存在误差;偏离的程度可以用关于和某个函数来表示,作为误差的度量标准:这样的函数称为损失函数。
在某种损失函数度量下,训练集上的平均误差被称为训练误差,测试集上的误差称为泛化误差。由于我们训练得到一个模型最终的目的是为了在未知的数据上得到尽可能准确的结果,因此泛化误差是衡量一个模型泛化能力的重要标准。
训练集可能存在以下问题:
- 训练集样本太少,缺乏代表性;
- 训练集中本身存在错误的样本,即噪声。如果片面地追求训练误差的最小化,就会导致模型参数复杂度增加,使得模型过拟合。
为了选择效果最佳的模型,防止过拟合的问题,通常可以采取的方法有:
- 使用验证集调参
- 对损失函数进行正则化
参数的选择(即调参)必须在一个独立于训练集和测试集的数据集上进行,这样的用于模型调参的数据集被称为开发集或验证集。
很多时候我们能得到的数据量非常有限。这个时候我们可以不显式地使用验证集,而是重复使用训练集和测试集,这种方法称为交叉验证。常用的交叉验证方法有:
- 简单交叉验证。
- K-重交叉验证。
正则化
为了避免过拟合,需要选择参数复杂度最小的模型。这是因为如果有两个效果相同的模型,而它们的参数复杂度不相同,那么冗余的复杂度一定是由于过拟合导致的。为了选择复杂度较小的模型,一种策略是在优化目标中加入正则化项,以惩罚冗余的复杂度:
其中为模型参数,$L\left( y,\hat{y};\theta \right) $ 为原来的损失函数,$J\left( \theta \right) $ 是正则化项, 用于调整正则化项的权重。正则化项通常为的某阶向量范数。
监督学习与非监督学习
模型与最优化算法的选择,很大程度上取决于能得到什么样的数据。如果数据集中样本点只包含了模型的输入,那么就需要采用非监督学习的算法;如果这些样本点以这样的输入-输出二元组的形式出现,那么就可以采用监督学习的算法。
监督学习算法主要适用于两大类问题:回归和分类。这两类问题的区别在于:回归问题的输出是连续值,而分类问题的输出是离散值。
度量分类问题的指标通常为准确率():对于测试集中个样本,有k个被正确分类,个被错误分类,则准确率为:
然而在一些特殊的分类问题中,属于各类的样本的并不是均一分布,甚至其出现概率相差很多个数量级,这种分类问题称为不平衡类问题。在不平衡类问题中,准确率并没有多大意义,我们需要一些别的指标。
通常在不平衡类问题中,我们使用F-度量来作为评价模型的指标。以二元不平衡分类问题为例,这种分类问题往往是异常检测,模型的好坏往往取决于能否很好地检出异常,同时尽可能不误报异常。定义占样本少数的类为正类(Positive class),占样本多数的为负类(Negative class),那么预测只可能出现4种状况:
将正类样本预测为正类(True Positive, TP)
将负类样本预测为正类(False Positive, FP)
将正类样本预测为负类(False Negative, FN)
将负类样本预测为负类(True Negative, TN)
定义召回率:
召回率度量了在所有的正类样本中,模型正确检出的比率,因此也称为查全率;
定义精确率(precision):
精确率度量了在所有被模型预测为正类的样本中,正确预测的比率,因此也称查准率。