机器学习:使用哪种算法识别训练集中的相关特征?

时间:2014-04-17 02:34:13

标签: machine-learning

我遇到了一个问题,我可能会遇到数量众多的功能。基本上是一大堆数据点(供讨论让我们说数百万个功能)。我不知道哪些数据点有用以及与给定结果无关的内容(我猜1%是相关的,99%是无关紧要的)。

我确实有数据点和最终结果(二进制结果)。我对减少功能集感兴趣,这样我就可以确定要收集的最有用的数据点集来训练未来的分类算法。

我目前的数据集非常庞大,如果我要识别相关功能,减少收集的数据点数量,并增加数据,我就无法生成尽可能多的数据量训练示例。培训示例的数量。我希望通过更少的特征数据点(同时保持相关的特征数据点),我会得到更好的分类器和更多的训练样例。

  • 我应该关注哪些机器学习算法,首先, 确定与结果相关的功能?

从某些阅读中我已经完成了它似乎 SVM 为每个功能提供了加权,我可以使用它来识别得分最高的功能。 任何人都可以证实吗?扩大解释?或者我应该考虑另一条线?

5 个答案:

答案 0 :(得分:5)

线性模型中的特征权重(逻辑回归,朴素贝叶斯等)可以被视为重要度量,前提是您的特征都在相同的范围内。

您的模型可以与用于学习的正则化器组合,以惩罚某些类型的特征向量(实质上将特征选择折叠到分类问题中)。 L1正则化逻辑回归听起来像是你想要的完美。

答案 1 :(得分:3)

也许您可以使用PCA或最大熵算法来减少数据集......

答案 2 :(得分:1)

您可以根据数据类型进行卡方检验或熵检测。超级离散化以智能方式大大减小了数据的大小(请参阅Fayyad& Irani提出的递归最小熵分区算法)。

答案 3 :(得分:0)

如果你在R工作,SIS包有一个能为你做这个的功能。

如果你想以艰难的方式做事,那么你想要做的就是功能筛选,在进行特征选择之前进行大量的初步尺寸缩减,并从一组理智的特征中进行模型选择。弄清楚什么是理智大小可能会很棘手,而且我没有一个神奇的答案,但你可以优先考虑你想要包括这些功能的顺序 1)对于每个特征,通过二进制响应将数据分成两组 2)找到比较两组的Komogorov-Smirnov统计量 具有最高KS统计量的特征在建模中最有用。

那里有一篇论文"那里"标题为#34;超高维数据特征筛选的概述"刘,钟和李,我确定一个免费的副本在网上浮动。

答案 4 :(得分:0)

4年后,我现在在该领域获得博士学位,我想补充一点,功能的定义并不总是那么简单。如果您的要素是数据集中的一列,则此处的答案适用得很好。

例如,以卷积神经网络处理图像为例,特征不是输入的一个像素,而是比它更具概念性的特征。这是一个有关图像的很好的讨论:

https://medium.com/@ageitgey/machine-learning-is-fun-part-3-deep-learning-and-convolutional-neural-networks-f40359318721