决定降维、分类和聚类?

数据挖掘 机器学习 分类 聚类 降维
2022-02-23 10:16:53

您能否帮助我理解它,因为我不确定我是否正确理解它。

假设我有一个人的数据集,有 100 个特征,各种特征,如身高、体重、年龄等。我想分类是正常还是异常。我所说的异常是指如果一个 20 岁的男人身高 170 厘米和 150 公斤,则将其识别为异常。

我应该使用自组织图来降低维度(这 100 个特征),然后使用 K-means 将它们分为正常和异常吗?这是一个正确的方法吗?或者我可以只使用 K-NN 将它们分类为正常 - 异常而无需任何降维?

K-NN 可以使用多少功能?到目前为止,我发现的所有示例都只使用了两个。

如果以后我想知道为什么这个人被列入了异常班,我怎么会发现这是因为这两个特征,他的体重根据他的身高?

2个回答

我应该使用自组织图来降低维度吗?

不是第一选择。对于降维,您有更方便和基本的方法,例如PCANMF(如果您没有负值)或原型分析,建议首先使用。

然后K-means将它们分为正常和异常?

红色警报!Kmeans 不是用于分类,而是用于聚类。对你将要做什么的基本理解要小心,否则你会感到困惑。例如,如果您有标签,K-NN 是一种监督(因此是正确的)方法。

或者我可以只使用 K-NN 将它们分类为正常 - 异常而无需任何降维?

不可能的。正如您已经知道的那样,您有一个称为维度诅咒的问题,其中欧几里德距离高度失真。您需要在 K-NN 之前减少维度。我知道的唯一一类可能不需要降维的方法是内核方法,例如SVM

K-NN 可以使用多少功能?

一旦我在 MATLAB 中使用 K-Means 检查了维度诅咒,我看到 7 维之后一切都被扭曲了。这当然取决于数据的性质(分布等),但这是我从实验中得到的。

如果以后我想知道为什么这个人被列入了异常班,我怎么会发现这是因为这两个特征,他的体重根据他的身高?

这个问题太模糊了,关于机器学习的目标。在机器学习中,您会得到一组答案(称为标签)并尝试学习它们。你不应该说他们是否正确。因此,如果您说某个特定的人不正常,您应该向提供标签的人(在我们称之为专家的术语中)询问原因。如果一个人有一定的体重和身高被称为异常,你只知道这个体重和身高表示异常的人。为什么?嗯,谁知道呢?

如果我没有正确回答最后一个问题,请在评论中给我留言。很乐意提供帮助。

我的建议

我建议您将 PCA 应用于您的数据并获取前 5 台 PC 并将它们提供给 K-NN 或LDA您可以将其中一些 PC 相互绘制,看看它们如何区分您的班级。它让你对正在发生的事情有一个很好的印象。您还可以预先绘制所有特征的方差或熵,并丢弃方差或熵低于阈值的那些特征。

祝你好运 :)

如果没有标签,我猜您正在寻找无监督异常检测技术。您可能想对此主题进行一些研究。

请非常小心,因为您的数据没有被标记,所以您没有“分类”。您实际上是在寻找一群正常人的异常值。您的数据未标记,因此任何监督技术均不适用,包括 K-NN。可以使用 K-means 之类的聚类方法,并且您希望查找异常值并将它们标记为“异常”。还有其他可用的技术,例如一类支持向量机。

有了标签,它就变成了分类问题。可以应用任何分类方法。可以进行特征选择以去除不相关或相关的特征。