【问题标题】:Missing data and Attributes selection缺少数据和属性选择
【发布时间】:2012-05-01 16:47:36
【问题描述】:

我的数据是包含 271 个特征的 1,785,000 条记录。我正在尝试减少用于构建模型的功能数量。

第一季度。在探索数据时,我发现一些特征几乎都是缺失数据,比如只有 25 条记录对这个特征有价值,而其他记录有缺失值,所以我认为这信息量不够,最好消除这些特征,是吗?正确的?如果我是对的,我能做到什么水平,我的意思是如果每个特征的 90%、80% 等都是缺失值,我什么时候可以决定摆脱这些特征? (考虑到因变量是 N/Y,整个数据中只有 %1.157 属于 Y)。

第二季度。对于数据集中的每个个体,列出了 64 个 trait_type,其中每个可以取值 [1 或 3 或 5] 之一。我的问题是:如果某些 trait-type 只取值 [5] 或所有记录都缺少 dat,它是否有任何价值,或者我们可以再次消除该特征?

第三季度。如果选择删除这些功能,如何从 R 中的 data.frame 中删除列?

谢谢

更新: 我正在尝试使用caret 包来进行变量选择。 我应用了这个:

ctrl<- rfeControl(functions = lmFuncs, method="cv", verbose = FALSE, returnResamp= 
"final")

lmprofile<- rfe(x,y, sizes = subsets, rfeControl = ctrl)

其中x 是具有 270 个因变量的 data.frame,y 是自变量的因子,其值为 Y/N。我收到了这个错误:

Error in { : 
  task 1 failed - "contrasts can be applied only to factors with 2 or more levels"
enter code here
In addition: There were 11 warnings (use warnings() to see them)

有什么帮助吗?

【问题讨论】:

  • 这是删除一列的一种方法,通过它的索引号:dat &lt;- dat[,-1] 这将删除第一列。这是另一种方法,按名称删除列:dat &lt;- dat[,-which(colnames(dat)=="YourColumnName")] 您的其他问题最好在stats.stackexchange.com 提出,因为它们与编程无关。 Q1,我的猜测是对所有数据进行 PCA 或类似的数据缩减/结构检测,以找到对特征之间差异贡献最大的变量,然后只使用这些变量。 Q2,见前面,可能是的。
  • 我建议你把这个问题分成三个问题。不过,只有问题 3 适合 SO。前两个应该去 crossvalidated.com。

标签: r statistics data-mining


【解决方案1】:

仅仅因为缺少一列中的大部分数据并不意味着该列无法预测,这与该列中有许多相同的值相同。

当然有一个截止点,如果该列只能帮助您区分(许多)少数情况,那么可以将其删除,并且只会对整体模型强度产生一点影响。

为了帮助您决定是否保留该列,您可以使用它构建一个单变量模型 - 其中数据集仅包含该列和因变量,并查看该模型的强度。如果它不比随机好多少,那么删除该列可能是安全的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多