使用学习曲线和验证曲线调试算法· Python机器学习 - ljalphabeta

文章推薦指數: 80 %
投票人數:10人

他们就是学习曲线(learning curve)和验证曲线(validation curve)。

学习曲线可以判断学习算法是否过拟合或者欠拟合。

使用学习曲线判别偏差和方差问题. 如果一个模型相对 ... Python机器学习 Introduction 第一章让计算机从数据中学习 将数据转化为知识 三类机器学习算法 第二章训练机器学习分类算法 透过人工神经元一窥早期机器学习历史 使用Python实现感知机算法 基于Iris数据集训练感知机模型 自适应线性神经元及收敛问题 Python实现自适应线性神经元 大规模机器学习和随机梯度下降 总结 第三章使用Scikit-learn进行分类器之旅 如何选择合适的分类器算法 scikit-learn之旅 逻辑斯蒂回归对类别概率建模 使用正则化解决过拟合 支持向量机 使用松弛变量解决非线性可分的情况 使用核SVM解决非线性问题 决策树学习 最大信息增益 构建一棵决策树 随机森林 k近邻--一个懒惰学习算法 总结 第四章构建一个好的训练集---数据预处理 处理缺失值 消除带有缺失值的特征或样本 改写缺失值 理解sklearn中estimator的API 处理分类数据 将数据集分割为训练集和测试集 统一特征取值范围 选择有意义的特征 利用随机森林评估特征重要性 总结 第五章通过降维压缩数据 PCA进行无监督降维 聊一聊方差 特征转换 LDA进行监督数据压缩 原始数据映射到新特征空间 使用核PCA进行非线性映射 用Python实现核PCA 映射新的数据点 sklearn中的核PCA 总结 第六章模型评估和调参 通过管道创建工作流 K折交叉验证评估模型性能 使用学习曲线和验证曲线调试算法 通过网格搜索调参 通过嵌套交叉验证选择算法 不同的性能评价指标 第七章集成学习 集成学习 结合不同的分类算法进行投票 第八章深度学习之PyTorch 60分钟上手PyTorch PoweredbyGitBook 使用学习曲线和验证曲线调试算法 使用学习曲线和验证曲线调试算法 这一节我们学习两个非常有用的诊断方法,可以用来提高算法的表现。

他们就是学习曲线(learningcurve)和验证曲线(validationcurve)。

学习曲线可以判断学习算法是否过拟合或者欠拟合。

使用学习曲线判别偏差和方差问题 如果一个模型相对于训练集来说过于复杂,比如参数太多,则模型很可能过拟合。

避免过拟合的手段包含增大训练集,但这是不容易做到的。

通过画出不同训练集大小对应的训练集和验证集准确率,我们能够很轻松滴检测模型是否方差偏高或偏差过高,以及增大训练集是否有用。

上图的左上角子图中模型偏差很高。

它的训练集和验证集准确率都很低,很可能是欠拟合。

解决欠拟合的方法就是增加模型参数,比如,构建更多的特征,减小正则项。

上图右上角子图中模型方差很高,表现就是训练集和验证集准确率相差太多。

解决过拟合的方法有增大训练集或者降低模型复杂度,比如增大正则项,或者通过特征选择减少特征数。

这俩问题可以通过验证曲线解决。

我们先看看学习曲线是怎么回事吧: learning_curve中的train_sizes参数控制产生学习曲线的训练样本的绝对/相对数量,此处,我们设置的train_sizes=np.linspace(0.1,1.0,10),将训练集大小划分为10个相等的区间。

learning_curve默认使用分层k折交叉验证计算交叉验证的准确率,我们通过cv设置k。

上图中可以看到,模型在测试集表现很好,不过训练集和测试集的准确率还是有一段小间隔,可能是模型有点过拟合。

用验证曲线解决过拟合和欠拟合 验证曲线是非常有用的工具,他可以用来提高模型的性能,原因是他能处理过拟合和欠拟合问题。

验证曲线和学习曲线很相近,不同的是这里画出的是不同参数下模型的准确率而不是不同训练集大小下的准确率: 我们得到了参数C的验证曲线。

和learning_curve方法很像,validation_curve方法使用采样k折交叉验证来评估模型的性能。

在validation_curve内部,我们设定了用来评估的参数,这里是C,也就是LR的正则系数的倒数。

观察上图,最好的C值是0.1。

resultsmatching"" Noresultsmatching""



請為這篇文章評分?