美文网首页
4_基于GBDT、LR的分类方法

4_基于GBDT、LR的分类方法

作者: 蓝冻 | 来源:发表于2020-11-25 15:33 被阅读0次

推荐场景下的一些问题可以转化为分类问题,甚至是二分类问题。

GBDT是一种监督学习的方法。

假设我们有一个5000 X 21维的数组型训练集,5000为样本数,前20维是样本的特征,最后一维是分类的标签,取值为0或1。假设训练集已完成前期各项数据处理,仅等待输入模型进行训练。

设该训练集为 train,下面我们写一个函数,基于GBDT对训练集进行学习。

from sklearn.ensemble import GradientBoostingClassifier

def  gbdt_train():

        x_train = train[ :, 0:20]

        y_train = train[ :, 20]

        dt = GradientBoostingClassifier( learning_rate=0.1, n_estimators=100, max_depth=8 )

        dt.fit( x_train, y_train )

        return dt

现在,假设我们获得了测试集test,1000 X 21维的数组。我们依据测试集来对上一步训练的模型进行效果评估。

def  model_eval():

        x_test = test[ :, 0:20]

        y_test = test[ :, 20]

        dt = gbdt_train()

         y_forcast = dt.predict_proba( x_test )

         y_result = list()

        for k in y_forcast:

                y_result.append(1 if k[ 1 ] > 0.5  else  0)     # 注意k的数据类型,k[1]才是对应的概率

        mse = sklearn.metrics.mean_squared_error( y_test.values, y_result )

        accuracy = sklearn.metrics.accuracy_score( y_test.values, y_result )

        auc = sklearn.metrics.roc_auc_score( y_test.values, y_result )

可以看到,GBDT用起来还是挺简单的。

下面,我们再采用LR方法对上面的的数据进行训练。

from  sklearn.linear_model import LogisticRegression

def lr_train():

        x_train = train[ :, 0:20]

        y_train = train[ :, 20]

        lr = LogisticRegression( penalty='l2' , tol=1e-4, fit_intercept=True )

        lr.fit( x_train, y_train )

        return lr

我们依据测试集来对训练的模型进行效果评估。

def  model_eval():

        x_test = test[ :, 0:20]

        y_test = test[ :, 20]

        lr = lr_train()

        y_forcast = lr.predict_proba( x_test )   # 注意lr.predict()与lr.predict_proba()的差别

        y_result = list()

        for k in y_forcast:

             y_result.append(1 if k[ 1 ] > 0.5  else  0)     # 注意k的数据类型,k[1]才是对应的概率

        mse = sklearn.metrics.mean_squared_error( y_test.values, y_result )

        accuracy = sklearn.metrics.accuracy_score( y_test.values, y_result )

        auc = sklearn.metrics.roc_auc_score( y_test.values, y_result )

可以看到,LR用起来也挺简单的。

下面,我们再建立一个GBDT+LR的模型来训练数据。

from sklearn.preprocessing import OneHotEncoder

def gbdt_lr_train():

        x_train = train[ :, 0:20]

        y_train = train[ :, 20]

        dt = GradientBoostingClassifier()

        dt.fit( x_train, y_train )

        gbdt_lr = LogisticRegression()

        encoder = OneHotEncoder()

        encoder.fit( dt.apply(x_train).reshape(-1, 100) )  # 此处100为模型dt里参数n_estimators的值,此处进行数据格式转换才能传入encoder.fit()

        gbdt_lr.fit( encoder.transform( dt.apply(x_train).reshape(-1, 100)), y_train)

        return encoder,   dt,  gbdt_lr

下面,们依据测试集来对训练的模型进行效果评估。

def  model_eval():

        x_test = test[ :, 0:20]

        y_test = test[ :, 20]

        encoder,   dt,  gbdt_lr = gbdt_lr_train()

        y_forcast = gbdt_lr.predict_proba( encoder.transform( dt.apply(x_test).reshape(-1,100)) )

        y_result = list()

        for k in y_forcast:

             y_result.append(1 if k[ 1 ] > 0.5  else  0)   

        mse = sklearn.metrics.mean_squared_error( y_test.values, y_result )

        accuracy = sklearn.metrics.accuracy_score( y_test.values, y_result )

        auc = sklearn.metrics.roc_auc_score( y_test.values, y_result )

相关文章

  • 4_基于GBDT、LR的分类方法

    推荐场景下的一些问题可以转化为分类问题,甚至是二分类问题。 GBDT是一种监督学习的方法。 假设我们有一个5000...

  • ctr 模型比较

    LR LR是线性分类模型,要求输入线性独立特征。 GBDT GBDT是一种迭代的决策树算法,它由多棵决策树组成,所...

  • 机器学习数据挖掘常见面试题

    模型推导:LR SVM GBDT EM RF、GBDT的区别 决策树处理连续值的方法 特征选择的方法 过拟合的解决...

  • GBDT+LR

    1.本质上GBDT+LR是一种具有stacking思想的二分类器模型,所以可以用来解决二分类问题。这个方法出自于F...

  • LR知识点梳理

    LR适用场景LR适用于需要求解二分类概率的场景,例如CTR预估,金融风控等场景,CTR预估中,工业界常使用GBDT...

  • GBDT和XGBOOST区别

    1.gbdt以CART作为基分类器,xgb还支持线性分类器,这个时候xgb相当于带L1和L2正则项的LR或线性回归...

  • GBDT原理分析以及XGBoost代码实践

    简介 GBDT中文译为梯度提升决策树。GBDT是以分类树或者回归树作为基本分类器的提升方法,它被认为是统计学习中性...

  • Logistic Regression(1)

    LR 应用经验 LR-SVM-GBDT对比: LR能以概率的形式输出结果,而非只是0和1的判定。SVM的输出原本只...

  • 推荐系统-重排序-CTR-GBDT+LR

    概述 GBDT的加入,是为了弥补LR难以实现特征组合的缺点。 LR LR作为一个线性模型,以概率形式输出结果,在工...

  • 大数据DMP画像系统

    系统开发要求 涉及的技术要点:spark 、elasticsearch、hadoop 、hive 、LR GBDT...

网友评论

      本文标题:4_基于GBDT、LR的分类方法

      本文链接:https://www.haomeiwen.com/subject/ywniiktx.html