好几天没写日志了,今天主要做的是实现了随机选取训练集,以前做的是选取相同数目的不同类别的训练集。今天通过调节训练集的百分比,比较对训练集和测试集的分类效果,可以看出它们差别还是挺大的,根据Andrew Ng的机器学习入门视频课程,他说如果测试集的效果如果比训练集差很多,则需要增大训练集。
原理大概是这样的:一般来说,增大训练集能够增加分类效果,然而,如果训练集太多,则分类器难以对训练集有很好的分类效果,因为它需要拟合比以前更多的数据样本。所以,一般来说,训练集和测试集的分类结果差不多就好了。其实,这还涉及到高方差和高偏差的问题,但是由于我看视频的时候是跳着看的,所以对这些概念不是很熟悉。
今天对自己的3524个评论进行分类。结果如下,其中,正确率的定义为分类完全正确的个数/总个数:
训练集的总百分比 | 测试集(分类结果和实际结果绝对值之差) | 训练集(分类结果和实际结果绝对值之差) | 训练集的正确率 | 测试集的正确率 |
---|---|---|---|---|
40% | 1.18 | 0.909 | ||
70% | 1.01 | 0.78 | 46% | 62% |
80% | 0.96 | 0.74565 | ||
90% | 0.95 | 0.788 | ||
95% | 0.92 | 0.75 | 49.7% | 62.68% |
99% | 0.97 | 0.72 | 44% | 63% |
因为这个是随机生成的,所以按理来说,每个参数应该多运行几遍,取均值才最好。
可以看到,测试集的效果在95%的效果最好,可能是因为99%的时候测试集太少了,所以效果反而不好。总体来看,测试集的效果远远比训练集的差,所以还是需要增大训练集的。
关于特征选择的问题,Andrew Ng也没有细说,他说的时候把这个和增大训练集放在一起了。增加训练集和减少特征能够解决高方差,增多特征和改变特征能够解决高偏差问题。
高方差就是过拟合,这两种说法大致相似,都表示没有很好地拟合训练数据。高偏差这个词是 machine learning 的研究初期传下来的一个专业名词,具体到这个问题,意思就是说如果用线性回归这个算法去拟合训练数据,那么该算法实际上会产生一个非常大的偏差或者说存在一个很强的偏见。常常发生在变量(特征)过多的时候。这样的曲线千方百计的去拟合训练数据,这样会导致它无法泛化到新的数据样本中,以至于无法预测新样本价格。如果一个学习算法是高方差的,那么它的训练误差和验证集误差在一定的训练样本数目之后虽然有差异,但是会随着样本数目的增大而减小她们之间的gap,所以对于高方差过拟合的问题,增加训练样本数目是解决方法之一。
高偏差是欠拟合,与高偏差一样,高方差同样也是一个历史上的叫法。从第一印象上来说,如果我们拟合一个高阶多项式,那么这个函数能很好的拟合训练集(能拟合几乎所有的训练数据),但这也就面临函数可能太过庞大的问题,变量太多。如果一个学习算法是高偏差的,那么它的训练误差和验证集误差在一定的训练样本数目之后都很高,而且不会随着样本数目的增大而改变,所以对于高偏差欠拟合的问题,增加训练样本数目不是一个好的解决办法。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!