栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 人工智能 > 机器学习

K折交叉验证与GridSearch网格搜索

机器学习 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

大家好,我是志斌~

今天跟大家分享一下如何用GridSearch网格搜索和K折交叉认证对决策树模型进行参数调优。

上一篇文章给大家介绍了决策树模型的搭建和实战,当时只用到了一个参数max_depth,但是模型实际上还有其他影响参数,如criterion(特征选择标准)、class_weight(类别权重)等参数。如果我们想要更精确的结果,那么势必要对模型参数进行调整,找到最优参数,来构建模型。

1.K折交叉验证

K折交叉验证实际上是将一个数据集分成K份,每次选K-1份为训练集,用剩下的一份为测试集,然后取K个模型的平均测试结果作为最终的模型效果。如下图所示:


K折交叉验证与GridSearch网格搜索

K值的选取跟数据集的大小有关,数据集较小则增大K值,数据集较大则减小K值。实现代码如下:

from sklearn.model_selection import cross_val_score
acc = cross_val_score(model,X,Y,cv=5)

2.GridSearch网格搜索

GridSearch网格搜索是一种穷举搜索的参数调优方法,它会遍历所有的候选参数,并评估每个模型的有效性和准确性,选取最好的参数作为最终结果。

参数调优分为单参数调优和多参数调优,志斌分别给大家举例介绍一下。

(1)单参数调优

我们以单参数max_depth参数为例,来演示单参数调优,代码如下:

from sklearn.model_selection import GridSearchCV
param = {'max_depth':[1,3,5,7,9]}
grid_search = GridSearchCV(model,param,scoring='roc_auc',cv=5)grid_search.fit(X_train,Y_train)

输出参数的最优结果:

grid_search.best_params_

得到max_depth参数的最优结果为:


K折交叉验证与GridSearch网格搜索

我们用上面获得的参数最优值重新搭建模型,来查看AUC值是否得到了提高,代码如下:

model = DecisionTreeClassifier(max_depth=7)
model.fit(X_train,Y_train)
y_pred_proba = model.predict_proba(X_test)
from sklearn.metrics import roc_auc_score
score = roc_auc_score(Y_test.values,y_pred_proba[:,1])

得到的AUC值为:


K折交叉验证与GridSearch网格搜索

比之前的0.958有所上升,看来模型的准确度有所上升。

(2)多参数调优

决策树模型有下图这些参数:


K折交叉验证与GridSearch网格搜索

这些参数都会影响我们搭建的决策树模型的准确性,这里我们以max_depth(最大深度)、criterion(特征选择标准)、min_samples_split(子节点向下分裂所需最小样本数),这三个参数为例,来进行多参数调优,代码如下:

from sklearn.model_selection import GridSearchCV
params = {'max_depth':[5,7,9,11,13],'criterion':['gini','entropy'],'min_samples_split':[5,7,9,11,13,15]}
model = DecisionTreeClassifier()
grid_search = GridSearchCV(model,params,scoring='roc_auc',cv=5)
grid_search.fit(X_train,Y_train)

输出参数的最优值:

grid_search.best_params_


K折交叉验证与GridSearch网格搜索

我们用上面获得的参数最优值重新搭建模型,来查看AUC值是否得到了提高,代码如下:

model = DecisionTreeClassifier(criterion='entropy',max_depth=13,min_samples_split=15)
model.fit(X_train,Y_train)
y_pred_proba = model.predict_proba(X_test)
from sklearn.metrics import roc_auc_score
score = roc_auc_score(Y_test.values,y_pred_proba[:,1])

得到的AUC值为:


K折交叉验证与GridSearch网格搜索

比之前的0.985有所提高,看来模型得到进一步优化。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/795838.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号