Cle*_*ang 2 machine-learning feature-selection categorical-data h2o
我正在尝试使用H2O的“随机森林”将具有38,000个训练集示例的71个类别进行多项分类。我有一个功能,该功能在很多情况下是可预测的字符串,因此我想将其用作分类功能。
麻烦的是,即使规范化了字符串(大写,去除数字,标点符号等)之后,我仍然有7,000个不同的字符串(某些是由于拼写或OCR错误等导致的)。我有删除相对较少的字符串的代码,但我不确定合理的临界值是多少。(我似乎在文档中找不到任何帮助。)
我也不确定nbin_cats超参数会导致什么。我应该使它等于我拥有的不同类别变量的数量吗?[添加:nbin_cats的默认值为1024,我远低于该值,大约为300个不同的分类值,所以我想我不必对此参数做任何事情]
我也在考虑,如果某个分类值与我要预测的太多不同类别相关联,也许我也应该删除它。
我也猜测我需要增加树的深度来更好地处理这个问题。
另外,对于要过滤的字符串,是否有一个特殊的值表示“不知道”?(我将其映射到唯一的字符串,但我想知道是否有更好的值向H2O指示分类值未知。)
提前谢谢了。
小智 5
高基数分类预测器有时会损害模型性能,尤其是在基于树的模型的情况下,树集合(GBM或随机森林)最终会记住训练数据。该模型在验证数据上花费的时间很短。
如果您的字符串/类别列的变量重要性很高,则可以很好地表明是否发生了这种情况。这意味着树将继续在此列上拆分以存储训练数据。另一个指示是,您看到的训练数据错误是否比验证数据小得多。这意味着树木过度适合训练数据。
处理高基数预测变量的一些方法是:
nbins_cats
和上执行网格搜索categorical_encoding
有一个在一个Python的例子H2O教程GitHub库,从模型中取出预测和执行电网的橱窗效应搜索这里。
归档时间: |
|
查看次数: |
1582 次 |
最近记录: |