检测异常值一定程度上也可以叫做离群点识别,常规有以下几种识别方法:
1.统计检验(假设检验)
举个例子:以下一组用户用车月花费:100,110,90,80,200,120,115,月花费的均值在116左右,标准差在39左右,理论上用户的分布应该在116±2x39,所以200是离群点
当数据和检验类型(t、卡方等)已知的情况下,通过统计方法得出的结果非常可靠,但通常都是单个变量检验,工程实践中重复次数较多
2.距离检验(基于不同业务下,选择不同距离定义)
常规步骤:
1.kmeans寻找k个中心点
2.计算每个点到k个中心点的距离
3.取k个点中min值,不妨记为km
4.倒序排列剔除前N个,即为所求
当数据是连续型变量时计算快速,效果优秀,但是当数据分布为凹分布时或者存在分类或者名义变量时需要预处理,比较麻烦
3.密度检验
常规步骤:
1.判断每个点是不是核心点(满足最少密度点)
2.核心点之间是否密度可达(算是所有相互包含的密度点)
3.合并密度点
4.repeat
5.寻找剩余点即为所求
换句话说,思路就是定一个距离半径,定最少有多少个点,然后把可以到达的点都连起来,判定为同类。但是高维度表现差,密度分布不均表现差
4.特征检验
这个只是在书上读过,只能讲一个大概,如果有人很熟悉欢迎指教。
举个例子,每个人出行数据之间是有相关性的,比如你的出行距离越长,理论上你的支出也应该更高。存在用户出行公里数及价格如下,A(100,350),B(150,470),C(200,605),D(80,400),在其他条件一致的情况下,D用户的出行数据是极其不符合用户的特征属性的,所以可以看作离群点,其实这种方法也可以看作是模型检验吧(做一个能够拟合大部分数据的模型,然后提出残差过高的点)。