如何应用ML的建议-上

时间:2023-03-09 07:50:19
如何应用ML的建议-上

本博资料来自andrew ng的13年的ML视频中10_X._Advice_for_Applying_Machine_Learning。

遇到问题-部分(一)

错误统计-部分(二)

正确的选取数据集-部分(三)

辨识是欠拟合还是过拟合-部分(四)

正则化与过拟合(high variance)和欠拟合(high bias)的关系-部分(五)

部分(六)、部分(七)见“如何应用ML的建议-下”

部分(一):

如何应用ML的建议-上 如何应用ML的建议-上

举个例子,当我们采用这样的模型(看过ng在网易上视频的人对预测房子价格的例子并不陌生),但是当我们使用了自认为合理的模型来进行预测的时候,发现得到的实际预测和期望差距太大,这时候肯定是算法中哪些地方不对,很多人会无所适从。不知道该怎么办。

在经过思维考虑后,很有想法的提出了几个自认为有助于改善的方法:

如何应用ML的建议-上如何应用ML的建议-上

对于这个具体的例子来说,可以有这几个想法,是否是训练样本不够导致训练后的模型的参数不够去表征原始数据的信息。或者是特征太多造成的过拟合,或者是特征太少造成的欠拟合,还是因为正则化项太大导致模型函数太平滑使得对数据欠拟合,还是正则化项太小,导致对数据的过拟合等等。

通常来说,很多人是靠着感觉去选择对哪一步进行操作,在错误的选择上,有可能当付出很多的时间,最好却发现效果依然不好。所以如何合理的选择下一步该做什么,是非常有必要,而且效率的。这就是ML诊断:

如何应用ML的建议-上如何应用ML的建议-上

部分(二):

首先,如图:

如何应用ML的建议-上如何应用ML的建议-上

这种情况就算典型的过拟合状态,对于特征维度很小的时候,我们可以进行可视化得到模型的结果来发现是否过拟合还是欠拟合,但是当维度很多的时候,是无法进行可视化的。这时候需要将数据集分成两个部分(一般都是7:3分)

如何应用ML的建议-上如何应用ML的建议-上

当然了,最好就是对数据集进行随机的选择70%作为训练数据集,剩下的随机打乱作为预测数据集,(其实这里自己觉得这里的需要划分的数据集可以是将最初的训练数据集划成两部分,当然,也可以将最初的训练集和预测集一起组合然后在进行划分。不论怎么说 这里都是为了找到模型不理想的问题所在。)

然后需要做的就是对前面选取的70%多的训练数据集照常的训练,为了得到一个固定的参数集,然后通过这个训练好的参数集来对剩下的30%数据进行预测,得到一个错误率(这里和原来的训练过程其实差不多),但是ng建议在对30%的预测数据进行预测的时候,需要的是统计错误率,即在预测数据集上错了多少次,对于分类问题来说,直接统计即可,对于回归问题来说,如下图所示:

如何应用ML的建议-上如何应用ML的建议-上

图中为逻辑回归模型如何处理测试误差,就是将误差进行0-1的量化,对的就是0,错的就是1,统计预测错了多少次。

部分(三):

      ng认为特征选择问题,正则化项参数选择问题,都算作模型选择问题。(对正则化项的lamuda的选择也算?,才疏学浅,先不表。)在比如模型是多项式模型中,到底是1次多项式还是2次多项式还是n次多项式就是可以作为模型选择的来进行考虑,

如何应用ML的建议-上如何应用ML的建议-上

图中显示,当你的模型在训练数据上的错误率低于在测试数据上的错误率, 那可能就是过拟合了。

当我们在选择好模型之后,在训练数据上进行训练,并得到模型的参数集,然后用这个参数集来对测试数据进行预测得到的错误率来选择模型,这本身对测试数据来说就是不公平的,测试数据原来扮演的就是我们未知的数据,而现在却通过测试数据来选取模型,那么我们就等于事先使用了测试数据 包含的信息,所以不是很严谨,所以为了解决这个问题,提出了将数据集分成三个部分:

如何应用ML的建议-上如何应用ML的建议-上

如上图所示,才有将数据分成train set,validation set,和test set。

如何应用ML的建议-上如何应用ML的建议-上

现在就可以通过中间的交叉验证集来,选择最好的参数集表示的模型,并用这个选择的模型来得到在test上的误差,以此来表示这个模型的生成误差。

部分(四)

如果模型在测试数据集上效果不好,多半是因为有着高偏移或者高方差的问题(是说模型对于数据来说不能很好的拟合的意思,相比较于理想的模型来说,我们的模型离得太远。)

如何应用ML的建议-上如何应用ML的建议-上

图中可以看出,左小图 是欠拟合,右小图是过拟合,中间的是一个适当的选择,粉红的线是我们对不同的模型在同一个训练集上的错误率,是朝着越来越小的方向进行的,红色的是在交叉验证集或者测试集上的表现,可以看出在前期模型上是朝着理想的方向的,但是在某个点之后却开始误差变大。

如何应用ML的建议-上如何应用ML的建议-上

从图中可以看出,前面的部分是欠拟合,也叫做有着高偏移的问题,后面叫过拟合,也叫做有着高方差的问题。这里教会我们如何来辨识是欠拟合还是过拟合。