我正在使用R中的dismo包(对于GBM)中的gbm.step
构建一个提升的回归树模型。我最初将分类变量编码为因子,但是 - 我被告知编码因子为虚拟二进制变量(1表示存在; 0表示不存在),这将使算法更容易执行递归二进制分裂。
然而,今天我为包含因子(320次运行)的数据集和包含虚拟变量的另一个数据集(另外320次运行)运行了一系列学习率,树复杂度和包分数的组合。
为了给出一般性分解,我有4个分类变量。
1)第一个分类有4个级别 - 分为4个单独的1/0组合
2)第二个与(1)相同。
3)第三个级别 - 分为3个单独的1/0组合。
4)最后一个分类变量有2个级别 - 所以2个1/0组合。
在对所有运行进行比较之后,使用因子编码的数据集每次(320次)优于二进制虚拟变量,以异常值解释为1.5-3%。
我想知道为什么,当我希望虚拟变量更适合模型时? dismo
会在幕后自动创建虚拟变量吗?
感谢。