Answers:
克里斯托弗的答案似乎很合理。特别是,基于树的方法可以很好地处理此类数据,因为它们基于区分特征。在不了解您的特定应用程序的情况下很难说些什么,但是总的来说,如果您认为某些功能可能会比其他功能具有更大的歧视性,则可以尝试一些降维技术来对其进行清理。
同样,如果使用降维技术,最终会使特征向量的格式稍微更健壮(它们通常最终是直接的数值向量,而不是混合的数据类型),这可能使您可以利用不同的方法。您还可以研究手工工程功能。借助适当的手工设计功能,Random Forest
您将在大多数任务上非常接近最新技术。
不了解更多数据就很难回答这个问题。也就是说,我将提供以下建议:
大多数机器学习技术都可以处理混合类型的数据。基于树的方法(例如AdaBoost和Random Forests)可以很好地处理此类数据。实际上,更重要的问题是尺寸,您应该正确地关注它。
我建议您做一些降低尺寸的事情。例如,寻找最能分隔数据的单词或短语,然后丢弃其他单词(注意:基于树的方法会自动执行此操作)。
在您提供的有关数据性质的信息很少的情况下,我建议您采用以下方法:
将文本数据转换为类别。您可以尝试使用不同的替代方法来确定类别应包含的信息量,但是必须为每个变量存在特定的类别。例如,我假设一个变量来自调查问卷的文本字段,该变量与人们上班的最佳方式有关。
首先,我们需要确保具有相同含义的答案以相同的方式书写并且属于同一类别(例如,“骑自行车”,“骑自行车”,“骑自行车”都具有相同的含义)。然后,您可以尝试进一步合并为较不详细的类别(例如,将“电车”,“地铁”和“公共汽车”合并为“公共交通工具”)或什至更多(例如,将“步行”,“慢跑”,“骑自行车”合并为“体育锻炼”),具体取决于您要查找的内容。
您甚至可以在数据集中放入一些不同的组合,然后下一步将确定将用于分析的组合。如果可以按顺序变量“翻译”文本数据,请确保执行此操作(例如,如果您将“小,中,高”转换为“ 1、2、3”)。
将类别变量(不是顺序变量)转换为虚拟(二进制)变量。大多数分类/功能选择算法会自动执行此操作,但请确保您选择的情况确实如此。我意识到此时数据的维数将变得很大,但这将在下一步中进行处理。
在数据上应用特征选择/降维技术。您可以在此处找到有关此类技术的有用评论。如果您使用的是Python,则sklearn工具为您提供了很多选择(请参阅此处的更多详细信息)。确保您使用的技术还考虑了多重共线性。我会尝试主成分分析或基于树的算法。
为了对数据进行分类,我将使用决策树分类器(也可以通过sklearn获得)。它还执行功能选择设置功能的重要性权重。您可以根据您的选项(例如,max_depth,min_samples_split)在生成的树上设置细节级别,请确保根据交叉验证来调整细节级别,以避免过度拟合。
Principal Component Analysis
或Non-Negative Matrix Factorization
将减少变量的数量,丰富稀疏数据,并将所有变量转换为定量变量。此外,通过评估降维模型的质量,问题作者可以估计文本变量的有用性。