前言
晚上很多内容讲解LGBT+LR的推荐系统,但是很多都讲解的都过于自然,很多都省略了,本文从小白角度来慢慢分析。包括代码分析等等。
问题是什么
CTR全称是click-through rate,中文名叫点击率,它是怎么回事呢?就是给一个样本,这个样本的标签是一个0或者1的值,1表示用户会点击,0表示用户不会点击,数据集中有很多0、1的数据,这些数据用来训练,其实可以看作一个预测的二分类任务。
思路
很多博客都有提到这个思路,大致就是把GBDT选择的叶子节点拿来做one-hot特征,类似在原来基础上再做特征,用于LR的训练,主体是这个思路。接下来会讲解代码部分,大家可以看下实际的代码,代码注释很全,比其他博客的代码要更全一些。
数据集:威斯康辛州乳腺癌数据(适用于分类问题)
这个数据集包含了威斯康辛州记录的569个病人的乳腺癌恶性/良性(1/0)类别型数据(训练目标),以及与之对应的30个维度的生理指标数据;因此这是个非常标准的二类判别数据集,在这里使用load_breast_cancer(return_X_y)来导出数据。
代码
# -*- coding: utf-8 -*-
from scipy.sparse.construct import hstack
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model.logistic import LogisticRegression
from sklearn.metrics.ranking import roc_auc_score
from sklearn.preprocessing.data import OneHotEncoder
import numpy as np
import lightgbm as lgb
import xgboost as xgb
import warnings
warnings.filterwarnings('ignore')
def xgb_lr_train(df_train,df_test):
X_train, X_valid, y_train, y_valid = train_test_split(df_train, df_test , test_size=0.3)
xgboost = xgb.XGBClassifier(nthread=4, learning_rate=0.08, n_estimators=200, max_depth=5, gamma=0, subsample=0.9,
colsample_bytree=0.5)
xgboost.fit(X_train, y_train)
xgb_valid_auc = roc_auc_score(y_valid, xgboost.predict(X_valid))
print("XGBoos

最低0.47元/天 解锁文章
1826

被折叠的 条评论
为什么被折叠?



