【问题标题】:How to preprocess high cardinality categorical features?如何预处理高基数分类特征?
【发布时间】:2015-11-25 23:52:26
【问题描述】:

我有一个具有不同移动设备功能的数据文件。具有分类数据类型的一列具有 1421 种不同类型的值。我正在尝试与我拥有的其他数据一起训练逻辑回归模型。 我的问题是:上面描述的高基数列会影响我正在训练的模型吗?如果是,我该如何预处理此列以减少不同值的数量?

【问题讨论】:

  • 你有多少数据点?过拟合的风险很高。除非每个不同类型有 许多 个值,否则您可能希望完全忽略该属性。 (避免基于单一观察的预测 - 该值可能完全关闭)
  • 我在训练数据集中有 380083 条记录。每个不同类型的最小值为 26,最大值为 8000。这些数字在不同值上均匀地从 26 增加到 8000。
  • 您可能想尝试预处理您的数据,将分类数据映射为数字数据。 Here is a technique 将这些转换为目标的后验概率(分类场景)或目标的期望值(预测场景)。

标签: machine-learning data-mining logistic-regression


【解决方案1】:

通常会执行降维任务(例如 PCA 和 FA)以确定哪些特征最重要。

例如,PCA 是最流行和最容易使用的降维任务,其重要性由值的最大变化来定义。

通过执行 PCA,您可以“洗掉”无关紧要但可能导致过拟合的变量。我建议您熟悉 PCA、FA 和 SVD 等主题。

【讨论】:

  • 不是对整个数据集进行降维处理,而不是对数据中的单个列进行降维处理吗?
  • 当然可以。通过首先应用 PCA,此特定功能可能不重要,您可以将其丢弃。如果在应用 PCA 之后这个功能仍然很重要,那么恐怕您没有太多可用的选择。微不足道的任务是丢弃具有低基数的值(将它们视为异常值)。无论哪种方式,值的高基数都不会对您的模型产生负面影响。
【解决方案2】:

您可以计算证据权重 (WOE) 来转换您的数字或分类变量。参考这个链接http://www.kdnuggets.com/2016/08/include-high-cardinality-attributes-predictive-model.html了解WOE。

【讨论】:

    【解决方案3】:

    您可以在这里做的最好的事情是使用您拥有的领域知识对功能进行分组。例如按品牌划分的手机。如果您没有该信息,您可以做的是您可以按频率对特征进行分组。例如,任何未代表超过 5% 数据的特征,您都可以分组为其他特征。您也可以同时使用这两种方法。更多信息请参考this article

    由于逻辑回归是基于距离的模型(主要是最小二乘法),它受到curse of dimensionality 的影响。

    希望这会有所帮助,虽然已经很晚了。

    谢谢

    迈克尔

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 1970-01-01
      • 2018-12-09
      • 2021-07-27
      • 1970-01-01
      • 2015-01-26
      • 1970-01-01
      • 2014-02-17
      • 2018-07-08
      相关资源
      最近更新 更多