我正在使用H2O来构建分类模型,如GBM,DRF和DL。 我的数据集包含一些分类列,如果我想将它们用作构建模型的功能,我是否需要手动将它们转换为虚拟变量?我读过GBM可以在内部对分类变量进行模拟化吗?
答案 0 :(得分:4)
是的,H2O是为数不多的机器学习库之一,它不需要用户对分类变量进行预处理或单热编码(也称为伪编码")。只要列类型为" factor" (又名" enum")在您的数据框中,然后H2O知道自动执行的操作。
特别是,H2O允许在基于树的方法(如随机森林或GBM)中直接使用分类变量。基于树的算法具有本机使用分类数据的能力,并且通常这导致比单热编码更好的性能。在GLM或深度学习中,H2O会在引擎盖下自动对分类进行单一编码 - 无论哪种方式,您都不需要进行任何预处理。如果需要更多控制,可以使用categorical_encoding
参数控制自动编码的类型。
答案 1 :(得分:0)
恕我直言,能够直接在树算法中处理分类变量是H2O的一大优势。
如果对分类变量进行单热编码,则有效地获取一个变量并将其拆分为多个值,这些变量的值主要为0(例如稀疏)。正如艾琳所说,这使树木表现更差。这是因为树使用"信息获得"在每次分裂时。稀疏特征(来自单热编码)具有较少的信息增益,因此不如分类特征有用。