在 R 中将“整数”变量(具有 0 或 1 值)转换为因子是否重要?

机器算法验证 r 分类数据 主成分分析
2022-04-18 11:43:29

我正在研究一个高维数据集(1776 个变量)。当我读取 csv 文件时,R 将变量(具有 0 或 1 个值)加载为“整数”类。

在构建预测模型(例如 gbm、randomForest、SVM 等)之前将这些变量转换为因子是否重要?

如果我想使用 PCA 来减少维度怎么办,将这些变量保持为“整数”是否正确?(因为 PCA 不适用于因子变量)。

3个回答

R 的 factor() 命令只是为分类变量的每个(除了一个)值手动创建指标变量的捷径。由于您从指标变量开始,因此您无需执行任何操作。

但要小心,如果您提到的值是您的输出值。例如,如果您使用caret包,它将自己描述为“一组试图简化创建预测模型的过程的函数”。所以它基本上是 R 中许多不同机器学习包之上的一层。

如果您使用训练方法并选择例如 SVM 算法并且您的输出值是整数值,则该算法将自动将其作为回归问题而不是分类问题来处理。这可能会降低算法的性能,包括准确性和灵敏度。

因此,如果这些值是您的输出或 y 值并且您的数据集属于分类问题,请将这些值转换为因子。如果这些值是“只是”x 或特征值,我完全同意 Andy,您可以将它们保留为整数。

问候

看看 R ade4 包的 dudi.mix 和 dudi.hillsmith 函数。这些是混合数值和分类数据的 PCA 的自然扩展。如果您首先将包含分类变量的整数列转换为因子,则使用这些函数将获得不同(更好!)的结果。来自文档:“dudi.hillsmith 允许使用各种行权重,而 dudi.mix 处理有序变量。该分析的主要成分是居中和标准化向量,最大化平方相关系数与定量变量 [和] 相关比率的总和与因素。” 请参阅https://cran.r-project.org/web/packages/ade4/ade4.pdf