1. 学习知识概要

2. 学习内容

2.1 stacking\blending详解

REF:

零基础数据挖掘入门系列(六) - 模型的融合技术大总结与结果部署_Miracle8070-CSDN博客思维导图:零基础入门数据挖掘的学习路径1. 写在前面零基础入门数据挖掘是记录自己在Datawhale举办的数据挖掘专题学习中的所学和所想, 该系列笔记使用理论结合实践的方式,整理数据挖掘相关知识,提升在实际场景中的数据分析、数据清洗,特征工程、建模调参和模型融合等技能。所以这个系列笔记共五篇重点内容, 也分别从上面五方面进行整理学习, 既是希望能对知识从实战的角度串联回忆,加强动手能力的锻炼,...https://blog.csdn.net/wuzhongqiang/article/details/105012739

  • stacking 将若干基学习器获得的预测结果,将预测结果作为新的训练集来训练一个学习器。如下图 假设有五个基学习器,将数据带入五基学习器中得到预测结果,再带入模型六中进行训练预测。但是由于直接由五个基学习器获得结果直接带入模型六中,容易导致过拟合。

    因此现在的问题变成如何降低再训练的过拟合性, 这里一般有两种方式:

1. 次级模型尽量选择简单的线性模型

2. 利用第一层训练模型使用交叉验证的方式

  • stacking步骤:

    • step1 N个基模型训练-k折。
    • step2 第二层模型训练-根据第一层k折拼出的结果特征作为训练样本。
    • step3 N个基模型在测试集上进行预测-每个基模型,k折对应的k个模型分别预测然后求平均作为该基模型的预测值。
    • 第二层模型在测试集上进行预测-基于训练出的第二层模型和N个基模型在测试集上一番操作得到的预测值,进行预测。

  • blending 与stacking不同,blending是将预测的值作为新的特征和原特征合并,构成新的特征值,用于预测。为了防止过拟合,将数据分为两部分d1、d2,使用d1的数据作为训练集,d2数据作为测试集。预测得到的数据作为新特征,使用d2的数据作为训练集结合新特征,预测测试集结果。
  • blending版本1-单纯的holdout
    • step1 基模型训练-在数据集d1上训练N个基模型
    • step2 第二层模型训练-将数据集d1的N个预测结果作为新特征,训练得到第二层模型
    • step3 基模型预测-使用训练得到的N个基模型在数据集d2上进行预测,即得到了数据集d2上的新特征
    • step4 第二层模型预测-基于数据集d2上的新特征和step2得到的第二层模型,预测得到测试集上的预测结果。

  • blending版本2-holdout交叉-就是把Stacking流程中的K-Fold CV 改成 HoldOut CV

    • step1 N个基模型训练-将数据集d1划分为N份,然后用N种不同的训练集验证集划分方式训练得到。
    • step2 第二层模型训练-step1中不同验证集上的预测结果横着拼起来成为N个新特征,入模的label为各个基模型入模样本对应的label进行横向拼接。
    • step3 基模型对测试集的预测-N个基模型直接在测试集上进行预测即可。
    • step4 第二层模型预测-step3中的预测结果直接横向拼接,作为第二层模型的入模特征进行预测。

  • Blending与stacking的不同

    • stacking

      • stacking中由于两层使用的数据不同,所以可以避免信息泄露的问题。
      • 在组队竞赛的过程中,不需要给队友分享自己的随机种子。
    • Blending
      • 由于blending对将数据划分为两个部分,在最后预测时有部分数据信息将被忽略。
      • 同时在使用第二层数据时可能会因为第二层数据较少产生过拟合现象。

2.2 代码示例

2.2.1 平均

2.2.2 投票

参考:

金融风控-Task5-天池实验室-实时在线的数据分析协作工具,享受免费计算资源天池实验室中的:金融风控-Task5实验介绍及https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.22.f2984d57Kg1P6q&postId=170952

2.2.3 Stacking

