1.参考:https://blog.csdn.net/iModel/article/details/79420437
IV值,Information Value,中文意思是信息价值,或者信息量
直观理解:“用IV去衡量变量预测能力”这件事情:我们假设在一个分类问题中,目标变量的类别有两类:Y1,Y2。对于一个待预测的个体A,要判断A属于Y1还是Y2,我们是需要一定的信息的,假设这个信息总量是I,而这些所需要的信息,就蕴含在所有的自变量C1,C2,C3,……,Cn中,那么,对于其中的一个变量Ci来说,其蕴含的信息越多,那么它对于判断A属于Y1还是Y2的贡献就越大,Ci的信息价值就越大,Ci的IV就越大,它就越应该进入到入模变量列表中。
用于挑选变量
(1)WOE值
“Weight of Evidence”,即证据权重。WOE是对原始自变量的一种编码形式。
要对一个变量进行WOE编码,需要首先把这个变量进行分组处理(也叫离散化、分箱等等,说的都是一个意思)
WOE表示的实际上是“当前分组中响应客户占所有响应客户的比例”和“当前分组中没有响应的客户占所有没有响应的客户的比例”的差异。
WOE表示的也就是当前这个组中响应的客户和未响应客户的比值,和所有样本中这个比值的差异。这个差异是用这两个比值的比值,再取对数来表示的。WOE越大,这种差异越大,这个分组里的样本响应的可能性就越大,WOE越小,差异越小,这个分组里的样本响应的可能性就越小。
(2)响应客户(风险模型中,对应的是违约客户,总之,指的是模型中预测变量取值为“是”或者说1的个体)
2.分箱
(1)分箱类型:等距分箱、等频分箱和最优分箱
3.lightlgbm
(1)参数:http://lightgbm.apachecn.org/#/
param = {'num_leaves': 120 ,
//num_leaves
, default=31
, type=int, alias=num_leaf
,一棵树上的叶子数
'min_data_in_leaf': 30 ,
// min_data_in_leaf
, default=20
, type=int, alias=min_data_per_leaf
, min_data
, min_child_samples
一个叶子上数据的最小数量. 可以用来处理过拟合.
'objective':'regression', //default=regression
,type=enum,options=regression
, regression_l1
, huber
, fair
, poisson
, quantile
, quantile_l2
, binary
, multiclass
, multiclassova
, xentropy
, xentlambda
, lambdarank
, alias=objective
, app
, application
'max_depth': -1,
/default=-1
, type=int,限制树模型的最大深度. 这可以在 #data
小的情况下防止过拟合. 树仍然可以通过 leaf-wise 生长.< 0
意味着没有限制.
'learning_rate': 0.01,
//learning_rate
, default=0.1
, type=double, alias=shrinkage_rate
,shrinkage rate (收缩率),在 dart
中, 它还影响了 dropped trees 的归一化权重
"min_child_samples": 30,
"boosting": "gbdt",
//boosting
, default=gbdt
, type=enum, options=gbdt
, rf
, dart
, goss
, alias=boost
, boosting_type//gbdt
, 传统的梯度提升决策树//rf
, Random Forest (随机森林)//dart
, Dropouts meet Multiple Additive Regression Trees//goss
, Gradient-based One-Side Sampling (基于梯度的单侧采样)
"feature_fraction": 0.9,
//feature_fraction
, default=1.0
, type=double, 0.0 < feature_fraction < 1.0
, alias=sub_feature
, colsample_bytree
//如果 feature_fraction
小于 1.0
, LightGBM 将会在每次迭代中随机选择部分特征. 例如, 如果设置为 0.8
, 将会在每棵树训练之前选择 80% 的特征//可以用来加速训练//可以用来处理过拟合
"bagging_freq": 1,
//bagging_freq
, default=0
, type=int, alias=subsample_freq
//bagging 的频率, 0
意味着禁用 bagging. k
意味着每 k
次迭代执行bagging//Note: 为了启用 bagging, bagging_fraction
设置适当
"bagging_fraction": 0.9 ,
//bagging_fraction
, default=1.0
, type=double, 0.0 < bagging_fraction < 1.0
, alias=sub_row
, subsample
//类似于 feature_fraction
, 但是它将在不进行重采样的情况下随机选择部分数据//可以用来加速训练//可以用来处理过拟合//Note: 为了启用 bagging, bagging_freq
应该设置为非零值
"bagging_seed": 11,
//default=3
, type=int, alias=bagging_fraction_seed
//bagging 随机数种子
"metric": 'mse',
default={l2
for regression}, {binary_logloss
for binary classification}, {ndcg
for lambdarank}, type=multi-enum, options=l1
, l2
, ndcg
, auc
, binary_logloss
, binary_error
…
l1
, absolute loss, alias=mean_absolute_error
,mae
l2
, square loss, alias=mean_squared_error
,mse
l2_root
, root square loss, alias=root_mean_squared_error
,rmse
quantile
, Quantile regressionhuber
, Huber lossfair
, Fair losspoisson
, Poisson regressionndcg
, NDCGmap
, MAPauc
, AUCbinary_logloss
, log lossbinary_error
, 样本:0
的正确分类,1
错误分类multi_logloss
, mulit-class 损失日志分类multi_error
, error rate for mulit-class 出错率分类xentropy
, cross-entropy (与可选的线性权重), alias=cross_entropy
xentlambda
, “intensity-weighted” 交叉熵, alias=cross_entropy_lambda
kldiv
, Kullback-Leibler divergence, alias=kullback_leibler
- 支持多指标, 使用
,
分隔
"lambda_l1": 0.1,
lambda_l1
, default=0
, type=double, alias=reg_alpha
//L1 正则
"verbosity": -1,
verbosity
, default=1
, type=int, alias=verbose//<0
= 致命的, =0
= 错误 (警告), >0
= 信息
}
lgb.train(param, trn_data, num_round, valid_sets = [trn_data, val_data], verbose_eval=200, early_stopping_rounds = 100)
(1)num_iterations
, default=100
, type=int, alias=num_iteration
, num_tree
, num_trees
, num_round
, num_rounds
, num_boost_round
//boosting 的迭代次数//Note: 对于 Python/R 包, 这个参数是被忽略的, 使用 train
and cv
的输入参数 num_boost_round
(Python) or nrounds
(R) 来代替//Note: 在内部, LightGBM 对于 multiclass
问题设置 num_class * num_iterations
棵树
(2)valid
, default=""
, type=multi-string, alias=test
, valid_data
, test_data
//验证/测试 数据, LightGBM 将输出这些数据的度量//支持多验证数据集, 以 ,
分割
(3)pred_early_stop
, default=false
, type=bool
//如果 true
将使用提前停止来加速预测。可能影响精度
4.xgboost
参数:https://www.cnblogs.com/mfryf/p/6293814.html
https://blog.csdn.net/panda_zjd/article/details/72623051
xgb_params = {'eta': 0.005,
//为了防止过拟合,更新过程中用到的收缩步长。在每次提升计算之后,算法会直接获得新特征的权重。 eta通过缩减特征的权重使提升计算过程更加保守。缺省值为0.3 取值范围为:[0,1] 通常最后设置eta为0.01~0.2
'max_depth': 10,
//[default=6] 树的最大深度。缺省值为6 取值范围为:[1,∞] 指树的最大深度 树的深度越大,则对数据的拟合程度越高(过拟合程度也越高)。即该参数也是控制过拟合 建议通过交叉验证(xgb.cv ) 进行调参 通常取值:3-10
'subsample': 0.8,
//和GBM中的subsample参数一模一样。这个参数控制对于每棵树,随机采样的比例。 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1
'colsample_bytree': 0.8,
//和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-1
'objective': 'reg:linear',
定义学习任务及相应的学习目标,可选的目标函数如下: “reg:linear” –线性回归。 “reg:logistic” –逻辑回归。 “binary:logistic” –二分类的逻辑回归问题,输出为概率。 “binary:logitraw” –二分类的逻辑回归问题,输出的结果为wTx。 “count:poisson” –计数问题的poisson回归,输出结果为poisson分布。 在poisson回归中,max_delta_step的缺省值为0.7。(used to safeguard optimization) “multi:softmax” –让XGBoost采用softmax目标函数处理多分类问题,同时需要设置参数num_class(类别个数) “multi:softprob” –和softmax一样,但是输出的是ndata * nclass的向量,可以将该向量reshape成ndata行nclass列的矩阵。每行数据表示样本所属于每个类别的概率。 “rank:pairwise” –set XGBoost to do ranking task by minimizing the pairwise loss base_score [ default=0.5 ]
'eval_metric': 'rmse',
对于有效数据的度量方法。 对于回归问题,默认值是rmse,对于分类问题,默认值是error。 典型值有:
rmse 均方根误差(∑Ni=1?2N??????√) mae 平均绝对误差(∑Ni=1|?|N) logloss 负对数似然函数值 error 二分类错误率(阈值为0.5) merror 多分类错误率 mlogloss 多分类logloss损失函数 auc 曲线下面积
'silent': True,
//当这个参数值为1时,静默模式开启,不会输出任何信息。 一般这个参数就保持默认的0,因为这样能帮我们更好地理解模型。
'nthread': 4
这个参数用来进行多线程控制,应当输入系统的核数。 如果你希望使用CPU全部的核,那就不要输入这个参数,算法会自动检测它。
还有两个参数,XGBoost会自动设置,目前你不用管它。接下来咱们一起看booster参数。
}
xgb.train(dtrain=trn_data, num_boost_round=20000, evals=watchlist, early_stopping_rounds=200, verbose_eval=100, params=xgb_params)
(1)eval:通过eval[name]=filenam定义评价指标
(2)num_round - boosting迭代计算次数。
5.参考:https://segmentfault.com/a/1190000014799038?utm_source=tag-newest
合成特征
1)合成特征包括以下类型:
(1)将一个特征与其本身或其他特征相乘(称为特征组合)。
(2)两个特征相除。
(3)对连续特征进行分桶,以分为多个区间分箱。
2)特征组合
特征组合是指通过将两个或多个输入特征相乘来对特征空间中的非线性规律进行编码的合成特征。“cross”(组合)这一术语来自 cross product(向量积)