离群值检测DBSCAN

问题描述 投票:-1回答:2

我正在研究学校的异常值检测项目。我想我将创建自己的小型数据集并使用DBSCAN进行处理。我想我将尝试创建一个数据集,该数据集关于在网站上点击广告是否作弊。以下是我要创建的数据集的详细信息。

数据集名称:作弊广告点击检测。Column:值source:(类别)URL:0,重定向:1,搜索:2visited_before::(分类)编号:1,几次:1,风扇:2time_on_site(秒):(数字)时间用户在站点上工作之前离开秒数。active_type :(分类)fake_active:0(就像他们只是打开网站,但不做任何事情,只是点击广告),normal_active:1,real_acive:2(也许我会让它成为active的分数:从浮动值开始) 0到10。)[作弊(标签)::(分类)否:0,是:1

也许我还会有其他一些列,例如用户点击广告的次数,...

我的问题是您认为DBSCAN可以在此数据集上很好地工作吗?如果是的话,您能给我一些技巧来制作一个很棒的数据集或更快地创建数据集吗?如果没有,请向我建议DBSCAN可以很好地与主题配合使用的其他数据集。

非常感谢。

python machine-learning dataset outliers dbscan
2个回答
0
投票

正在描述分类问题,而不是聚类问题。

还使数据的底部没有密度,对吗?

最后但并非最不重要的是,(A)点击欺诈行为是高度聚集的,而不是离群值,(B)噪声(低密度)与离群值(罕见)不同,并且(C)首先获取数据,然后推测可能的算法,因为如果无法获取数据该怎么办?


0
投票

DBSCAN具有检测异常值的固有能力。由于离群点将不属于任何群集。Wiki状态:

将密集在一起的点(与许多附近的邻居的点组合在一起),标记为离群值单独位于低密度区域(其最近的邻居距离太远)的点]

使用sklearn的合成数据集,例如make_moonsmake_blobs,可以很容易地证明这一点。 Sklearn对此颇有体面的demo

from sklearn.datasets import make_moons
x, label = make_moons(n_samples=200, noise=0.1, random_state=19)
plt.plot(x[:,0], x[:,1],'ro')

Iimplementeddbscan算法前一阵子要学习。 (此回购已被移动)但是,正如Anony-Mousse所说

噪声(低密度)与异常值不同

而且从合成数据集中学到的直觉不一定会延续到实际的真实数据中。因此,上述数据集和实现仅供参考。

© www.soinside.com 2019 - 2024. All rights reserved.