首先明确:
1.该问题是否为机器学习问题? – 是
2.该问题是机器学习哪方面的问题? – 监督学习、无监督学习
3.当拿到数据之后从下面两个角度思考问题:
1)从数据角度思考:
根据具备的数据看能够做监督学习or无监督学习or半监督学习
2)从业务角度思考:
根据业务部门指定的业务方向,整理数据,从而建模
特征工程
对特征处理
对数据的处理
数据+选择的算法==>模型
通过测试集测试模型,给定最终模型
如果有新数据,通过模型给出预测结果
当面临这么多的模型需要选择,我们如何选择适合问题的模型呢?
首先看看数据
再来看,下面哪一条曲线的拟合效果是最好的?
泛化(防火防盗防拟合)
模型具有好的泛化能力指的是:模型不但在训练数据集上表现得效果很好,对于新数据的适应能力也有很好的效果。
泛化能力的表现:过拟合和欠拟合
一.过拟合
1.过拟合overfitting:模型在训练数据上表现良好,在未知数据或者测试集上表现差。
2.过拟合的出现原因:模型过于复杂,数据不纯,训练数据量太少
3.过拟合的出现场景:出现在模型训练的中后期
过拟合解决方法:
1.针对模型过域复杂的特性,增加正则罚项
2.重新清洗数据
3.增加训练数据量
4.增加正则罚项
5.dropout – 随机丢弃一些点(深度学习)
二.欠拟合
1.欠拟合underfitting:在训练数据和未知数据上表现都很差
2.欠拟合出现原因:模型过于简单
3.欠拟合出现的场景:模型训练初期
欠拟合解决方法:
1.增加其他特征项:因为特征项不够而导致欠拟合,可以添加其他特征来很好的解决
2.添加多项式特征:可以在线性模型中通过添加二次或三次项使得模型的泛化能力更强
3.减少正则罚项:正则化的目的是用来防止过拟合的,但是现在模型出现了欠拟合,需要减少正则化参数。
模型选择的 – 奥卡姆剃刀原则
给定两个具有相同泛化误差的模型,较简单的模型比较复杂的模型更可取。
奥卡姆剃刀原则是模型选择的基本而且重要的原则。
总结:
什么是正则化?
正则项
目的:为了降低模型的复杂度
有几个正则项
L1正则+lambda*|w|
L2正则+lambda*|w|**2(在损失项的平方)
正则化
经验风险较小的模型可能较复杂,这时正则化项的值会很大,正则化的作用就是选择经验风险与模型复杂度同时较小的模型。
正则化符合奥卡姆剃刀原理,在所有可能的模型中,能够很好的解释已知数据并且十分简单的模型才是最好的模型。从贝叶斯估计的角度看,正则化项对应于模型的先验概率,可以假设复杂的模型有较小的概率,简单的模型有较大的先验概率。
什么是交叉验证?
在机器学习中常用的精度测试方法,叫做交叉验证。它的目的是得到可靠稳定的模型,具体做法是拿出大部分数据进行建模,留小部分样本用刚刚简历的模型进行预测,并求出这小部分样本预测的误差,交叉验证在克服过拟合问题上非常有效。
一些常用的交叉验证方法:
1.简单交叉验证
简单交叉验证的方法就是,随机从最初的样本中选择部分,形成验证数据,而剩下的当作训练数据。一般来说,少于三分之一的数据被选作验证数据。
2.10折交叉验证
10折交叉验证是吧样本数据分成10份,轮流将其中9份做训练数据。将剩下的1份当测试数据,10次结果的均值作为对算法精度的估计,通常情况下为了提高精度,还需要做多次的10折交叉验证。
更进一步,还有K折交叉验证,10折交叉验证是它的特殊情况。K折交叉验证就是把样本分为K份,其中K-1份用来做训练建立模型,留剩下的一份来验证,交叉验证重复K次,每个子样本验证一次。
3.留一验证
留一验证只使用样本数据中的一项当作验证数据,而剩下的全作为训练数据,一直重复,直到所有的样本都作验证数据一次。可以看出留一验证实际上就是K折交叉验证,只不过这里的K有点特殊,K为样本数据个数。
总结为:
1.简单交叉验证:将数据集切分为:训练集和测试集=7:3 6:4 8:2
2.K则交叉验证:将数据集平均随机切分为K等分,将其中一份数据作为测试集,其余数据作为训练集,训练K个模型,得到平均准确率
3.留一验证:特殊的K则交叉验证