原文链接:http://tecdat.cn/?p=6608
大多数时候,我能够破解特征工程部分,但可能没有使用多个模型的集合。
在本文中,我将向您介绍集成建模的基础知识。另外,为了向您提供有关集合建模的实践经验,我们将使用R对hackathon问题进行集成。
通常,集成是一种组合两种或多种类似或不同类型算法的技术,称为基础学习者。这样做是为了建立一个更加健壮的系统,其中包含了所有基础学习者的预测。可以理解为多个交易者之间的会议室会议,以决定股票的价格是否会上涨。
由于他们都对股票市场有不同的理解,因此从问题陈述到期望的结果有不同的映射功能。因此,他们应该根据自己对市场的理解对股票价格做出各种预测。
在进一步详细介绍之前,您应该了解的一些基本概念是:
这些是一些主要使用的技术:
增强的一些例子是XGBoost,GBM,ADABOOST等。
#让我们看一下数据集数据的结构
'data.frame':614 obs。13个变量:
$ ApplicantIncome:int 5849 4583 3000 2583 6000 5417 2333 3036 4006 12841 ...
$ CoapplicantIncome:num 0 1508 0 2358 0 ...
$ LoanAmount:int NA 128 66 120 141 267 95 158 168 349 ...
$ Loan_Amount_Term:int 360 360 360 360 360 360 360 360 360 360 ...
$ Credit_History:int 1 1 1 1 1 1 1 0 1 1 ...
#使用中位数输入缺失值
preProcValues < - preProcess(data,method = c(“medianImpute”,“center”,“scale”))
#Spliting训练根据结果分为两部分:75%和25%
index < - createDataPartition(data_processed $ Loan_Status,p = 0.75,list = FALSE)
trainSet < - data_processed [index,]
testSet < - data_processed [-index,]
#定义多个模型
fitControl < - trainControl(
method =“cv”, savePredictions ='final',
classProbs = T)
#Defining预测器和结果
#检查随机森林模型的准确性
混淆矩阵和统计
参考
预测N Y.
N 28 20
Y 9 96
准确度:0.8105
#训练knn模型
#Predicting使用knn模型
testSet $ pred_knn <-predict(object = model_knn,testSet [,predictors])
#检查随机森林模型的准确性
混淆矩阵和统计
预测N Y.
N 29 19
Y 2 103
准确度:0.8627
#Training Logistic回归模型
#Predicting使用knn模型
testSet $ pred_lr <-predict(object = model_lr,testSet [,predictors])
#检查随机森林模型的准确性
混淆矩阵和统计
参考
预测N Y.
N 29 19
Y 2 103
准确度:0.8627
现在,让我们尝试用这些模型形成集合的不同方法,如我们所讨论的:
#Predicting概率
testSet $ pred_rf_prob <-predict(object = model_rf,testSet [,predictors],type ='prob')
testSet $ pred_knn_prob <-predict(object = model_knn,testSet [,predictors],type ='prob')
testSet $ pred_lr_prob <-predict(object = model_lr,testSet [,predictors],type ='prob')
#Spits到0.5的二进制类 多数表决:在多数表决中,我们将为大多数模型预测的观察指定预测。由于我们有三个模型用于二进制分类任务,因此无法实现平局。#多数投票 加权平均值:我们可以采用加权平均值,而不是采用简单平均值。通常,对于更准确的模型,预测的权重很高。让我们将0.5分配给logistic回归,将0.25分配给KNN和随机森林。
#Taking加权平均预测
#Spits到0.5的二进制类 在继续讨论之前,我想回顾一下我们之前讨论过的关于个体模型精度和模型间预测相关性的两个重要标准,这些标准必须得到满足。在上面的集合中,我已经跳过检查三个模型的预测之间的相关性。我随机选择了这三个模型来演示这些概念。如果预测高度相关,那么使用这三个预测可能不会比单个模型提供更好的结果。但你明白了。对?
在同一个例子中,让我们尝试将逻辑回归和GBM应用为顶层模型。请记住,我们将采取以下步骤:
在步骤2中需要注意的一件非常重要的事情是,您应始终对训练数据进行包预测,否则基础层模型的重要性将仅取决于基础层模型可以如何调用训练数据。
#Defining
fitControl < - trainControl(
method =“cv”, savePredictions ='final',#保存最佳参数组合的折叠预测
classProbs = T#保存折叠预测的类概率
)
#
步骤3:现在再次训练顶层模型对底层模型的预测已经对训练数据进行了预测
首先,让我们从GBM模型开始作为顶层模型。
#Predictors用于顶层模型
predictors_top <-c( 'OOF_pred_rf', 'OOF_pred_knn', 'OOF_pred_lr')
#GBM作为顶层模型
同样,我们也可以使用逻辑回归创建一个集合作为顶层模型。
#Logistic回归作为顶层模型
model_glm < -
( [,predictors_top], trControl = fitControl,tuneLength = 3)
#predict使用GBM顶层模型
测试集$ gbm_stacked <-predict(model_gbm,测试集[,predictors_top])
#predict使用logictic回归顶层模型
测试集$ glm_stacked <-predict(model_glm,测试集[,predictors_top])
请注意, 选择模型非常重要,以便从整体中获得最佳效果。