为高基数数据实现Scikit Learn的FeatureHasher

问题描述 投票:0回答:1

背景:我正在对健康保险索赔进行二进制分类。我正在使用的数据大约有100万行,并且混合了数字特征和分类特征(所有这些特征都是名义上离散的)。我面临的问题是,我的一些分类功能具有很高的基数,并且具有许多非常不常见或唯一的值。我绘制了以下8个类别特征,其中唯一因子水平最高:enter image description here

Dummy变量的替代品:我已经阅读了特征哈希,并且了解到该方法是一种替代方法,可以用于快速且节省空间的特征向量化方法,并且特别适用于具有以下特征的分类数据:高基数。我计划利用Scikit Learn的FeatureHasher对具有100多个唯一特征级别的分类特征执行特征哈希处理(我将为少于100个唯一特征级别的其余分类特征创建虚拟变量)。在实现这一点之前,我有几个与特征哈希有关的问题,以及它与机器学习中模型性能的关系:

  1. 使用特征哈希而不是仅虚拟化最频繁出现的因子级别的主要优点是什么?我假设使用特征哈希方法可以减少信息丢失,但是需要更多地了解哈希算法在处理高基数时在机器学习算法中具有哪些优势。

  2. 我对评估几个单独的分类模型后对特征重要性的评估很感兴趣。有没有一种方法可以根据散列特征与原始分类级别的关系来评估散列特征?是否有一种反向散列的方法,或者特征哈希不可避免地导致模型可解释性的丧失?

很抱歉,冗长的帖子和问题。任何反馈/建议将不胜感激!

python machine-learning scikit-learn categorical-data feature-engineering
1个回答
1
投票
  1. 特征哈希可以在推理过程中支持训练中未发现的新类别。使用伪编码,您只能编码一组固定的先前看到的类别。如果遇到培训中未曾见过的类别,则表示您不走运。

  2. 出于功能重要性,有两种规范方法。

    a)使用和不使用每个功能来训练/评估模型,以查看其效果。这在计算上可能是昂贵的。

    b)使用该功能以及在所有样本中排列的该功能训练/评估模型。

    [使用特征哈希,每个特征都扩展到多列,因此b)会很棘手,我还没有找到任何对特征哈希列具有置换重要性的软件包。

    所以,我认为a)可能是您最好的选择,考虑到您只有100万行。

此外,对于stackoverflow上的ML问题,您可能会在Cross Validated上得到更好的答案。

© www.soinside.com 2019 - 2024. All rights reserved.