随机大值检测算法Poisson与KNN模拟验证
随机大值的检测,蛮多项目都绕不开这个话题。用泊松和 KNN 这两种算法来搞,还挺有意思的。
泊松算法的核心就是那种“偶尔发生一下”的事件,像网络中突发的高流量、日志里突然冒出的异常行为,拿它来效果还不错。你只要搞清楚λ
值怎么估,就能用Poisson
分布来判断某个数值是不是“太大了”。
KNN 就更贴近机器学习一点,属于比较直觉的方法。一个点跟周围的邻居差得太远?率就是个异常值。K值选对了,检测效果蛮稳的。用knn.c
搞实现,写几个函数算距离、选最近的邻居,快就能跑起来。
整套东西在 PC 端跑起来也不复杂,主入口就是main.c
,配上knn.h
和算法实现的knn.c
,结构清晰。你可以自己造点测试数据,模拟下不同场景,看看两种方法各自表现咋样。
要提醒下,泊松适合事件频率分布明确的场景,而 KNN 对距离度量和数据分布蛮敏感的。记得调好K
值,距离别选错了(欧氏、曼哈顿这些要按场景来)。
如果你正搞数据异常检测的项目,或者想给程序加个“识别大值”的模块,拿这俩方法跑跑模拟,真的挺能帮你理清思路的。
3.13KB
文件大小:
评论区