【问题标题】:Regression Model for categorical data分类数据的回归模型
【发布时间】:2012-04-28 03:16:24
【问题描述】:

我在 csv 文件中有非常大的数据集(1,700,000 个原始数据和 300 个稀疏特征)。 - 它有很多缺失值。 - 数据在数值和分类值之间变化。 - 因变量(类)是二进制的(1 或 0)。 - 数据高度倾斜,积极响应的数量很少。

现在我需要对这些数据应用回归模型和任何其他机器学习算法。

我是新手,我需要帮助.. - 在回归模型的情况下如何处理分类数据?缺失值是否对其影响太大? - 对于像这样的大型、稀疏、倾斜的数据,我可以尝试的最佳预测模型是什么? - 你建议我使用什么程序?我尝试了 Weka,但它甚至无法打开那么多数据(内存故障)。我知道 matlab 可以打开数字 csv 或未混合的类别 csv,除了必须估算缺失值以允许它打开文件。我对R有点了解。

  • 我正在尝试使用 excel、access 和 perl 脚本来操作数据。对于这么多的数据,这真的很难。 excel不能打开超过近1M的记录,访问不能打开超过255列。任何建议。

提前感谢您的帮助

【问题讨论】:

标签: database data-mining


【解决方案1】:

首先,您说的是分类,而不是回归 - 分类允许从固定集合(例如 0 或 1)预测值,而回归产生实数输出(例如 0、0.5、 10.1543 等)。也不要与所谓的逻辑回归混淆——它也是分类器,它的名字只是表明它是基于线性回归的。

要处理如此大量的数据,您需要inductive可更新)模型。特别是,在 Weka 中,分类部分下有许多这样的算法(例如 Naive Bayes Updatable、Neutral Networks Updatable 等)。使用归纳模型,您将能够逐部分加载数据并以适当的方式更新模型(对于 Weka,请参阅知识流界面了解如何更轻松地使用它的详细信息)。

一些分类器可能适用于分类数据,但我不记得它们有任何可更新的,所以很可能您仍然需要将分类数据转换为数字。这里的标准解决方案是使用指标属性,即将每个分类属性替换为几个二元指标。例如。如果您的属性day-of-week 有7 个可能的值,您可以用7 个二进制属性替换它-SundayMonday 等。当然,在每个特定实例中,只有7 个属性中的一个可以保存值1 和所有其他人必须是0

缺失值的重要性取决于数据的性质。有时值得事先用一些中性值替换它们,有时分类器实现会自己完成(查看手册了解算法的详细信息)。

最后,对于高度偏斜的数据,使用 F1(或只是 Precision / Recall)度量而不是准确度。

【讨论】:

  • 感谢您的回答。我对 weka 的问题是当我打开 csv 文件时它会给出内存错误消息,即它甚至无法读取上述数据,我将它划分为较小的 csv 文件,并且它只能读取 100,000 的最大记录,即使我将堆大小固定为 2G(我有 4G RAM)。有什么想法吗?
  • Weka有3个界面(启动weka.jar时3个按钮),最后一个是知识流界面。与您最可能使用的 Explorer 界面不同,在 KN 中您不会预先加载所有数据。相反,您构建组件管道并启动它。如果您的所有组件都是可更新的,那么整个管道也将能够逐行处理数据。有关更多信息,请查看tutorial。从 CSV 加载器和类分配器开始,然后添加您需要的所有组件。
猜你喜欢
  • 2020-01-29
  • 2017-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 2021-07-19
  • 2019-07-11
  • 2015-12-22
相关资源
最近更新 更多