Distance based outlier detection in large dataset?

理由
举报 取消

如题。 问题是有一个存在硬盘上的数据库,数据库大小约是内存的20倍,其中恰好有一个 outlier, 怎么用furthest nearest neighbor的方法(每个点都有许多neighbors, 把离某点O最近的neighbor与O的距离记作r_O, 这里要求的是找出使r_O最大的O。)找出这个outlier? 要求是数据库的scan次数不超过三次。 (从数据库读入的次数不超过三次, 但是从数据库读入内存后对数据的的读取次数并没有限制)我查了不少文献,也查到了不超过3次scan找出outlier的方法,但是这些方法都需要给定 参数,比方说给定(r,k) (表示某个点O 周围r半径内的object不超过k个则这个点判断 为outlier), 而找furthest nearest neighbor 的话要用这种方式描述的话这个参数 就成了(r1,0), 其中r1 是outlier 的furthest nearest neighbor 与它的距离,但 是这个参数不好确定。 给太小了检测出的outlier就太多了, 给大了又检测不出 outlier。 请问该怎么解决这个问题?

2018年1月14日 1 条回复 614 次浏览

发起人:林酌 初入职场

刷题路漫漫

回复 ( 1 )

  1. 管致远
    理由
    举报 取消

    EDIT:题目改了。答案不再适用。

    _____________________________

    简单想了下。不知道你的 outlier 的标准是什么。如果已知只有一个 outlier,且和其它数据都离得很远的话,这样如何:

    • 算所有点平均值。需要一次 scan。
    • 算每个点和平均值的距离,每次存下最大值和那个点的坐标。需要一次 scan。

    完成。两次操作都是 memory-efficient。

我来回答

Captcha 点击图片更换验证码