数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
二、调参
2.1 调参指导
针对
leaf-wise
树的参数优化:num_leaves
:控制了叶节点的数目。它是控制树模型复杂度的主要参数。如果是
level-wise
, 则该参数为 $ MathJax-Element-3 $ ,其中 $ MathJax-Element-2 $ 为树的深度。但是当叶子数量相同时,
leaf-wise
的树要远远深过level-wise
树,非常容易导致过拟合。因此应该让num_leaves
小于 $ MathJax-Element-3 $在
leaf-wise
树中,并不存在depth
的概念。因为不存在一个从leaves
到depth
的合理映射min_data_in_leaf
: 每个叶节点的最少样本数量。它是处理leaf-wise
树的过拟合的重要参数。将它设为较大的值,可以避免生成一个过深的树。但是也可能导致欠拟合。
max_depth
: 控制了树的最大深度。该参数可以显式的限制树的深度。
针对更快的训练速度:
- 通过设置
bagging_fraction
和bagging_freq
参数来使用 bagging 方法 - 通过设置
feature_fraction
参数来使用特征的子抽样 - 使用较小的
max_bin
- 使用
save_binary
在未来的学习过程对数据加载进行加速
- 通过设置
获取更好的准确率:
- 使用较大的
max_bin
(学习速度可能变慢) - 使用较小的
learning_rate
和较大的num_iterations
- 使用较大的
num_leaves
(可能导致过拟合) - 使用更大的训练数据
- 尝试
dart
- 使用较大的
缓解过拟合:
- 使用较小的
max_bin
- 使用较小的
num_leaves
- 使用
min_data_in_leaf
和min_sum_hessian_in_leaf
- 通过设置
bagging_fraction
和bagging_freq
来使用bagging
- 通过设置
feature_fraction
来使用特征子抽样 - 使用更大的训练数据
- 使用
lambda_l1
,lambda_l2
和min_gain_to_split
来使用正则 - 尝试
max_depth
来避免生成过深的树
- 使用较小的
2.2 参数
参数的格式为
key1=value1 key2=value2...
。 (注意:这里是针对lightgbm
可执行程序的配置。在PythonAPI
中,可以直接设定)- 在配置文件和命令行中都可以设置参数。
- 如果在命令行中设置参数时,在
=
前后都不应该有空格 - 在使用配置文件设置参数时,一行只能包含一个参数。你可以使用
#
来注释。 - 如果一个参数在命令行和配置文件中均出现,则优先使用命令行中的参数。
2.2.1 核心参数
config
或者config_file
: 一个字符串,给出了配置文件的路径。默认为空字符串。task
: 一个字符串,给出了要执行的任务。可以为:'train'
或者'training'
:表示是训练任务。默认为'train'
。'predict'
或者'prediction'
或者'test'
:表示是预测任务。'convert_model'
: 表示是模型转换任务。将模型文件转换成if-else
格式。
application
或者objective
或者app
: 一个字符串,表示问题类型。可以为:'regression'
或者'regression_l2'
或者'mean_squared_error'
或者'mse'
或者'l2_root'
或者'root_mean_squred_error'
或者'rmse'
: 表示回归任务,但是使用L2
损失函数。默认为'regression'
'regression_l1'
或者mae
或者mean_absolute_error
: 表示回归任务,但是使用L1
损失函数。'huber'
: 表示回归任务,但是使用huber
损失函数。'fair'
: 表示回归任务,但是使用fair
损失函数。'poisson'
: 表示Poisson
回归任务。'quantile'
: 表示quantile
回归任务。'quantile_l2'
:表示quantile
回归任务,但是使用了L2
损失函数。'mape'
或者'mean_absolute_precentage_error'
: 表示回归任务,但是使用MAPE
损失函数'gamma'
: 表示gamma
回归任务。'tweedie'
: 表示tweedie
回归任务。'binary'
: 表示二分类任务,使用对数损失函数作为目标函数。'multiclass'
: 表示多分类任务,使用softmax
函数作为目标函数。必须设置num_class
参数'multiclassova'
或者'multiclass_ova'
或者'ova'
或者'ovr'
: 表示多分类任务,使用one-vs-all
的二分类目标函数。必须设置num_class
参数'xentropy'
或者'cross_entropy'
: 目标函数为交叉熵(同时具有可选择的线性权重)。要求标签是[0,1]
之间的数值。'xentlambda'
或者'cross_entropy_lambda'
: 替代了参数化的cross_entropy
。要求标签是[0,1]
之间的数值。'lambdarank'
:表示排序任务。在
lambdarank
任务中,标签应该为整数类型,数值越大表示相关性越高。label_gain
参数可以用于设置整数标签的增益(权重)
boosting
或者'boost'
或者'boosting_type
': 一个字符串,给出了基学习器模型算法。可以为:'gbdt'
: 表示传统的梯度提升决策树。默认值为'gbdt'
'rf'
: 表示随机森林。'dart'
: 表示带dropout
的gbdt
goss
:表示Gradient-based One-Side Sampling
的gbdt
data
或者train
或者train_data
:一个字符串,给出了训练数据所在的文件的文件名。默认为空字符串。lightgbm
将使用它来训练模型。valid
或者test
或者valid_data
或者test_data
: 一个字符串,表示验证集所在的文件的文件名。默认为空字符串。lightgbm
将输出该数据集的度量。如果有多个验证集,则用逗号
,
分隔。num_iterations
或者num_iteration
或者num_tree
或者num_trees
或者num_round
或者num_rounds
或者num_boost_round
: 一个整数,给出了boosting
的迭代次数。默认为 100。- 对于
python/R
包,该参数是被忽略的。对于python
,使用train()/cv()
的输入参数num_boost_round
来代替。 - 在内部,
lightgbm
对于multiclass
问题设置了num_class*num_iterations
棵树。
- 对于
learning_rate
或者shrinkage_rate
: 一个浮点数,给出了学习率。默认为 0.1在
dart
中,它还会影响dropped trees
的归一化权重。num_leaves
或者num_leaf
: 一个整数,给出了一棵树上的叶子数。默认为 31tree_learner
或者tree
:一个字符串,给出了tree learner
,主要用于并行学习。 默认为'serial'
。 可以为:'serial'
: 单台机器的tree learner
'feature'
: 特征并行的tree learner
'data'
: 数据并行的tree learner
'voting'
: 投票并行的tree learner
num_threads
或者num_thread
或者nthread
:一个整数, 给出了lightgbm
的线程数。默认为OpenMP_default
。- 为了更快的速度,应该将它设置为真正的
CPU
内核数,而不是线程的数量(大多数CPU
使用超线程来使每个CPU
内核生成2个线程)。 - 当数据集较小的时候,不要将它设置的过大
- 对于并行学习,不应该使用全部的
CPU
核心,因为这会使得网络性能不佳
- 为了更快的速度,应该将它设置为真正的
device
: 一个字符串,指定计算设备。默认为'cpu'
。 可以为'gpu','cpu'
。- 建议使用较小的
max_bin
来获得更快的计算速度 - 为了加快学习速度,
GPU
默认使用32位浮点数来求和。你可以设置gpu_use_dp=True
来启动64位浮点数,但是它会使得训练速度降低。
- 建议使用较小的
2.2.2 学习控制参数
max_depth
: 一个整数,限制了树模型的最大深度,默认值为-1
。- 如果小于0,则表示没有限制。
min_data_in_leaf
或者min_data_per_leaf
或者min_data
或者min_child_samples
: 一个整数,表示一个叶子节点上包含的最少样本数量。默认值为 20
min_sum_hessian_in_leaf
或者min_sum_hessian_per_leaf
或者min_sum_hessian
或者min_hessian
或者min_child_weight
: 一个浮点数,表示一个叶子节点上的最小hessian
之和。(也就是叶节点样本权重之和的最小值) 默认为1e-3
。feature_fraction
或者sub_feature
或者colsample_bytree
: 一个浮点数,取值范围为[0.0,1.0]
, 默认值为1.0
。如果小于
1.0
,则lightgbm
会在每次迭代中随机选择部分特征。如0.8
表示:在每棵树训练之前选择80%
的特征来训练。feature_fraction_seed
: 一个整数,表示feature_fraction
的随机数种子,默认为2。bagging_fraction
或者sub_row
或者subsample
:一个浮点数,取值范围为[0.0,1.0]
, 默认值为1.0
。如果小于
1.0
,则lightgbm
会在每次迭代中随机选择部分样本来训练(非重复采样)。如0.8
表示:在每棵树训练之前选择80%
的样本(非重复采样)来训练。bagging_freq
或者subsample_freq
: 一个整数,表示每bagging_freq
次执行bagging
。如果该参数为
0
,表示禁用bagging
。bagging_seed
或者bagging_fraction_seed
: 一个整数,表示bagging
的随机数种子,默认为 3 。early_stopping_round
或者early_stopping_rounds
或者early_stopping
: 一个整数,默认为0。如果一个验证集的度量在
early_stopping_round
循环中没有提升,则停止训练。如果为0则表示不开启早停。lambda_l1
或者reg_alpha
: 一个浮点数,表示L1
正则化系数。默认为0lambda_l2
或者reg_lambda
: 一个浮点数,表示L2
正则化系数。默认为0min_split_gain
或者min_gain_to_split
: 一个浮点数,表示执行切分的最小增益,默认为0drop_rate
: 一个浮点数,取值范围为[0.0,1.0]
,表示dropout
的比例,默认为0.1。 该参数仅在dart
中使用skip_drop
: 一个浮点数,取值范围为[0.0,1.0]
,表示跳过dropout
的概率,默认为0.5。 该参数仅在dart
中使用max_drop
: 一个整数,表示一次迭代中删除树的最大数量,默认为50。 如果小于等于0,则表示没有限制。 该参数仅在dart
中使用uniform_drop
:一个布尔值,表示是否想要均匀的删除树,默认值为False
。 该参数仅在dart
中使用xgboost_dart_mode
: 一个布尔值,表示是否使用xgboost dart
模式,默认值为False
。该参数仅在dart
中使用drop_seed
: 一个整数,表示dropout
的随机数种子,默认值为 4。 该参数仅在dart
中使用top_rate
: 一个浮点数,取值范围为[0.0,1.0]
,表示在goss
中,大梯度数据的保留比例,默认值为 0.2。该参数仅在goss
中使用other_rate
: 一个浮点数,取值范围为[0.0,1.0]
,表示在goss
中,小梯度数据的保留比例,默认值为 0.1。该参数仅在goss
中使用min_data_per_group
:一个整数,表示每个分类组的最小数据量,默认值为100。用于排序任务max_cat_threshold
: 一个整数,表示category
特征的取值集合的最大大小。默认为 32 。cat_smooth
: 一个浮点数,用于category
特征的概率平滑。默认值为 10。它可以降低噪声在
category
特征中的影响,尤其是对于数据很少的类。cat_l2
: 一个浮点数,用于category
切分中的L2
正则化系数。默认为 10 。top_k
或者topk
: 一个整数,用于投票并行中。默认为20 。将它设置为更大的值可以获得更精确的结果,但是会降低训练速度。
2.2.3 IO 参数
max_bin
: 一个整数,表示最大的桶的数量。默认值为 255。lightgbm
会根据它来自动压缩内存。如max_bin=255
时,则lightgbm
将使用uint8
来表示特征的每一个值。
min_data_in_bin
: 一个整数,表示每个桶的最小样本数。默认为3。该方法可以避免出现一个桶只有一个样本的情况。
data_random_seed
: 一个整数,表示并行学习数据分隔中的随机数种子。默认为1它不包括特征并行。
output_model
或者model_output
或者model_out
: 一个字符串,表示训练中输出的模型被保存的文件的文件名。默认LightGBM_model.txt
。input_model
或者model_input
或者model_in
: 一个字符串,表示输入模型的文件的文件名。默认空字符串。- 对于
prediction
任务,该模型将用于预测数据 - 对于
train
任务,训练将从该模型继续
- 对于
output_result
或者predict_result
或者prediction_result
:一个字符串,给出了prediction
结果存放的文件名。默认为LightGBM_predict_result.txt
。pre_partition
或者is_pre_partition
: 一个布尔值,指示数据是否已经被划分。默认值为False
。 如果为true
,则不同的机器使用不同的partition
来训练。它用于并行学习(不包括特征并行)
is_sparse
或者is_enable_sparse
或者enable_sparse
: 一个布尔值,表示是否开启稀疏优化,默认为True
。如果为
True
则启用稀疏优化。two_round
或者two_round_loading
或者use_two_round_loading
: 一个布尔值,指示是否启动两次加载。默认值为False
,表示只需要进行一次加载。- 默认情况下,
lightgbm
会将数据文件映射到内存,然后从内存加载特征,这将提供更快的数据加载速度。但是当数据文件很大时,内存可能会被耗尽。 - 如果数据文件太大,则将它设置为
True
- 默认情况下,
save_binary
或者is_save_binary
或者is_save_binary_file
: 一个布尔值,表示是否将数据集(包括验证集)保存到二进制文件中。默认值为False
。如果为
True
,则可以加快数据的加载速度。verbosity
或者verbose
: 一个整数,表示是否输出中间信息。默认值为1。- 如果小于0,则仅仅输出
critical
信息;如果等于0,则还会输出error,warning
信息; 如果大于0,则还会输出info
信息。
- 如果小于0,则仅仅输出
header
或者has_header
: 一个布尔值,表示输入数据是否有头部。默认为False
。label
或者label_column
: 一个字符串,表示标签列。默认为空字符串。- 你也可以指定一个整数,如
label=0
表示第0列是标签列。 - 你也可以为列名添加前缀,如
label=prefix:label_name
- 你也可以指定一个整数,如
weight
或者weight_column
: 一个字符串,表示样本权重列。默认为空字符串。你也可以指定一个整数,如
weight=0
表示第0列是权重列。注意:它是剔除了标签列之后的索引。假如标签列为
0
,权重列为1
,则这里weight=0
。你也可以为列名添加前缀,如
weight=prefix:weight_name
query
或者query_column
或者gourp
或者group_column
: 一个字符串,query/group ID
列。默认为空字符串。你也可以指定一个整数,如
query=0
表示第0列是query
列。注意:它是剔除了标签列之后的索引。假如标签列为
0
,query
列为1
,则这里query=0
。你也可以为列名添加前缀,如
query=prefix:query_name
ignore_column
或者ignore_feature
或者blacklist
: 一个字符串,表示训练中忽略的一些列,默认为空字符串。- 可以用数字做索引,如
ignore_column=0,1,2
表示第0,1,2 列将被忽略。注意:它是剔除了标签列之后的索引。 - 你也可以为列名添加前缀,如
ignore_column=prefix:ign_name1,ign_name2
- 可以用数字做索引,如
categorical_feature
或者categorical_column
或者cat_feature
或者cat_column
: 一个字符串,指定category
特征的列。默认为空字符串。- 可以用数字做索引,如
categorical_feature=0,1,2
表示第0,1,2 列将作为category
特征。注意:它是剔除了标签列之后的索引。 - 你也可以为列名添加前缀,如
categorical_feature=prefix:cat_name1,cat_name2
- 在
categorycal
特征中,负的取值被视作缺失值。
- 可以用数字做索引,如
predict_raw_score
或者raw_score
或者is_predict_raw_score
: 一个布尔值,表示是否预测原始得分。默认为False
。如果为
True
则仅预测原始得分。该参数只用于
prediction
任务。predict_leaf_index
或者leaf_index
或者is_predict_leaf_index
: 一个布尔值,表示是否预测每个样本在每棵树上的叶节点编号。默认为False
。在预测时,每个样本都会被分配到每棵树的某个叶子节点上。该参数就是要输出这些叶子节点的编号。
该参数只用于
prediction
任务。predict_contrib
或者contrib
或者is_predict_contrib
: 一个布尔值,表示是否输出每个特征对于每个样本的预测的贡献。默认为False
。输出的结果形状为
[nsamples,nfeatures+1]
, 之所以+1
是考虑到bais
的贡献。所有的贡献加起来就是该样本的预测结果。该参数只用于
prediction
任务。bin_construct_sample_cnt
或者subsample_for_bin
: 一个整数,表示用来构建直方图的样本的数量。默认为200000
。- 如果数据非常稀疏,则可以设置为一个更大的值
- 如果设置更大的值,则会提供更好的训练效果,但是会增加数据加载时间
num_iteration_predict
: 一个整数,表示在预测中使用多少棵子树。默认为-1。小于等于0表示使用模型的所有子树。
该参数只用于
prediction
任务。pred_early_stop
:一个布尔值,表示是否使用早停来加速预测。默认为False
。如果为
True
,则可能影响精度。pred_early_stop_freq
: 一个整数,表示检查早停的频率。默认为10pred_early_stop_margin
: 一个浮点数,表示早停的边际阈值。默认为 10.0use_missing
: 一个布尔值,表示是否使用缺失值功能。默认为True
如果为
False
则禁用缺失值功能。zero_as_missing
: 一个布尔值,表示是否将所有的零(包括在libsvm/sparse矩阵
中未显示的值)都视为缺失值。 默认为False
。- 如果为
False
,则将np.nan
视作缺失值。 - 如果为
True
,则np.nan
和 零都将视作缺失值。
- 如果为
init_score_file
: 一个字符串,表示训练时的初始化分数文件的路径。默认为空字符串,表示train_data_file+".init"
(如果存在)valid_init_score_file
: 一个字符串,表示验证时的初始化分数文件的路径。默认为空字符串,表示valid_data_file+".init"
(如果存在)如果有多个(对应于多个验证集),则可以用逗号
,
来分隔。
2.2.4 目标函数的参数
sigmoid
: 一个浮点数,用sigmoid
函数的参数,默认为 1.0。它用于二分类任务和
lambdarank
任务。alpha
: 一个浮点数,用于Huber
损失函数和Quantile regression
,默认值为 1.0。它用于
huber
回归任务和Quantile
回归任务。fair_c
: 一个浮点数,用于Fair
损失函数,默认值为 1.0 。它用于
fair
回归任务。gaussian_eta
: 一个浮点数,用于控制高斯函数的宽度,默认值为 1.0 。它用于
regression_l1
回归任务和huber
回归任务。posson_max_delta_step
: 一个浮点数,用于Poisson regression
的参数,默认值为 0.7 。它用于
poisson
回归任务。scale_pos_weight
: 一个浮点数,用于调整正样本的权重,默认值为 1.0它用于二分类任务。
boost_from_average
: 一个布尔值,指示是否将初始得分调整为平均值(它可以使得收敛速度更快)。它。默认为
True
。它用于回归任务。
is_unbalance
或者unbalanced_set
: 一个布尔值,指示训练数据是否均衡的。默认为True
。它用于二分类任务。
max_position
: 一个整数,指示将在这个NDCG
位置优化。默认为 20 。它用于
lambdarank
任务。label_gain
: 一个浮点数序列,给出了每个标签的增益。默认值为0,1,3,7,15,....
(即 $ MathJax-Element-4 $ )它用于
lambdarank
任务。num_class
或者num_classes
: 一个整数,指示了多分类任务中的类别数量。默认为 1它用于多分类任务。
reg_sqrt
: 一个布尔值,默认为False
。如果为
True
,则拟合的结果为: $ MathJax-Element-5 $ 。同时预测的结果被自动转换为: $ MathJax-Element-6 $ 。它用于回归任务。
2.2.5 度量参数
metric
:一个字符串,指定了度量的指标,默认为:对于回归问题,使用l2
; 对于二分类问题,使用binary_logloss
;对于lambdarank
问题,使用ndcg
。'l1'
或者mean_absolute_error
或者mae
或者regression_l1
: 表示绝对值损失'l2'
或者mean_squared_error
或者mse
或者regression_l2
或者regression
:表示平方损失'l2_root'
或者root_mean_squared_error
或者rmse
:表示开方损失'quantile'
: 表示Quantile
回归中的损失'mape'
或者'mean_absolute_percentage_error'
:表示MAPE
损失'huber'
: 表示huber
损失'fair'
: 表示fair
损失'poisson'
: 表示poisson
回归的负对数似然'gamma'
: 表示gamma
回归的负对数似然'gamma_deviance'
: 表示gamma
回归的残差的方差'tweedie'
: 表示Tweedie
回归的负对数似然'ndcg'
: 表示NDCG
'map'
或者'mean_average_precision'
: 表示平均的精度'auc'
: 表示AUC
'binary_logloss'
或者'binary'
: 表示二类分类中的对数损失函数'binary_error'
: 表示二类分类中的分类错误率'multi_logloss'
或者'multiclass'
或者'softmax'
或者'multiclassova'
或者'multiclass_ova'
,或者'ova'
或者'ovr'
: 表示多类分类中的对数损失函数'multi_error'
: 表示多分类中的分类错误率'xentropy'
或者'cross_entropy'
: 表示交叉熵'xentlambda'
或者'cross_entropy_lambda'
: 表示intensity
加权的交叉熵'kldiv'
或者'kullback_leibler'
: 表示KL
散度
如果有多个度量指标,则用逗号
,
分隔。metric_freq
或者'output_freq
': 一个正式,表示每隔多少次输出一次度量结果。默认为1 。train_metric
或者training_metric
或者is_training_metric
: 一个布尔值,默认为False
。如果为
True
,则在训练时就输出度量结果。ndcg_at
或者ndcg_eval_at
或者eval_at
: 一个整数列表,指定了NDCG
评估点的位置。默认为1,2,3,4,5
。
2.2.6 网络参数
这里的参数仅用于并行学习,并且仅用于socket
版本,而不支持mpi
版本。
num_machines
或者num_machine
: 一个整数,表示并行学习的机器的数量。默认为 1 。local_listen_port
或者local_port
: 一个整数,表示监听本地机器的端口号。默认为12400
。训练之前,你应该在防火墙中开放该端口。
time_out
: 一个整数,表示允许socket
的超时时间(单位:分钟)。默认值为 120machine_list_file
或者mlist
: 一个字符串,指示了并行学习的机器列表文件的文件名。默认为空字符串。该文件每一行包含一个
IP
和端口号。格式是ip port
,以空格分隔。
2.2.7 GPU 参数
gpu_platform_id
: 一个整数,表示OpenCL platform ID
。通常每个GPU
供应商都会 公开一个OpenCL platform
。 默认为-1(表示系统级的默认platform
)gpu_device_id
: 一个整数,表示设备ID
。 默认为-1 。在选定的
platform
上,每个GPU
都有一个唯一的设备ID
。-1
表示选定platform
上的默认设备。gpu_use_dp
: 一个布尔值,默认值为False
。如果为
True
, 则在GPU
上计算时使用双精度(否则使用单精度)
2.2.8 模型参数
convert_model_language
: 一个字符串,目前只支持'cpp'
。如果该参数被设置,且
task='train'
, 则该模型会被转换。convert_model
: 一个字符串,表示转换模型到一个文件的文件名。默认为'gbdt_prediction.cpp'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论