LightGBM
LGBM可以从libsvm TSV CSV TXT加载数据
Numpy 2维数组 pandas DF H2O Data Table Frame Scipy 稀疏矩阵
LightGBM 二进制文件
train_data= lgb.Dataset("train.svm.bin") #加载二进制文件data = np.random.rand(500,10)label = np.random.randint(2,size=500) # 指定生成0~1之间的500个对象train_data = lgb.Dataset(data,label=label)# 保存数据:train_data = lgb.Dataset('train.svm.txt')train_data.save_binary("train.bin")# 生成验证数据集validation_data = train_data.create_valid("validation.svm")# 或者validation_data = lgb.Dataset("validation.svm",reference=train_data)# 在LGB中验证数据应该和训练数据对齐# 可以使用feature_name 和 categorical_feature 关键字指定特征名和类别名# LGB可以直接使用类别名做为输入,不需要使用独热码转换,但是类别应该被转换为整型# 可以使用Weight关键字作为权重设置项 是一个numpy的ndarray数组# 参数设置:""""param = {'num_leaves':31,'objective':'binary'}param['metric']='auc'or param['metric']=['auc','binary_logloss']"""num_round =10bst = lgb.train(param,train_data,num_round,valid_sets=[validation_data])bst.save_model('model.txt')# 保存为json模型文件json_model = bst.dump_model()# 加载模型文件bst = lgb.Booster(model_file='model.txt')#交叉检验lgb.cv(param,train_data,num_round,nfold=5)#早停策略bst = lgb.train(param,train_data,num_round,valid_sets=valid_sets,early_stopping_rounds=5)bst.save_model('model.txt',num_iteration=bst.best_iteration)# 设置早停策略,等待五轮要是没有更好的改善,直接结束,保存最好的结果pred = bst.predict(data)# num_iteration可以 用在预测部分用来进行指定迭代次数#API:Dataset():group:是用来做排序任务的silent:是否在构建数据的过程中进行打印params:用来传入模型的参数free_raw_data: 是否释放原生数据使用add_features_form()使用别的数据集来对当前数据集增加特征,补充数据get_ref_chain()获得数据集对象链construct() 构建数据集num_data()/feature()获得数据集特征列数和目标列数get_param()获得当前数据集的参数subset(indices,params=None)获得索引和参数指定的子集Booster():params:train_set:model_file:模型文件的路径model_str:加载模型文件的字符串路径silent:add_valid(data,name):添加验证数据attr(key):获取提升机的属性字符串current_iteration():获得当前的迭代索引dump_model(num_iteration,start_iteration=0,importance_type='slit')模型装载成json文件eval(data,name,feval=None)支持自定义评估方式feval : preds 预测值 一位数组或者是列表 eval_data 评估数据集eval_train():在训练集上进行评估eval_valid():在验证集上进行评估get_leaf_output():得到一个叶子节点的输出get_split_value_histogram():得到分离直方图lower_bound():模型下界model_from_string():加载字符串中的提升机model_to_string():将提升机存为字符串num_model_per_iteration():每次迭代得到的模型数量num_trees():得到弱分类器的数量refit():在新的数据上进行拟合rollback_one_iter():回滚一次迭代shuffle_models()随机打乱模型update 一轮更新一次提升机upper_bound():上界train():params:训练参数train_set:训练数据集num_boost_round:提升迭代的次数valid_sets:验证数据集valid_names:验证数据的名称fobj:自定义的目标函数pred traingrad 一阶导数 hess 二阶导数early_stopping_round:是一个早停策略,需要设置验证集和评估指标cv():folds:stratified:是否启用分层抽样eval_train_metric:是否展示训练过程的评估精度LGB自带绘图模块plot_mportance():能够画出重要特征booster ,importance_type,max_num_features 显示的最多特征数量dpi 图的像素 grid 添加网格 precision 显示浮点数的精度plot_split_value_histogram():画出分离直方图booster,feature_name,bins 直方的最大数量width_coef 直方的宽度, title 直方图的名字figsize 图的大小plot_metric():画出精度图booster,metric,dataset_names,后面都是一样的没什么意思plot_tree():绘制指定的提升树booster 这就是提升树模型tree_index:要绘制的目标数的索引show_info:显示那些信息分离增益 子树内部数据项数 子树权重和 叶子节点数 叶子节点权重节点内训练数据的百分比precision:显示的数据精度orientation:树的放置方向create_tree_digraph: 绘制树的有向图参数同上register_logger()注册自定义日志# 回调方法:early_stopping():stopping_round:早停时长 first_metric_only 是否只用第一个精确指标来评估早停verbose 是否打印早停消息print_evaluation():打印评估结果period:几轮打印一次评估结果show_stdv:显示标准差record_evaluation():记录评估历史信息eval_result :存放评估轮次的信息(字典)reset_parameter():重置参数parameter 参数列表
调参重要程度:
- max_depth and num_leaves 最大深度和叶子节点数量,叶子节点少于2^max_depth
- min_data_in_leaf max_bin 也就是间接控制叶子节点数量,控制模型训练速度 最大特征分割
- feature_fraction bagging_fraction bagging_freq 特征抽取比例 bagging比例
- l1,l2
- min_split_gain
分类任务使用LGBMClassifier 回归任务使用LGBMRegressor 排序任务使用 LGBMRanker这三者参数相同boosting_type:有四种模式 GBDT 梯度提升树 DRAT丢弃多加性回归树GOSS单边样本梯度提升 rf随机森林num_leavesmax_depth 这两个是重要参数learning rate 学习率n_eastimator 拟合数量,迭代次数subsample_for_bin 每个特征分段的子样本数量objective Default: ‘regression’ for LGBMRegressor, ‘binary’ or ‘multiclass’ for LGBMClassifier, ‘lambdarank’ for LGBMRanker.class_weight 类标签权重min_split_gainmin_child_weightmin_child_sample 叶子节点中样本最少的数量subsample 训练数据中子样本出现的比例colsample_bytree 构建每个树的时候每个特征列使用子样本比例reg_alpha l1reg_lambda l2random_staten_jobs 多线程开启数量silentimportance_type 两种 split 和gain
调参的时候使用较高的学习率,加快收敛速度
- 基本调参
- 正则化,减少过拟合
- 降低学习率,提升准确性
n_estimators/num_iterations/num_round/num_boost_round
这几个是跌代次数的参数
精度标准
这里就是代价函数的种类
