Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

parameter setting #34

Open
weihong2 opened this issue Sep 9, 2020 · 12 comments
Open

parameter setting #34

weihong2 opened this issue Sep 9, 2020 · 12 comments

Comments

@weihong2
Copy link

weihong2 commented Sep 9, 2020

您好,想咨询下deeptable调参问题
1.二分类数据集,正负样本比例不平衡(10 : 1),使用xgboost可以设置样本权重,deeptable是否有类似参数可以设置呢?
2.针对正负样本比例不平衡的数据集,有什么参数设置让模型得到比较好的评估值?
3.nets参数可以多选网络,在训练中是将多个网络组合,还是选择其中一个或几个好的网络呢?
4.看样例可以设置LightGBM参数,那需要有开关开启使用LightGBM吗?
5.对于deeptable有哪些好的调参经验参考呢?

@weihong2
Copy link
Author

weihong2 commented Sep 9, 2020

模型训练结果
image
image
image

@jackguagua
Copy link
Member

  • 样本不平衡可以尝试开启ModelConfig中的apply_class_weight=True, 参考文档

  • 选择nets的搭配最好要先熟悉各个nets的特性,各个nets原作者的paper是最好的参考资料。如果这方面没有太多的经验,建议使用预置的网络模型(Wide&Deep/DeepFM/DCN等等),可参考下列组合

WideDeep = ['linear', 'dnn_nets']

DeepFM = ['linear', 'fm_nets', 'dnn_nets']

xDeepFM = ['linear', 'cin_nets', 'dnn_nets']

AutoInt = ['autoint_nets']

DCN = ['dcn_nets']

FGCNN = ['fgcnn_dnn_nets']

FiBiNet = ['fibi_dnn_nets']

PNN = ['pnn_nets']

AFM = ['afm_nets']
  • apply_gbm_features=True 可以开启GBM模型融合

  • 调参涉及的话题范围太大,我介绍几个关键参数,每个参数都要根据数据集的数据特性来选择

如果数据集以连续型特征为主,以下两个参数非常重要,可以让连续型特征参与到特征衍生和提取的计算中。

  1. auto_categorize: 是否自动把连续性特征转化成类别型,比如有时候int型的数据实际是类别型特征

  2. auto_discrete: 是否自动把连续性特征做离散化处理(分箱)

根据数据集的特征数量调整dnn_params,设置合适的神经元数量和层数,参考

  • HyperDT可以实现自动化的调参,目前还没有正式发布,也没有提供相关文档,如果有兴趣可以参考源码中的测试用例。

class Test_HyperDT():

@weihong2
Copy link
Author

weihong2 commented Sep 9, 2020

nets = ['linear', 'fm_nets', 'dnn_nets', 'linear', 'fm_nets', 'dnn_nets'],这种情况是将多个nets 合并在一起训练吗

@weihong2
Copy link
Author

weihong2 commented Sep 9, 2020

能否选择xgboost做为备选模型之一呢

@jackguagua
Copy link
Member

同一个nets只能出现一次,['linear', 'fm_nets', 'dnn_nets']是的合法的。

@jackguagua
Copy link
Member

能否选择xgboost做为备选模型之一呢

什么叫备选模型?

@weihong2
Copy link
Author

感谢,使用apply_class_weight=True有明显改变,nets 里面选择多个是将每一个组合在一起使用吗?还是只选择其中部分的网络?使用LightGBM的作用是什么呢

@jackguagua
Copy link
Member

nets 里面选择多个是将每一个组合在一起使用吗?还是只选择其中部分的网络?使用LightGBM的作用是什么呢

如果nets=['linear', 'fm_nets', 'dnn_nets'],就会组合linear+fm+dnn3个网络做联合训练,开启GBM会提取gbm模型特征融合到神经网络中,不过这个在不同数据集上表现不同,有时候会过拟合,需要小心使用。

可以参考下图,便于理解DT的网络架构

image

@weihong2
Copy link
Author

1.特征交互层中:add、concat 有什么区别吗
2.客户想要跟传统机器学习一样的功能,能否得到特征重要性?
3.客户感觉直接这行dt = DeepTable(config=conf),太黑盒了。想在运行结果显示下中间步骤,不知道怎么设置?

@weihong2
Copy link
Author

关于第三个问题,dt.fit(df_train, y, epochs=3, verbose=2),我将verbose参数设置为:0、1、2。0和1区别:0不展示
image
,1和2没有区别。我的理解是0 = 安静模式, 1 = 进度条, 2 = 每轮一行,但1和2没看到区别。客户主要感觉太黑盒了

@jackguagua
Copy link
Member

1.特征交互层中:add、concat 有什么区别吗

有,concat后面会在接一层dense,相当于进一步学习不同nets的权重

2.客户想要跟传统机器学习一样的功能,能否得到特征重要性?

可以结合shap来得到模型解释性。
参考:#16

3.客户感觉直接这行dt = DeepTable(config=conf),太黑盒了。想在运行结果显示下中间步骤,不知道怎么设置?

整个过程都在一个神经网络里面

@mokeeqian
Copy link

2.针对正负样本比例不平衡的数据集,有什么参数设置让模型得到比较好的评估值?

我最近在做的一个1:100的二分类,同样是precision很高和recall很低;gbm模型设置scale_pos_weight后,recall上到80,precision只有10;
我觉得还是入模的特征不能够很好的去区分label,你用DNN训练有提升吗?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants