测试DBSCAN聚类算法是否可行?如果可以,如何测试?

0 人关注

我想使用 DBSCAN clustering algorithm 来检测我的数据集中的异常值。由于这是一种无监督学习方法,我是否需要将我的数据集分成训练和测试数据,或者测试 DBSCAN algorithm 是不可能的?出于检测异常值的原因,我是否应该用我的整个数据集来喂养 DBSCAN model

如果测试 DBSCAN 是可能的,你能建议用Python进行测试的方法吗?

python
testing
machine-learning
unsupervised-learning
dbscan
Phila Dream
Phila Dream
发布于 2019-08-02
3 个回答
Akshay Sehgal
Akshay Sehgal
发布于 2019-08-02
已采纳
0 人赞同

你不需要把你的数据分成测试和训练。但是,如果你想评估你的模型,你应该从你的原始数据中得到一个标记数据的样本。也有其他无监督的方法,但它们比较的是哪种聚类方法相对于你尝试的其他方法(算法或不同的超参数)表现更好。

我建议阅读-- https://scikit-learn.org/stable/modules/clustering.html 2.3.10节展示了评估聚类模型的各种方法,以及实现这些方法所需的sklearn API。

你可以根据你的问题陈述,选择最适合你要求的那一个。

谢谢!关于聚类算法的概述的链接是超级有用的!我将对建议的评估方法进行深入研究。
Has QUIT--Anony-Mousse
Has QUIT--Anony-Mousse
发布于 2019-08-02
0 人赞同

对于离群点检测,使用一个实际的 离群点检测算法 而不是DBSCAN。

由DBSCAN检测到的噪声是 not 异常值相同 .例如,如果你的数据都是均匀的随机数据,这应该被认为是 "噪音",但没有一个会是离群值。所有的数据都是正常的噪声。

而其中 离群点检测算法 你有什么建议吗?很多资料显示,对于更多维度的数据,DBSCAN和Isolation Forest用于检测异常值...
我不喜欢隔离森林。如果你想要类似于DBSCAN的东西,可以使用例如同组的LOF或LOOP。
PV8
PV8
发布于 2019-08-02
0 人赞同

让我在这里补充另一个重要的观点。

你不能测试无监督的学习方法。无监督学习方法的主要思想是定义一个非预设的目标。

Supervised learning methods in machine learning --> train/test or train/dev/test split

unsupervised learning --> no split