机器学习的一些概念 有监督、无监督、泛化能力、过拟合欠拟合(方差和偏差理解)、交叉验证
有监督:使用带标注的数据
无监督:使用无标注的数据
泛化能力:除了训练集以外,对新样本的处理能力
欠拟合与过拟合:参考
我们在训练模型的时候有两个目标:
- 降低训练误差,寻找针对训练集最佳的拟合曲线。
- 缩小训练误差和测试误差的差距,增强模型的泛化能力。
这两大目标就对应机器学习中的两大问题: 欠拟合与过拟合。 具体来讲:
- 欠拟合是指模型在训练集与测试集上表现都不好的情况,此时,训练误差,测试误差都很大。
- 过拟合是指模型在训练集上表现良好,但在测试集上表现不好的情况,此时,训练误差很小,测试误差很大, 模型泛化能力不足。
来源:吴恩达课程
如上图所示, 左边这幅表示欠拟合,其不能很好的拟合所有的点;最右边这幅为过拟合,其太认真的拟合所有的点,导致模型的泛化能力很差。
偏差与方差 -- bias 与 variance
上文是从泛化的角度来谈,本节从数学角度来分析一下误差的两大来源:偏差与方差。
- 偏差指的是模型在训练集上的错误率, 如5%。其实是与训练误差成线性关系的。
- 方差指的是模型在开发集(或测试集)上的表现与训练集上的差距。如开发集的错误率比训练集差1%。其实是与 测试误差 - 训练误差 成线性关系的。
从偏差与方差的角度来分析模型常常会有四种情况:
- 偏差很低,方差很高: 意味着训练误差很低,测试误差很高,此时发生了过拟合现象。
- 偏差很高,方差很低: 意味着训练误差,测试误差都很高,此时发生了欠拟合现在。
- 偏差,方差都很高: 意味着此时同时发生了欠拟合和过拟合现象。
- 偏差很低,方差很低: 意味着训练误差很低,测试误差也很低,表示我们的模型训练的结果很好。
交叉验证,参考:
传统训练:The Validation Set Approach
最终模型与参数的选取将极大程度依赖于你对训练集和测试集的划分方法,可以看到不同的分类方法有不同的MSE值。
交叉验证:
LOOCV(留一验证)
如上图所示,假设我们现在有n个数据组成的数据集,那么LOOCV的方法就是每次取出一个数据作为测试集的唯一元素,而其他n-1个数据都作为训练集用于训练模型和调参。结果就是我们最终训练了n个模型,每次都能得到一个MSE。
最后模型的选取?n个模型怎么选?
K-fold Cross Validation(K折交叉验证)
K折交叉验证是留一验证的折中,和LOOCV的不同在于,我们每次的测试集将不再只包含一个数据,而是多个,具体数目将根据K的选取决定。可以把留一验证看作是n折的交叉验证
线性回归的原理
线性回归公式是 :
公式理解 :就是构造一个超平面,图中是2个自变量,所以构造2-1=1维超平面,构造的超平面力求到每个点最近。
线性回归损失函数、代价函数、目标函数,参考:
损失函数=代价函数 =>针对单个样本:
,是预测值,是真实值。
经验风险函数 =>针对总样本:
是损失函数的数学期望。
结构风险=正则化:
这个函数专门用来度量模型的复杂度,在机器学习中也叫正则化(regularization)。常用的有 L1,L2范数。
目标函数=经验风险+结构风险:
优化方法(梯度下降法、牛顿法、拟牛顿法等)
梯度下降:
牛顿法:
拟牛顿:
?待补?,参考
线性回归的评估指标
标注说明,参考
f表示预测值,y表示实际值
评价指标
MAE(Mean Absolute Error) 平均绝对误差
MSE(Mean Square Error) 平均平方差/均方误差是回归任务最常用的性能度量。
RMSE(Root Mean Square Error) 方均根差
缺点:因为它使用的是平均误差,而平均误差对异常点较敏感,如果回归器对某个点的回归值很不合理,那么它的误差则比较大,从而会对RMSE的值有较大影响,即平均值是非鲁棒的。