首页 > 代码库 > 每日一个机器学习算法——机器学习实践

每日一个机器学习算法——机器学习实践

知道某个算法,和运用一个算法是两码事儿。

 

当你训练出数据后,发觉模型有太大误差,怎么办?

1)获取更多的数据。也许有用吧。

2)减少特征维度。你可以自己手动选择,也可以利用诸如PCA等数学方法。

3)获取更多的特征。当然这个方法很耗时,而且不一定有用。

4)添加多项式特征。你在抓救命稻草么?

5)构建属于你自己的,新的,更好的特征。有点儿冒险。

6)调整正则化参数lambuda。

以上方法的尝试有些碰运气,搞不好就是浪费大把时间。

machine learning diagonostic. 机器学习诊断。检查正确性,提升效率,节省调试时间。

一,评估假设

loss越小,不代表模型越好,有可能出现过拟合的现象。

正确的方法是:将数据分割为训练集和测试集。利用训练集训练数据,测试集进行测试求出测试集误差(test set error)

 

二,模型选择与训练验证测试集

如何选择正则化参数和多项式次数(模型选择)

尝试不同的正则化参数和多项式次数,选择在测试集上损失最小的model。这似乎可行,但都是针对测试集计算,无法验证泛化能力。

解决的方法就是划分出三个集合:训练集,验证集,和测试集。

利用验证集选择最佳的参数模型,之后再在测试集上计算泛化损失。

 

三,模型诊断:bias vs variance

过拟合和欠拟合的判断方法

绘制曲线

当d过小,有可能是欠拟合

当d过大,有可能是过拟合

对于欠拟合而言,验证集和训练集的loss均非常大

对于过拟合而言,训练集的loss很小,而验证集的loss很大。

 

四,正则化参数对欠拟合过拟合的平衡

lambuda很大的话,容易欠拟合,过小则容易过拟合。

如何选择?

设置一个正则化参数的选择范围,在验证集上计算每一个值所对应的loss的大小,选择最小的那个。

 

五,学习曲线

high bias:

Jcv和Jtrain在m很大的情况下,都很高。

此时,增加样本数将没有效果。因为模型本身出了问题。可能的问题是模型过于简单。

 

high variance:

Jcv和Jtrain之间间隔很大。

此时,增加训练样本数有可能会有很好的效果。

 

六、总结

1)获取更多样本:解决过拟合。欠拟合则不行。

2)更小的特征集:同上。

3)添加其他特征:解决欠拟合

4)添加多项式:解决欠拟合

5)减小lambuda: 解决欠拟合

6)增大Lambuda:解决过拟合

每日一个机器学习算法——机器学习实践