【问题标题】:Outlier detection DBSCAN异常值检测 DBSCAN
【发布时间】:2020-04-03 02:05:14
【问题描述】:

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

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

:值

来源:                        (分类)网址:0,重定向:1,搜索:2
visited_before:                   (分类)编号:1,few_time:1,粉丝:2
time_on_site(秒):      (数字)用户在离开前在网站上工作的时间(以秒为单位)。
active_type:                        (分类) fake_active:0(就像他们只是打开网站但除了点击广告什么都不做),normal_active:1,real_acive:2(也许我会让它变成分数活动的:从 0 到 10 的浮点值。)
作弊(标签):                      (分类)否:0,是:1

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

我的问题是你认为 DBSCAN 可以在这个数据集上很好地工作吗?如果是,您能否给我一些提示以制作出色的数据集或更快地创建数据集?如果没有,请向我推荐一些 DBSCAN 可以很好地与主题配合使用的其他数据集。

非常感谢。

【问题讨论】:

    标签: python machine-learning dataset outliers dbscan


    【解决方案1】:

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

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

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

    【讨论】:

    • 我想把它用作半监督学习,在这里我将使用label来选择DBSCAN的Eps和MinPits。
    • 如果欺诈是密集聚集的,所有的参数调优都无济于事。
    【解决方案2】:

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

    它将紧密堆积在一起的点(具有许多附近邻居的点)组合在一起,将单独位于低密度区域(其最近邻居距离太远)的点标记为异常值 p>

    这可以使用来自 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')
    

    我前阵子implementeddbscan算法学习了。 (此后回购已被移动)但是,正如 Anony-Mousse 所说

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

    从合成数据集中学到的直觉不一定会延续到实际的现实生活数据中。所以上面推荐的数据集和实现仅用于学习目的。

    【讨论】:

    • 谢谢。我的老师要求提供某种现实生活中的数据集,以便我们可以从中学到更多,而不仅仅是了解一些异常检测算法。
    • @ThuatNguyen 可以在here 找到一些异常数据集。尝试查找使用 dbscan 的异常值检测的研究论文。
    • 很好的来源。非常感谢。
    猜你喜欢
    • 2020-08-27
    • 2019-01-20
    • 2017-03-05
    • 2019-07-24
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多