使用CatBoost和NODE建模表格数据对比测试( 三 )


分类变量处理与CatBoost不同 , NODE不支持分类变量 , 因此您必须自己将它们准备成数字格式 。 我们使用来自category_encoders库的LeaveOneOutEncoder , 与节点作者使用相同的方法对成人人口普查数据集执行此操作 。 在这里 , 出于方便 , 我们使用常规的训练/测试分割 , 而不是5倍CV , 因为训练NODE需要很长时间(特别是在超参数优化时) 。
from category_encoders import LeaveOneOutEncoderimport numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitdf = pd.read_csv('' +'?id=10eFO2rVlsQBUffn0b7UCAp28n0mkLCy7我一定会尝试许多其他数据集!)
CatBoost与NODE的优点:
1. 快得多
1. 少需要超参数优化
1. 没有GPU运行良好
1. 支持分类变量
实际项目会用哪一个?也许CatBoost仍将是我的首选工具 , 但如果是kaggle这种线上的比赛NODE是一个不错的尝试
同样重要的是要认识到性能是依赖于数据的 , 成人人口普查收入数据集并不能代表所有场景 。 或许更重要的是 , 分类特征的预处理在NODE中也是相当重要的一个问题 。
作者:Mikael Huss
【使用CatBoost和NODE建模表格数据对比测试】deephub翻译组