Adaboost与Logistic Regrassion

本文将逻辑回归模型按照AdaBoost算法进行组合,重点在于理解AdaBoost如何组合各种弱分类器。
参考:
李航 统计学习方法:
数据集:Givemesomecredit From Kaggle

提升方法

提升方法从弱学习算法出发,反复学习,得到一系列弱分类器(又称为基本分类器),然后组合这些分类器,构成一个强分类器。大多数的提升方法都是通过改变训练数据的概率分布,针对不同的训练数据分布调用弱学习算法学习一系列弱分类器。对于提升方法而言,需要解决的一是在每一轮如何改变训练数据的权值或概率分布;二是如何将弱分类器组合成一个强分类器。
提升方法包括adaboost, GBDT, 随机森林等。adaboost算法可将弱分类器,例如决策树,逻辑回归,支持向量机进行组合,提高预测能力。

Adaboost 算法

AdaBoost 提高前一轮弱分类器错误分类样本的权值,降低那些被正确分类的权值。对于弱分类器的组合,AdaBoost采取加权多数表决的办法,即加大分类误差率晓得弱分类器的权值,使其在表决中起到较大的作用,减少分类误差率大的弱分类器的权值,使其在表决中起到较小的作用。

假设给定一个二类分类的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } , T = \{(x_1,y_1),(x_2, y_2),...,(x_n,y_n)\}, T={ (x1,y1),(x2,y2),...,(xn,yn)},其中,每个样本点由实例与标记组成。

import pandas as pd
df = pd.read_csv('cs-training.csv',index_col=0)
data = df.dropna() # 删除缺失值
xdata,ydata = data.iloc[:,1:],data.iloc[:,0] 
# 将数据集拆分成训练集和测试集,测试集占比test_size = 0.3
from sklearn.model_selection import train_test_split 
xtrain, xtest, ytrain, ytest = train_test_split(xdata,ydata, test_size = 0.3)

输入:训练数据集:xtrain;标签:ytain;弱学习器算法:逻辑回归

from sklearn.linear_model import LogisticRegression as LR

步骤一:初始化训练数据的权值分布 D 1 = ( w 11 , w 12 , . . . , w 1 n ) , w 1 i = 1 n , i = 1 , 2 , . . . , n 。 D_1 = (w_{11},w_{12},...,w_{1n}), w_{1i} = \frac{1}{n}, i=1,2,...,n。 D1=(w11,w12,...,w1n),w1i=n1,i=1,2,...,n
说明:假设训练数据集具有均匀分布的权值分布,即每个训练样本在基本分类器中作用相同。这一假设保证第一步能够在原始数据上学习基本分类器 G 1 ( x ) G_1(x) G1(x)

# 步骤一:构造一个DataFame,记录每次得到的y值和更新的权重。
weight = pd.DataFrame({
   'real': ytrain.values, 'weight':1/ytrain.count()})
#weight

步骤二:对m = 1,2,…,M

(a) 使用具有权值分布 D m D_m Dm的训练数据集学习,得到基本分类器 G m ( x ) : X → { 0 , 1 } G_m(x):X\rightarrow \{0,1\} Gm(x):X{ 0,1}

#lr = LR()    
#lr.fit(xtrain, ytrain)
#lr.predict(xtrain)
ypred = LR().fit(xtrain, ytrain).predict(xtrain)
weight['y1'] = ypred 

(b)计算 G m ( x ) G_m(x) Gm(x)在训练数据集上的分类误差率
e m = ∑ i = 1 n P ( G m ( x i ) ≠ y i ) = ∑ i = 1 n w m i I ( G m ( x i ) ≠ y i ) = ∑ G m ( x i ) ≠ y i w m i 。 e_m = \sum_{i=1}^n P(G_m(x_i)\ne y_i) = \sum^n_{i=1}w_{mi}I(G_m(x_i)\ne y_i)=\sum_{G_m(x_i)\ne y_i}w_{mi}。 em=i=1nP(Gm(xi)̸=yi)=i=1nwmiI(Gm(xi)̸

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值