【机器学习】Sklearn 调试模型
2017-12-11 11:45
411 查看
1、过拟合
处理过拟合的方法有:
a>减少特征,降低模型的复杂度
b>减小调试参数
c>增加训练数据量
常用的调参方法就是通过在惩罚函数中新增一个正则化参数C来控制分类边界对样本的辨识度,如果是用权重的二次方,则是L2正则化,如果是|W|/C则是L1正则化。
L2损失函数:
2、欠拟合
处理方式正好和过拟合相反:
a>增加特征,增加模型的复杂度
b>减大调试参数
3、交叉验证
在训练数据上训练好模型,在测试数据看训练的效果,将测试集成绩最好的参数组合作为模型的参数,这种方法就是交叉验证。
但是为了防止特定的数据造成的偶然性,这里通过取交叉验证结果的平均值作为模型的参数成绩,这就是k折交叉算法。
4、Gridsearch暴力寻参
可以通过设置一个参数搜索空间,暴力搜索所有的参数组合,可以同时寻找多个最优参数。
寻找最有参数搜索范围只要要两步:第一定义搜索范围,第二在数据中尝试所有的参数组合。
紧接上例,寻找KNN模型的参数K(近邻数量)的最价值:
模型的调试目标是:平衡过拟合和欠拟合,通过GridSearch 比例搜索最佳的模型参数组合。
处理过拟合的方法有:
a>减少特征,降低模型的复杂度
b>减小调试参数
c>增加训练数据量
常用的调参方法就是通过在惩罚函数中新增一个正则化参数C来控制分类边界对样本的辨识度,如果是用权重的二次方,则是L2正则化,如果是|W|/C则是L1正则化。
L2损失函数:
X是训练集,W权重矩阵,b是偏置向量,y真实标签值 def loss_func(X,W,b,y): s = score(X,W,b) p = softmax(s) return -np.mean(cross_entropy(y,p))+np.mean(np.dot(w.T,w)/c)
2、欠拟合
处理方式正好和过拟合相反:
a>增加特征,增加模型的复杂度
b>减大调试参数
3、交叉验证
在训练数据上训练好模型,在测试数据看训练的效果,将测试集成绩最好的参数组合作为模型的参数,这种方法就是交叉验证。
但是为了防止特定的数据造成的偶然性,这里通过取交叉验证结果的平均值作为模型的参数成绩,这就是k折交叉算法。
import sklearn from sklearn import datasets from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import cross_val_score,KFold data = datasets.load_iris() X = data['data'] y = data['target'] clf = KNeighborsClassifier() #直接算出每个交叉验证模型的得分,得到得分的数组,然后可以i取平均 scores = cross_val_score(clf, data.data, data.target, cv=5) #print(scores.mean()) #查看KFold的执行算法过程 kf = KFold(n_splits = 5) #print(kf) #kf = KFold(len(y_train),n_folds =10) for train, test in kf.split(X): #获取训练和测试数据 #print("%s %s" % (train, test)) X_train,X_test = X[train],X[test] y_train,y_test = y[train],y[test] print(X_train,X_test)
4、Gridsearch暴力寻参
可以通过设置一个参数搜索空间,暴力搜索所有的参数组合,可以同时寻找多个最优参数。
寻找最有参数搜索范围只要要两步:第一定义搜索范围,第二在数据中尝试所有的参数组合。
紧接上例,寻找KNN模型的参数K(近邻数量)的最价值:
from sklearn.grid_search import GridSearchCV params = dict(n_neighbors = list(range(1,13))) print(params) #grid_search gsearch = GridSearchCV(estimator =clf,param_grid=params) gsearch.fit(X,y) print(gsearch.best_params_, gsearch.best_score_)
模型的调试目标是:平衡过拟合和欠拟合,通过GridSearch 比例搜索最佳的模型参数组合。
相关文章推荐
- [置顶] 【机器学习 sklearn】模型正则化L1-Lasso,L2-Ridge
- 机器学习-训练模型的保存与恢复(sklearn)
- 机器学习基础 维基翻译 Johnson-Lindenstrauss降维 应用于广义因子模型 及简单的sklearn例子
- 系统学习机器学习之模型诊断与调试
- python机器学习模型选择&调参工具Hyperopt-sklearn(1)——综述&分类问题
- [置顶] 【机器学习 sklearn】逻辑斯蒂回归模型--Logistics regression
- 机器学习教程之2-k近邻模型的sklearn实现
- 机器学习-训练模型的保存与恢复(sklearn)
- 机器学习性能改善备忘单:32个帮你做出更好预测模型的技巧和窍门
- 机器学习基本概念和模型训练基本问题
- sklearn模型的属性与功能-【老鱼学sklearn】
- 机器学习——模型评估与选择二
- 使用Microsoft R Server进行机器学习和模型发布(2)
- 机器学习-python通过使用sklearn编写支持向量机SVM
- 机器学习中模型评估与选择中的几个小问题
- Python与机器学习之模型结构(生成学习算法)
- 【机器学习】主题模型(二):pLSA和LDA
- 机器学习之逻辑斯提回归(Logistic Regression)模型
- 机器学习之用sklearn实现knn
- 机器学习笔记2.模型评估于选择----教材周志华西瓜书