数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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 调参指导
当出现过拟合时,有两类参数可以缓解:
- 第一类参数:用于直接控制模型的复杂度。包括
max_depth,min_child_weight,gamma
等参数 - 第二类参数:用于增加随机性,从而使得模型在训练时对于噪音不敏感。包括
subsample,colsample_bytree
你也可以直接减少步长
eta
,但是此时需要增加num_round
参数。- 第一类参数:用于直接控制模型的复杂度。包括
当遇到数据不平衡时(如广告点击率预测任务),有两种方式提高模型的预测性能:
如果你关心的是预测的
AUC
:- 你可以通过
scale_pos_weight
参数来平衡正负样本的权重 - 使用
AUC
来评估
- 你可以通过
如果你关心的是预测的正确率:
- 你不能重新平衡正负样本
- 设置
max_delta_step
为一个有限的值(如 1),从而有助于收敛
2.2 参数
2.2.1. 通用参数
booster
: 指定了使用那一种booster
。可选的值为:'gbtree'
: 表示采用xgboost
(默认值)'gblinear'
: 表示采用线性模型。'gblinear'
使用带l1,l2
正则化的线性回归模型作为基学习器。因为boost
算法是一个线性叠加的过程,而线性回归模型也是一个线性叠加的过程。因此叠加的最终结果就是一个整体的线性模型,xgboost
最后会获得这个线性模型的系数。'dart'
: 表示采用dart booster
silent
: 如果为 0(默认值),则表示打印运行时的信息;如果为 1, 则表示silent mode
( 不打印这些信息)nthread
: 指定了运行时的并行线程的数量。如果未设定该参数,则默认值为可用的最大线程数。num_pbuffer
: 指定了prediction buffer
的大小。通常设定为训练样本的数量。该参数由xgboost
自动设定,无需用户指定。该
buffer
用于保存上一轮boostring step
的预测结果。num_feature
: 样本的特征数量。通常设定为特征的最大维数。该参数由xgboost
自动设定,无需用户指定。
2.2.2 tree booster 参数
针对tree booster
的参数(适用于booster=gbtree,dart
) :
eta
: 也称作学习率。默认为 0.3 。范围为[0,1]
gamma
: 也称作最小划分损失min_split_loss
。 它刻画的是:对于一个叶子节点,当对它采取划分之后,损失函数的降低值的阈值。- 如果大于该阈值,则该叶子节点值得继续划分
- 如果小于该阈值,则该叶子节点不值得继续划分
该值越大,则算法越保守(尽可能的少划分)。默认值为 0
max_depth
: 每棵子树的最大深度。其取值范围为 $ MathJax-Element-42 $ , 0 表示没有限制,默认值为6。该值越大,则子树越复杂;值越小,则子树越简单。
min_child_weight
: 子节点的权重阈值。它刻画的是:对于一个叶子节点,当对它采取划分之后,它的所有子节点的权重之和的阈值。- 如果它的所有子节点的权重之和大于该阈值,则该叶子节点值得继续划分
- 如果它的所有子节点的权重之和小于该阈值,则该叶子节点不值得继续划分
所谓的权重:
- 对于线性模型(
booster=gblinear
),权重就是:叶子节点包含的样本数量。 因此该参数就是每个节点包含的最少样本数量。 - 对于树模型(
booster=gbtree,dart
),权重就是:叶子节点包含样本的所有二阶偏导数之和。
该值越大,则算法越保守(尽可能的少划分)。默认值为 1
max_delta_step
: 每棵树的权重估计时的最大delta step
。取值范围为 $ MathJax-Element-42 $ ,0 表示没有限制,默认值为 0 。通常该参数不需要设置,但是在逻辑回归中,如果类别比例非常不平衡时,该参数可能有帮助。
subsample
: 对训练样本的采样比例。取值范围为(0,1]
,默认值为 1 。如果为
0.5
, 表示随机使用一半的训练样本来训练子树。它有助于缓解过拟合。colsample_bytree
: 构建子树时,对特征的采样比例。取值范围为(0,1]
, 默认值为 1。如果为
0.5
, 表示随机使用一半的特征来训练子树。它有助于缓解过拟合。colsample_bylevel
: 寻找划分点时,对特征的采样比例。取值范围为(0,1]
, 默认值为 1。如果为
0.5
, 表示随机使用一半的特征来寻找最佳划分点。它有助于缓解过拟合。lambda
:L2
正则化系数(基于weights
的正则化),默认为 1。 该值越大则模型越简单alpha
:L1
正则化系数(基于weights
的正则化),默认为 0。 该值越大则模型越简单tree_method
: 指定了构建树的算法,可以为下列的值:(默认为'auto'
)'auto'
: 使用启发式算法来选择一个更快的tree_method
:- 对于小的和中等的训练集,使用
exact greedy
算法分裂节点 - 对于非常大的训练集,使用近似算法分裂节点
- 旧版本在单机上总是使用
exact greedy
分裂节点
- 对于小的和中等的训练集,使用
'exact'
: 使用exact greedy
算法分裂节点'approx'
: 使用近似算法分裂节点'hist'
: 使用histogram
优化的近似算法分裂节点(比如使用了bin cacheing
优化)'gpu_exact'
: 基于GPU
的exact greedy
算法分裂节点'gpu_hist'
: 基于GPU
的histogram
算法分裂节点
注意:分布式,以及外存版本的算法只支持
'approx','hist','gpu_hist'
等近似算法sketch_eps
: 指定了分桶的步长。其取值范围为(0,1)
, 默认值为 0.03 。它仅仅用于
tree_medhod='approx'
。它会产生大约 $ MathJax-Element-5 $ 个分桶。它并不会显示的分桶,而是会每隔
sketch_pes
个单位(一个单位表示最大值减去最小值的区间)统计一次。用户通常不需要调整该参数。
scale_pos_weight
: 用于调整正负样本的权重,常用于类别不平衡的分类问题。默认为 1。一个典型的参数值为:
负样本数量/正样本数量
updater
: 它是一个逗号分隔的字符串,指定了一组需要运行的tree updaters
,用于构建和修正决策树。默认为'grow_colmaker,prune'
。该参数通常是自动设定的,无需用户指定。但是用户也可以显式的指定。
refresh_leaf
: 它是一个updater plugin
。 如果为true
,则树节点的统计数据和树的叶节点数据都被更新;否则只有树节点的统计数据被更新。默认为 1process_type
: 指定要执行的处理过程(如:创建子树、更新子树)。该参数通常是自动设定的,无需用户指定。grow_policy
: 用于指定子树的生长策略。仅仅支持tree_method='hist'
。 有两种策略:'depthwise'
: 优先拆分那些靠近根部的子节点。默认为'depthwise'
'lossguide'
: 优先拆分导致损失函数降低最快的子节点
max_leaves
: 最多的叶子节点。如果为0,则没有限制。默认值为 0 。该参数仅仅和
grow_policy='lossguide'
关系较大。max_bin
: 指定了最大的分桶数量。默认值为 256 。该参数仅仅当
tree_method='hist','gpu_hist'
时有效。predictor
: 指定预测器的算法,默认为'cpu_predictor'
。可以为:'cpu_predictor'
: 使用CPU
来预测'gpu_predictor'
: 使用GPU
来预测。对于tree_method='gpu_exact,gpu_hist'
,'gpu_redictor'
是默认值。
2.2.3 dart booster 参数
sample_type
: 它指定了丢弃时的策略:'uniform'
: 随机丢弃子树(默认值)'weighted'
: 根据权重的比例来丢弃子树
normaliz_type
:它指定了归一化策略:'tree'
: 新的子树将被缩放为: $ MathJax-Element-6 $ ; 被丢弃的子树被缩放为 $ MathJax-Element-7 $ 。其中 $ MathJax-Element-12 $ 为学习率, $ MathJax-Element-17 $ 为被丢弃的子树的数量'forest'
:新的子树将被缩放为: $ MathJax-Element-10 $ ; 被丢弃的子树被缩放为 $ MathJax-Element-11 $ 。其中 $ MathJax-Element-12 $ 为学习率
rate_drop
:dropout rate
,指定了当前要丢弃的子树占当前所有子树的比例。范围为[0.0,1.0]
, 默认为0.0
。one_drop
: 如果该参数为true
,则在dropout
期间,至少有一个子树总是被丢弃。默认为 0 。skip_drop
: 它指定了不执行dropout
的概率,其范围是[0.0,1.0]
, 默认为 0.0 。如果跳过了
dropout
,则新的子树直接加入到模型中(和xgboost
相同的方式)
2.2.4 linear booster 参数
lambda
:L2
正则化系数(基于weights
的正则化),默认为 0。 该值越大则模型越简单alpha
:L1
正则化系数(基于weights
的正则化),默认为 0。 该值越大则模型越简单lambda_bias
:L2
正则化系数( 基于bias
的正则化),默认为 0.没有基于
bias
的L1
正则化,因为它不重要。
2.4.5 tweedie regression 参数:
weedie_variance_power
: 指定了tweedie
分布的方差。取值范围为(1,2)
,默认为 1.5 。越接近1,则越接近泊松分布;越接近2,则越接近
gamma
分布。
2.4.6 学习任务参数
objective
:指定任务类型,默认为'reg:linear'
。'reg:linear'
: 线性回归模型。它的模型输出是连续值'reg:logistic'
: 逻辑回归模型。它的模型输出是连续值,位于区间[0,1]
。'binary:logistic'
: 二分类的逻辑回归模型,它的模型输出是连续值,位于区间[0,1]
,表示取正负类别的概率。它和
'reg:logistic'
几乎完全相同,除了有一点不同:'reg:logistic'
的默认evaluation metric
是rmse
。'binary:logistic'
的默认evaluation metric
是error
'binary:logitraw'
: 二分类的逻辑回归模型,输出为分数值(在logistic
转换之前的值)'count:poisson'
: 对count data
的poisson regression
, 输出为泊松分布的均值。'multi:softmax'
: 基于softmax
的多分类模型。此时你需要设定num_class
参数来指定类别数量。'multi:softprob'
: 基于softmax
的多分类模型,但是它的输出是一个矩阵:ndata*nclass
,给出了每个样本属于每个类别的概率。'rank:pairwise'
: 排序模型(优化目标为最小化pairwise loss
)'reg:gamma'
:gamma regression
, 输出为伽马分布的均值。'reg:tweedie'
:'tweedie regression'
。
base_score
: 所有样本的初始预测分,它用于设定一个初始的、全局的bias
。 默认为 0.5 。- 当迭代的数量足够大时,该参数没有什么影响
eval_metric
: 用于验证集的评估指标。其默认值和objective
参数高度相关。回归问题的默认值是
rmse
; 分类问题的默认值是error
; 排序问题的默认值是mean average precision
。你可以指定多个
evaluation metrics
。如果有多个验证集,以及多个评估指标.则: 使用最后一个验证集的最后一个评估指标来做早停。但是还是会计算出所有的验证集的所有评估指标。
'rmse'
: 均方误差。'mae'
: 绝对值平均误差'logloss'
: 负的对数似然函数'error'
: 二分类的错误率。它计算的是:预测错误的样本数/所有样本数
所谓的预测是:正类概率大于0.5的样本预测为正类;否则为负类(即阈值为 0.5 )
'error@t'
: 二分类的错误率。但是它的阈值不再是 0.5, 而是由字符串t
给出(它是一个数值转换的字符串)'merror'
: 多类分类的错误率。它计算的是:预测错误的样本数/所有样本数
'mlogloss'
: 多类分类的负对数似然函数'auc'
:AUC
得分'ndcg'
:Normalized Discounted Cumulative Gain
得分'map'
:Mean average precision
得分'ndcg@n','map@n'
:n
为一个整数,用于切分验证集的top
样本来求值。'ndcg-','map-','ndcg@n-','map@n-'
: NDCG and MAP will evaluate the score of a list without any positive samples as 1. By adding “-” in the evaluation metric XGBoost will evaluate these score as 0 to be consistent under some conditions. training repeatedlypoisson-nloglik
: 对于泊松回归,使用负的对数似然gamma-nloglik
: 对于伽马回归,使用负的对数似然gamma-deviance
: 对于伽马回归,使用残差的方差tweedie-nloglik
: 对于tweedie
回归,使用负的对数似然
seed
: 随机数种子,默认为 0 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论