美文网首页
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