博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日一个机器学习算法——机器学习实践
阅读量:6230 次
发布时间:2019-06-21

本文共 1050 字,大约阅读时间需要 3 分钟。

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

 

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

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:解决过拟合

转载于:https://www.cnblogs.com/ShaneZhang/p/3938026.html

你可能感兴趣的文章
跟我一起学习ASP.NET 4.5 MVC4.0(六)(转)
查看>>
Maven搭建SpringMVC + SpringJDBC项目详解
查看>>
初识swipe.js
查看>>
<Android Framework 之路>Android5.1 Camera Framework(四)——框架总结
查看>>
MySQL日期时间函数大全(转)
查看>>
Silverlight实例教程 - Validation数据验证基础属性和事件(转载)
查看>>
JAVA未来前景还能持续多久
查看>>
Sklearn学习笔记
查看>>
Android 内存优化 (防Memory Leak)
查看>>
C++之指针
查看>>
解决linux用户切换失败 su:execute /usr/bin 没有权限
查看>>
[LeetCode]题解(python):100-Same Tree
查看>>
win10 64位 安装scrapy
查看>>
iostat监控磁盘io
查看>>
centos7搭建ANT+jmeter+jenkins接口测试自动化环境
查看>>
分配问题(二部图的最佳匹配 KM) 线性规划与网络流24题
查看>>
Android子线程访问网络
查看>>
The Ninth Hunan Collegiate Programming Contest (2013) Problem J
查看>>
让你的字段支持保存手机中的emoji表情
查看>>
Java 数组
查看>>