机器学习几个算法常识

转自

欠拟合与过拟合

  • 错误率 error rate:分类错误的样本/总样本数
  • 准确率 accuracy:1-错误率
  • 训练误差 train error:模型在训练集上的误差
  • 测试误差 test error:测试集上的误差
  • 泛化误差 generalization error:在假设测试数据与真实数据独立同分布的前提下,测试误差可作为泛化误差的近似,泛化误差的期望会大于等于训练误差的期望

减小泛化误差

  1. 降低训练误差——欠拟合
  2. 缩小训练误差和泛化误差的差距——过拟合

过拟合原因

  1. 训练集和测试集分布不一致
  2. 训练集的数量级和模型的复杂度不匹配,训练集的数量级小于模型的复杂度
  3. 样本里的噪音数据干扰过大,大到模型过分记住了噪音特征,反而忽略了真实的输入输出间的关系

没有免费的午餐定理 No Free Lunch Theorem ,NFL:无论设想到的最先进的算法还是笨拙的算法,它们的期望性能其实都是相同的(前提,在所有可能出现的数据分布上)

机器学习研究的目标不是找一个通用学习算法或是绝对最好的学习算法。反之,我们的目标是理解什么样的分布与机器学习获取经验的“真实世界”相关,什么样的学习算法在我们关注的数据生成分布上效果最好

泛化误差=偏差+方差

偏差度量了学习算法的期望预测与真实结果偏离程度,即刻画了学习算法本身的拟合能力

方差度量了同样大小的训练集的变动所导致的学习性能的变化,及刻画了数据扰动所造成的影响,或者说算法的稳定性

偏差和方差是有冲突的,当模型复杂度较低时,模型的偏差较高,方差较低;当模型复杂度较高时,模型的偏差较低,方差较高

假设:

  1. 分类器模型在训练集上的错误率为1%,测试集上的错误率为11%,估计它的偏差为1%,方差为11%-1%=10%,明显过拟合了,下一步优化时应考虑降低方差;
  2. 分类器模型在训练集上的错误率为15%,测试集上的错误率为16%,估计它的偏差为15%,方差为16%-15%=1%,明显欠拟合了,下一步优化时应考虑降低偏差。

贝叶斯误差

最优误差,现有技术下人和机器能做到的最好的情况下,出现的误差

偏差=贝叶斯误差+可避免偏差

假设:训练了一个分类器模型,在训练集上的错误率有15%,在测试集上的错误率有30%,如果说贝叶斯误差为14%,那么可避免误差有(30%-15%)-14%=1%,方差有30%-15%=15%,这时候应该考虑如何降低方差,而不是降低偏差

降低偏差和方差的办法

降低模型的偏差

  1. 增加新特征:挖掘组合特征、上下文特征、ID类特征
  2. 增加模型复杂度:在线性模型中增加高次项、在神经网络中增加网络层数或神经元个数
  3. 减少或去除正则化系数:L1、L2、dropout

降低模型的方差

  1. 增加更多的训练数据
  2. 降低模型的复杂度:决策树模型中降低树的深度、进行剪枝
  3. 加入正则化:使用正则化能够给模型的参数进行一定的约束,避免过拟合