美文网首页
2018-11-02 模型选择学习笔记

2018-11-02 模型选择学习笔记

作者: 毒菇小妖 | 来源:发表于2019-10-21 10:35 被阅读0次

占坑,完善中。。。。

模型的选择就是为了解决过拟合和欠拟合问题

过拟合:  解决简单问题用了过于复杂的模型, 机关枪打苍蝇

欠拟合:解决复杂问题用了过于简单的模型,打哥斯拉用苍蝇拍

欠拟合产生的原因,对数据类型的过度简化。

过拟合产生的原因:过度细化分类的特征,导致其实是同一类的物品因为某一特征无法匹配而不能正确归类。会导致模型在训练的时候是记住数据集而不是特征。

模型复杂度图表,训练集的误差和测试集的误差值作为x轴上的两个点,当两个点的距离和高度都最小的时候,模型是最佳的。距离小但是高度过高,就是欠拟合,距离大就是过拟合。

禁止将测试集用于选择模型,这个是底线,所以正确的做法是引入k flod cross validation。用于防止过拟合。

代码:

把训练集分到K个不同的包中,每训练一次,用一个新的交叉验证集来验证内容。

当反复用训练集和交叉验证集进行选择的时候,以下是三种模型的复杂度曲线

复习一下模型选择的过程

上图是逻辑回归,逻辑回归的模型选择在于Degree,

1. 将数据集分为训练集,交叉验证集,测试集。

2. 选出N个模型

3. 计算模型参数

4, 计算F1得分

5. 选择分数最高(根据应用场景,这里假设需要精准度和召回率都比较准确)

6. 通过测试集验证步骤5选择的模型的效果

最终选定的模型的degree 就称为超参数,

对于不同模型来说,超参数的选择不同,在决策树中,超参数可以是深度。

支持向量机的算法模型中,可以通过网格法进行模型选择。

代码:网格搜索

https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html 

代码:模型库

逻辑回归

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression()

神经网络

(注意:仅适用于 0.18 或更高版本的 scikit-learn)

from sklearn.neural_network import MLPClassifier

classifier = MLPClassifier()

决策树

from sklearn.tree import DecisionTreeClassifier

classifier = DecisionTreeClassifier()

支持向量机

from sklearn.svm import SVC

classifier = SVC()

--------

使用sklearn.model_selection 中的 train_test_split函数来自动划分数据集和测试集

区分训练集和验证集还可以使用ShuffleSplit()。(有什么区别,是否还有其他进行训练集验证集分离的方法??)

相关文章

网友评论

      本文标题:2018-11-02 模型选择学习笔记

      本文链接:https://www.haomeiwen.com/subject/bbshxqtx.html