插入符号训练的公式和非公式结果不同

2024-02-19

我注意到在训练时使用插入符中的公式和非公式方法会产生不同的结果。此外,公式方法所需的时间几乎是非公式方法所需时间的 10 倍。这是预期的吗?

> z <- data.table(c1=sample(1:1000,1000, replace=T), c2=as.factor(sample(LETTERS, 1000, replace=T)))

# SYSTEM TIME WITH FORMULA METHOD
# -------------------------------

> system.time(r <- train(c1 ~ ., z, method="rf", importance=T))
   user  system elapsed
376.233   9.241  18.190

> r
1000 samples
   1 predictors

No pre-processing
Resampling: Bootstrap (25 reps)

Summary of sample sizes: 1000, 1000, 1000, 1000, 1000, 1000, ...

Resampling results across tuning parameters:

  mtry  RMSE  Rsquared  RMSE SD  Rsquared SD
  2     295   0.00114   4.94     0.00154
  13    300   0.00113   5.15     0.00151
  25    300   0.00111   5.16     0.00146

RMSE was used to select the optimal model using  the smallest value.
The final value used for the model was mtry = 2.


# SYSTEM TIME WITH NON-FORMULA METHOD
# -------------------------------

> system.time(r <- train(z[,2,with=F], z$c1, method="rf", importance=T))
       user  system elapsed
     34.984   2.977   2.708
    Warning message:
    In randomForest.default(trainX, trainY, mtry = tuneValue$.mtry,  :
  invalid mtry: reset to within valid range
> r
1000 samples
   1 predictors

No pre-processing
Resampling: Bootstrap (25 reps)

Summary of sample sizes: 1000, 1000, 1000, 1000, 1000, 1000, ...

Resampling results

  RMSE  Rsquared  RMSE SD  Rsquared SD
  297   0.00152   6.67     0.00197

Tuning parameter 'mtry' was held constant at a value of 2

您有一个具有中等数量级别的分类预测变量。当您使用公式界面时,大多数建模功能(包括train, lm, glm等)内部运行model.matrix来处理数据集。这将从任何因子变量创建虚拟变量。非公式界面则没有[1]。

当您使用虚拟变量时,任何拆分中仅使用一个因子水平。树方法以不同的方式处理分类预测变量,但是,当不使用虚拟变量时,随机森林将根据结果对因子预测变量进行排序,并找到因子水平的 2 路分割 [2]。这需要更多时间。

Max

[1] 我讨厌成为那些说“在my book http://appliedpredictivemodeling.com/我展示...”,但在本例中我会展示。图 14.2 很好地说明了 CART 树的这一过程。

[2] 天哪,我又这么做了。第 14.1 节讨论了树木因子的不同表示,第 14.7 节显示了针对一个数据集的两种方法之间的比较

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

插入符号训练的公式和非公式结果不同 的相关文章

随机推荐