离群值检测DBSCAN

时间:2019-12-09 22:58:54

标签: python machine-learning dataset outliers dbscan

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

数据集名称:作弊广告点击检测。

:值

来源 :(分类)URL:0,重定向:1,搜索:2
visited_before ::(分类)编号:1,几次:1,风扇:2
time_on_site (秒):(数字)时间用户在站点上工作,然后离开秒。
active_type :(分类)fake_active:0(就像他们只是打开网站,但除了点击广告外什么都不做),normal_active:1,real_acive:2(也许我会让它得分为active:浮点值从0到10。)
作弊(标签):(分类)否:0,是:1

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

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

非常感谢您。

2 个答案:

答案 0 :(得分:1)

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')

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

  

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

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

答案 1 :(得分:0)

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

而且数据的底部没有密度 ,是吗?

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