import warnings
warnings.filterwarnings('ignore')
import itertools
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from mlxtend.classifier import StackingClassifier
from sklearn.model_selection import cross_val_score, train_test_split
from mlxtend.plotting import plot_learning_curves
from mlxtend.plotting import plot_decision_regions# 以python自带的鸢尾花数据集为例
iris = datasets.load_iris()
X, y = iris.data[:, 1:3], iris.targetclf1 = KNeighborsClassifier(n_neighbors=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = GaussianNB()
lr = LogisticRegression()
# 基模型:[clf1, clf2, clf3]
# 第二层模型:lr
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], meta_classifier=lr)label = ['KNN', 'Random Forest', 'Naive Bayes', 'Stacking Classifier']
clf_list = [clf1, clf2, clf3, sclf]fig = plt.figure(figsize=(10,8))
gs = gridspec.GridSpec(2, 2)
grid = itertools.product([0,1],repeat=2)clf_cv_mean = []
clf_cv_std = []
for clf, label, grd in zip(clf_list, label, grid):scores = cross_val_score(clf, X, y, cv=5, scoring='accuracy')print("Accuracy: %.2f (+/- %.2f) [%s]" %(scores.mean(), scores.std(), label))clf_cv_mean.append(scores.mean())clf_cv_std.append(scores.std())clf.fit(X, y)ax = plt.subplot(gs[grd[0], grd[1]])fig = plot_decision_regions(X=X, y=y, clf=clf)plt.title(label)plt.show()
Accuracy: 0.91 (+/- 0.07) [KNN]
Accuracy: 0.94 (+/- 0.04) [Random Forest]
Accuracy: 0.91 (+/- 0.04) [Naive Bayes]
Accuracy: 0.94 (+/- 0.04) [Stacking Classifier]

2.2.4 blending

from sklearn.ensemble import ExtraTreesClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import roc_auc_score# 以python自带的鸢尾花数据集为例
data_0 = iris.data
data = data_0[:100,:]target_0 = iris.target
target = target_0[:100]#模型融合中基学习器
clfs = [LogisticRegression(),RandomForestClassifier(),ExtraTreesClassifier(),GradientBoostingClassifier()]#切分一部分数据作为测试集
X, X_predict, y, y_predict = train_test_split(data, target, test_size=0.3, random_state=914)#切分训练数据集为d1,d2两部分
X_d1, X_d2, y_d1, y_d2 = train_test_split(X, y, test_size=0.5, random_state=914)
dataset_d1 = np.zeros((X_d2.shape[0], len(clfs)))
dataset_d2 = np.zeros((X_predict.shape[0], len(clfs)))for j, clf in enumerate(clfs):#依次训练各个单模型clf.fit(X_d1, y_d1)y_submission = clf.predict_proba(X_d2)[:, 1]dataset_d1[:, j] = y_submission#对于测试集,直接用这k个模型的预测值作为新的特征。dataset_d2[:, j] = clf.predict_proba(X_predict)[:, 1]print("val auc Score: %f" % roc_auc_score(y_predict, dataset_d2[:, j]))#融合使用的模型
clf = GradientBoostingClassifier()
clf.fit(dataset_d1, y_d2)
y_submission = clf.predict_proba(dataset_d2)[:, 1]
print("Val auc Score of Blending: %f" % (roc_auc_score(y_predict, y_submission)))
val auc Score: 1.000000
val auc Score: 1.000000
val auc Score: 1.000000
val auc Score: 1.000000
Val auc Score of Blending: 1.000000

