【问题标题】:Fastest way to reduce dimensionality for multi-classification in RR中多分类降维的最快方法
【发布时间】:2015-02-16 22:20:15
【问题描述】:

我目前拥有的:

我有一个数据框,其中包含一列称为“类”的因子,其中包含 160 个不同的类。我有 1200 个变量,每个变量都是一个整数,并且没有单个单元格超过 1000 的值(如果有帮助的话)。大约 1/4 的单元格是数字零。总数据集包含 60,000 行。我已经使用了 nearZeroVar 函数和 findCorrelation 函数来得到这个变量的数量。在我的特定数据集中,一些单独的变量本身可能看起来并不重要,但在与其他两个变量结合时可能具有预测性。

我尝试过的:

首先我尝试创建一个随机森林模型,然后计划使用 varimp 属性过滤掉无用的东西,让它运行几天后放弃了。然后我尝试使用 fscaret,但它在具有 64GB RAM 的 8 核机器上运行了一夜(与之前的尝试相同)并且没有完成。然后我尝试了: Feature Selection using Genetic Algorithms 运行了一夜,也没有完成。我试图使主成分分析工作,但由于某种原因不能。我从来没有能够在 Caret 中成功地进行 PCA,这可能是我的问题和解决方案。我可以关注网络上所有的“玩具”演示示例,但我仍然认为我在我的案例中遗漏了一些东西。

我需要什么:

我需要一些方法来快速降低我的数据集的维度,以便我可以将其用于创建模型。也许一个好的起点是使用 PCA 和我的使用 Caret 的数据集的示例。当然,我很高兴听到任何其他可能让我摆脱我现在所处的流沙的想法。

【问题讨论】:

  • 实际上有人投票结束这个问题,因为它是“离题”? “快速降低我的数据集的维数”的哪一部分不涉及编程?尤其是在我在 R 中列出了一些我尝试过的太慢的编程方法并明确表示我试图找到比那些更快的东西之后?
  • 我知道你可能已经完成了你的任务,但是 - fscaret 不会在超过两个级别的因子上运行;尽管您可以尝试回归模型,而不是使用分类;还知道您可以限制单一模型开发的时间吗?如果您尝试设置 myTimeLimit = 1*60*60no.cores=NULL(最好在 unix 系统上进行),它的运行时间不应超过 6 - 8 小时。

标签: r r-caret


【解决方案1】:

我也只做了一些玩具示例。

不过,这里有一些不适合评论的想法。

您的所有属性似乎都是数字。也许在您的数据集上运行朴素贝叶斯算法会给出一些合理的分类?然后,假设所有属性彼此独立,但经验表明 /many scholars say NaiveeBayes 结果通常是still useful,尽管假设很强大?

如果您绝对必须选择属性,例如作为作业的一部分:

您是否尝试使用基于 GUI 的免费数据挖掘工具 Weka 来处理您的数据集?有一个“属性选择”选项卡,您可以在其中使用多种算法(或算法组合)来删除不相关的属性。这是一门艺术,但结果并不容易解释。

阅读this pdf 作为介绍,阅读see this video 了解演练和对理论方法的介绍。

视频假定您熟悉 Weka,但也许它仍然有帮助。 有一个 RWeka 界面,但安装起来有点费力,所以使用 Weka GUI 可能会更容易。

【讨论】:

  • 您的回答不一定能更快地解决我上面的具体问题,但我确实学到了很多新技巧,你是唯一一个花时间尝试帮助的人,所以答案是你好先生。可能没有什么比我尝试的要快得多,这是我考虑过的一种可能性。感谢您让我知道这个很酷的新工具!
猜你喜欢
  • 2017-08-31
  • 2012-10-27
  • 2018-08-27
  • 1970-01-01
  • 2020-08-07
  • 2016-09-27
  • 1970-01-01
  • 2016-11-27
  • 2019-12-16
相关资源
最近更新 更多