机器学习笔记——机器学习建议与误差分析

建议

在实践过程中我们经常会发现我们的建模不合适,那么这种情况我们应该对我们模型的参数进行调整呢

评估假设

我们首先要做的就是对我们建立的模型进行评估,来判断模型拟合是否合适。我们将利用训练集求出来的网路参数θ应用在测试集上得到的误差叫做测试集误差,这个误差越小代表建模越合适

验证集

为了选择一个合适的模型,我们需要尝试多种多项式来保证我们既不会过拟合也不会欠拟合。方法就是求出各种假设函数的测试集误差来选择最小误差对应的假设函数

但是这种用根据测试集误差选出来的假设函数很可能是对一般误差的一种乐观估计,因此我们还需要一个不想关的测试集来对这个假设函数进行函数。为此我们将数据分为训练集、验证集、测试集三个部分。选择参数的过程我们在验证集上做

偏差与方差

我们对欠拟合与过拟合又有另一个名字:高偏差与高方差

我们可以看出当假设函数由低次到高次渐变的过程中测试集误差与训练集误差的变化情况。也正是从这个曲线中我们可以判断我们的假设函数是过拟合还是欠拟合了。高偏差对应的是测试集误差与训练集误差都高,高方差对应的是测试集误差高,训练集误差低

正则化

我们之前讲到过正则化,正则化前面的系数也跟过拟合/欠拟合有关,正则化系数越大,代表着欠拟合越严重;系数越小代表过拟合严重

同样我们可以像选择假设函数多项式最高次幂的方法一样不断调整正则化系数λ来取得最合适的拟合效果

同样我们也可以根据训练集误差和测试集误差来判断λ是过大还是过小

学习曲线

除了上述方法,我们还可以通过学习曲线来判断拟合效果

对于高偏差来说,随着训练集数量增加,测试集误差与训练集误差将靠的很近,因为多项式的次幂限制了曲线继续演进,从而使测试集误差与训练集误差都维持在一个较高的值

对于高方差曲线来说,训练集误差维持在一个较低的值,测试集误差维持在较高的值,但是随着训练集增加,这个间隔会越来越小

下一步

在有了之前的铺垫以后我们就可以很好的决定下一步做什么了,我们可以根据曲线是过拟合还是欠拟合来进行选择下一步尝试方法

大数据原理

我们经常听到说“It's not who has the best algorithm that wins, its who has the most data.”那我们应该如何构建一个高精度的系统呢,保证大数据能够应用在好的算法上呢?首先我们得保证我们已经获得一组数据中足够多的特征,判断标准就是人类是否能根据这些特征做出判断

足够多的特征保证了我们不会欠拟合,也就意味着训练集误差会比较低,之后我们通过增大数据量,来使测试集误差逼近训练集误差来保证我们的算法有很好的精度与普适性

误差分析

当我们要对一个很复杂的模型建模的时候我们往往是先用几天的时间建立一个很简单的模型来判断误差的大小,再通过画出学习曲线等方法来决定是否需要增加特征或是增加测试集数量等等

不对称分类

对于两种十分不对称的分类,我们采用传统的误差分析(即错误率)不能很好地验证算法的有效性。比如我们得到了一个错误概率为1%的算法,但是实际上只有0.5%的病人,那么我们只需要做出所有人都不得病的判断就能获得错误率为0.5%的算法,但是这显然是一种不合理的算法。这也就意味着我们需要一个新的评判标准

我们可以用精准率与召回率这两个参数来进行度量。精准率代表判断为病人的人中真正得病的人的比例;召回率代表实际得病的人中被诊断出有病的人的比例

我们可以通过调整假设函数的阈值来调整这两者的值,很多时候我们需要在这二者中做出一个权衡

有两个度量标准很多时候让我们不知道如何选择, 为了解决这个问题,我们有F分的方法将二者融合为一个标准

猜你喜欢

转载自blog.csdn.net/shanwenkang/article/details/85044680