天池-金融风控训练营-task5-模型融合相关推荐

  1. 数据挖掘实践(金融风控)——task5:模型融合

    文章目录 平均 1.简单平均 2.加权平均 投票 1.简单投票 2.加权投票 stacking blending 总结 平均 1.简单平均 结果直接融合 求多个预测结果的平均值.pre1-pren分别 ...

  2. 阿里云天池 金融风控训练营Task1 广东工业站

    Task1  赛题理解 一.学习知识点概要 本次学习先是介绍了赛题的背景和概况,题目以金融风控中的个人信贷为背景,给所给的47列特征中,根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过 ...

  3. 天池-金融风控训练营-task2-数据分析

    一.学习知识概要 主要介绍了eda可以从哪些方面入手: 1. 数据整体情况 多少行.多少列.各列的数据缺失情况(对存在缺失的列,可以查看缺失率).各列的数据类型.各列的平均值等基本统计量.数据的首尾几 ...

  4. 阿里天池金融风控baseline

    前言 比赛地址链接 由于本次为基础赛,所以分为正式赛和长期赛,正式赛时间由于和另外重量级比赛冲突,所以做的大佬很少,本人有幸通过自己写的baseline冲到了Rank10,其实代码很少,也简单,也没有 ...

  5. 金融风控训练营--Task 02 EDA探索性数据分析 学习笔记

    文章目录 前言 一.学习知识点概要 1.1 探索性数据分析(Exploratory Data Analysis,EDA)的目的 二.学习内容 2.1 数据总体了解 2.1.1 读取数据集并了解数据集大 ...

  6. python金融风控评分卡模型和数据分析(加强版)-收藏

    信用评分卡 信用评分是指根据银行客户的各种历史信用资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,授信者可以通过分析客户按时还款的可能性,据此决定是否给予授信以及授信的额度和 ...

  7. 【算法竞赛学习】数字中国创新大赛智慧海洋建设-Task5模型融合

    智慧海洋建设-Task5 模型融合 5.1 学习目标 学习融合策略 完成相应学习打卡任务 5.2 内容介绍 https://mlwave.com/kaggle-ensembling-guide/ ht ...

  8. 【算法竞赛学习】二手车交易价格预测-Task5模型融合

    二手车交易价格预测-Task5 模型融合 五.模型融合 Tip:此部分为零基础入门数据挖掘的 Task5 模型融合 部分,带你来了解各种模型结果的融合方式,在比赛的攻坚时刻冲刺Top,欢迎大家后续多多 ...

  9. Datawhale零基础入门数据挖掘-Task5模型融合

    Datawhale零基础入门数据挖掘-Task5模型融合 五.模型融合 5.1 模型融合目标 5.2 内容介绍 5.3 Stacking相关理论介绍 5.4 代码示例 5.4.1 回归\分类概率-融合 ...

最新文章

  1. NeHe OpenGL第二十八课:贝塞尔曲面
  2. Java获取指定日期的月初和月末日子
  3. 计算机入会大会新生发言稿,新生大会发言稿(精选3篇)
  4. Build path contains duplicate entry
  5. 一步步在Kubernetes里运行Web应用
  6. 解决报错:java.lang.NoSuchMethodException: com.tangyuan.entity.RicherProduct.<init>()
  7. Linux 启/关 自启动服务
  8. java++记录+运行_记录java+testng运行selenium(三)---xml、ini、excel、日志等配置
  9. 数据库每日一题 2020.04.29
  10. 终端中用命令成功修改linux~Ubuntu PATH环境变量
  11. python wmi antivirusproduct_使用python的wmi进行远程连接的时候报错
  12. 大数据各组件环境完整安装
  13. kindeditor 文件上传在 spring mvc下的使用
  14. 重复insmod同一个模块导致段错误
  15. [WEB]超牛的前端页面模板收集
  16. 软件测试之测试的分类
  17. linux环境配置以及远程登录linux
  18. java课程设计报告书_java课程设计报告书模板
  19. wordpress如何快速配置SSL安全证书
  20. 赛门铁克symantec的安装与卸载-附下载地址(本人亲测)

热门文章

  1. class类,静态属性 以及 静态方法
  2. 使用计算机生成遐想景物图像,计算机多媒体
  3. word里双横线怎么打_如何在word中画线 怎么在word中输入横线[图文]
  4. php对接打码平台,好用的打码平台推荐
  5. 什么是生成器?如何创建生成器
  6. 模拟人生4 春夏秋冬、星梦起飞版更新下载方法以及常见问题
  7. parsel安装老是失败_adb安装应用失败,错误码
  8. 统计学-常用数据分析方法
  9. 算法提高 盾神与积木游戏
  10. 服务器内存2rx4是什么意思_云主机服务器内存(服务器内存1rx4和2rx4)