我是靠谱客的博主 顺利发夹,最近开发中收集的这篇文章主要介绍09 机器学习调参,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

__回顾:__同时使用L1正则和L2正则的线性回归模型就称为Elastic Net,$color{red}{弹性网络算法}$

在实际工作中,对于各种算法模型(线性回归)来讲,__我们需要输入θ、p、λ的值。__

θ=(XTX)-1XTY ;算法会自动生成,无需人工干预。
p、λ 都是超参数;需要人工调整。

$color{red}{超参数}$ 是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

求解p、λ的过程叫做调参(超参)

如交叉验证:将训练数据分成多份,其中一份进行数据验证,并获取最优的超参:p、λ;常见的方法:k折交叉验证。五折交叉验证 (scikit-learn中默认)

=== 训练集与测试集划分方法 ===

1、留出法 (hold-out) :
一部分为训练集,一部分为测试集。
尽量保证数据分布的一致性,划分比例可以是 2:1 或 4:1
对应函数:train_test_split(X,Y,test_size)

2、交叉验证法 (k-fold cross validation) :
划分为k个互斥子集,用k-1作为训练集,剩下一个为测试集,最终每一个子集都会作为测试集,其余子集作为训练集,共进行k次建模,最终得到测试结果的均值。
k取值一般为10。
随机取k个互斥子集,进行p次,最后p个k-fold cv进行取平均,叫做p次k折交叉验证。
k折交叉验证即能帮我们挑选出最优参数,也能帮我们挑选出最优模型。

3、留一法LOOCV (leave-one-out cross validation):
m个样本,令k=m,作为k折交叉验证的特例。只有1种划分方法,即每个测试集只有一条数据。
优势:每个模型都能很好的反应原始数据集的特性。
劣势:计算量在数据量大的时候会非常大,还不算调参的计算量。
让每一个样本都做一次测试集,其他样本都做训练集。即做一次LOOCV 需要做m次的训练,最后取平均。

4、Bootstrapping(自助法):
设现在有一个数据集D,对D中的m个数据随机取样,接着将数据放回原数据集。然后再一次继续取样,重复m次,产生一个新的数据集D' ,最后取得的数据作为测试集。

D={1,5,2,3} m=4
D‘ 长度也应该等于4 ,所以抽4次
第一次抽到了2,然后吧放回去 D’ = {2}
第二次抽到了2,然后把2放回去 D‘ = {2,2}
第三次抽到了2,然后把2放回去 D‘ = {2,2,2}
第四次抽到了3,然后把3放回去 D‘ = {2,2,2,3}
其中{1,5}没有被抽到,将其作为测试集。

根据概率,__未取到的数据占比约为36.8%__:

最后

以上就是顺利发夹为你收集整理的09 机器学习调参的全部内容,希望文章能够帮你解决09 机器学习调参所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部