我想使用DBSCAN clustering algorithm来检测数据集中的异常值。由于这是一种无监督的学习方法,我是否需要在培训和测试数据中拆分数据集,还是不可能测试DBSCAN algorithm?出于离群点检测的原因,我是否应该向DBSCAN model提供整个数据集?
如果有可能对DBSCAN进行测试,您能提出用Python进行测试的方法吗?
发布于 2019-08-02 09:53:06
你不需要把你的数据分成测试和训练。但是,如果您想要评估您的模型,您应该从原始数据中获得一个标签数据样本。还有其他一些没有监督的方法,但是它们会比较哪种聚类方法比您尝试的其他方法(算法或不同的超参数)表现得更好。
我建议阅读- https://scikit-learn.org/stable/modules/clustering.html第2.3.10节展示了评估集群模型的各种方法,以及实现它们所需的sklearn。
您可以根据您的问题陈述选择最适合您的需求。
发布于 2019-08-02 12:15:15
对于孤立点检测,使用实际的孤立点检测算法而不是DBSCAN。
DBSCAN检测到的噪声是,而不是,与异常值相同。例如,如果你的数据都是均匀的随机数据,这应该被认为是“噪音”,但它们都不会是异常值。所有数据都是正常噪声。
发布于 2019-08-02 11:25:10
让我在此补充另一个要点:
你不能测试没有监督的学习方法。无监督学习方法的主要思想是定义一个非预测目标.
机器学习中的监督学习方法->训练/测试或训练/开发/测试拆分
无监督学习->不分裂
根据您针对异常值的数据集,还可以使用其他统计方法来识别异常值:
量值
Z分
https://stackoverflow.com/questions/57323933
复制相似问题