对具有混合类型属性的数据集进行分类的最佳方法

数据挖掘 机器学习 分类
2021-10-09 01:14:24

我想知道对由混合类型的属性(例如文本和数字)组成的数据集进行分类的最佳方法是什么。我知道我可以将文本转换为布尔值,但词汇量很大,数据变得太稀疏。我也尝试将属性的类型分开分类,并通过元学习技术组合结果,但效果不佳。

3个回答

克里斯托弗的回答似乎很合理。特别是基于树的方法可以很好地处理这类数据,因为它们在区分特征上分支。在不了解您的特定应用程序的情况下很难说,但总的来说,如果您认为您的某些功能可能比其他功能更具辨别力,您可以尝试一些降维技术来稍微清理一下。

此外,如果您使用降维技术,您最终会为您的特征向量获得稍微更健壮的格式(它们通常最终是直接的数值向量而不是混合数据类型),这可能让您利用不同的方法。您还可以查看手动工程功能。使用适当的手工设计功能Random Forest将使您在大多数任务中非常接近最先进的技术。

在不了解更多数据的情况下很难回答这个问题。也就是说,我会提供以下建议:

大多数机器学习技术可以处理混合类型的数据。基于树的方法(例如 AdaBoost 和随机森林)可以很好地处理此类数据。更重要的问题实际上是维度,你关心的问题是正确的。

我建议您做一些事情来降低该维度。例如,寻找最能区分数据的单词或短语并丢弃其他单词(注意:基于树的方法会自动执行此操作)。

由于您提供的有关数据性质的信息很少,我建议您遵循以下方法:

  1. 将文本数据转换为类别。您可以尝试不同的替代方案来确定类别应包含多少信息,但每个变量必须存在特定类别。例如,我将假设一个变量来自调查问卷的文本字段,该调查问卷关于人们上班的首选方式。

    首先,我们需要确保具有相似含义的答案以相同的方式书写并且属于同一类别(例如“骑自行车”、“骑自行车”、“骑自行车”都具有相同的含义)。然后你可以尝试进一步合并到不太详细的类别(例如将“电车”、“地铁”和“公共汽车”合并到“公共交通工具”)甚至更多(例如“步行”、“慢跑”、“骑自行车”到“体力活动”)取决于您要了解的内容。

    您甚至可以在数据集中放置一些不同的组合,然后接下来的步骤将确定哪些组合将用于分析。如果文本数据可以在有序变量中“翻译”,请确保这样做(例如,如果您将“小、中、高”转换为“1,2,3”)。

  2. 将您的分类变量(不是序数变量)转换为虚拟(二进制)变量。大多数分类/特征选择算法会自动执行此操作,但请确保您选择的算法是这种情况。我意识到此时数据的维度会变得很大,但这将在下一步中处理。

  3. 对数据应用特征选择/降维技术。您可以在此处找到对此类技术的有用评论如果您使用的是 Python,sklearn 工具为您提供了很多选择(请参阅此处的更多详细信息)。确保您使用的技术也考虑了多重共线性。我会尝试主成分分析或基于树的算法。

  4. 为了对数据进行分类,我会使用决策树分类器(也可以通过 sklearn 获得)。它还对特征执行特征选择设置重要性权重。您可以根据您的选项(例如 max_depth、min_samples_split)设置生成树的详细程度 确保根据交叉验证调整详细程度以避免过度拟合。