了解异常值比找到异常值更重要
![ec7db96e1a736df26907a5029834d938.png](https://i-blog.csdnimg.cn/blog_migrate/ee662dd4cc59c6a034ef1cd26a32baaf.jpeg)
> Understanding Outliers — Image by author
寻找异常值是技术性的,但是了异常值值是技巧和艺术的结合。作为数据科学家,我们总是倾向于"消除"异常值,因为它弄乱了预测模型-这种做法导致错误的结论,认为异常值不好,必须将其消除
相反,重点应该放在了解异常值上。在这个故事中,我将向您介绍一些如何更好地理解异常数据点的技术。
我们将获取一个汽车数据集,其中包含诸如制造商,燃料类型,吸气量,门数,价格等列。
![9cb5589f6db768bd4569c29d033511fc.png](https://i-blog.csdnimg.cn/blog_migrate/c3653076a5e25c021b9e2a0601023adc.jpeg)
> Cars dataset — Image by author
基本和必要-箱形图,但有抖动
了解单个列异常值的最简单方法之一是使用箱形图。箱形图有两种变体,一种是标准图,另一种是花哨的。首先,让我们看一下标准箱形图,如下所示:
![3d64e78a2911c95ee29d7bfe802b45aa.png](https://i-blog.csdnimg.cn/blog_migrate/b85b361a2b4f022da6d913614be0ee4c.jpeg)
> Box plot for a price — Image by author
箱线图是显示极值的绝佳工具。所有极值都落在左右垂直线(也称为晶须)之外。如您所见,右侧的点表示价格有些很高的值。好的,我们现在知道一些极限价格值从30000起。
但是请注意,箱形图可能只会说出部分事实。
标准箱线图中缺少的是其他数据点的整体情况。这是带有抖动的花哨箱线图有用的地方。带有抖动的箱形图,如下所示,是覆盖了所有数据点的箱形图。为了避免相同值的点相互隐藏,我们引入了一个小的随机抖动,以便所有数据点都可见
![f91bf762cb1edf80f6d55efbc886cc16.png](https://i-blog.csdnimg.cn/blog_migrate/4d433901730286ab2c5a01e53c121ec9.jpeg)
带有抖动的箱形图有两个有趣的发现,标准箱形图中没有。首先,您可以看到所有其他数据点,所以您可能还需要考虑价格在25000到30000之间的一些点,这些价格也异常。他们没有越过正确的垂直线,但是仍然很少见,并且数据点稀疏
其次,我们还可以看到点恰好位于极端垂直线上-例如,价格为零的最左边的数据点。标准箱形图不会捕获异常点,因为正好位于极限上。但是,使用带有抖动的箱形图,我们可以可视化这些点。显然,零价汽车是一个异常值,表明数据存在某些问题
走向多维
数据科学家可能犯的最大错误之一是基于单个维度将数据点判断为异常值。
让我们举一个例子-箱形图将宝马轿车,209引擎大小,182马力和36880的价格标为异常值。结论这不是一个异常的聪明方法。具有所有这些特征的宝马注定是昂贵的,而不应该是异常值
这就是为什么应该在多个维度上进行异常值分析的原因。在我们的案例中,我们应该将数据点视为异常值,或者不考虑所有维度-品牌,燃料类型,期望,门数量,马力,长度,高度,价格等…并且各种算法可以帮助在多列设置中检测异常值。
但是,困难在于解释为什么它是异常值。早些时候,当我们查看箱形图时,只有一栏的价格可以理解箱形图的结果。但是现在有了多个维度,如果一个数据点是一个异常值,应该如何解释结果?让我们看看在多维环境中可以帮助解释异常结果的技术
制作尺寸缩减图并添加漂亮的工具提示
为了解释结果,首先,我们需要对其可视化。尽管数据中有多列,但我们的眼睛仅限于查看和解释2个或最多3个维度。幸运的是,诸如PCA(主要成分分析)之类的降维技术非常有用,因为我们可以将多个维度缩减为更少的维度而又不会丢失数据的本质。
假设我们已经在多维汽车数据集上运行了诸如"隔离林"之类的算法,并确定了异常值。我们还使用降维技术将所有列减少到仅2列。然后,我们绘制2D散点图,并用单独的颜色指示异常值。这项出色的"数据科学"工作的结果如下所示
![e67581de702503a7ab573dc08ad45d0e.png](https://i-blog.csdnimg.cn/blog_migrate/1be3905e4f5dc3f6b3370603a0fbc0bf.jpeg)
> PCA + Scatterplot for outlier analysis — image by author
我们可以使用工具提示使可视化更具交互性。工具提示可以将鼠标悬停在其上,从而为我们提供有关异常值的更多信息。如下所示。我们正在尝试找出有关散点图底部的一堆暗红色点(异常值)的信息
![f079e7ecb0680606eb109df9c96d1d94.gif](https://i-blog.csdnimg.cn/blog_migrate/2293bb4b8f257e86758943fa25b3ec4f.gif)
> PCA + Scatterplot + Tooltip — Image by author
当您将鼠标悬停在底部的红色标记上时,您会看到它们大多数与Mercedes-Benz品牌相对应,并且价格超过20000。这是非常有用的信息。我们的一些异常值似乎是高端汽车。在了解异常值方面已经迈出了一大步
通过聚集聚类和树状图将其提升到一个新的水平
上面显示的技术是可视化高维数据集的好方法。但是,它有两个重要缺点。首先,我们看到红点散布在各处。因此,很难确定是否存在任何异常值模式。同样,所有异常值可能都不可见,因为某些异常值可能隐藏在其他非常接近的点之后。当然,我们可以通过将鼠标悬停在一个点上来确定异常值,但是由于并非所有异常点都可见,因此由于对异常点的可见性有限以及无法看到所有异常点,我们可能对结论没有信心
聚集聚类和树状图可以在这里创造奇迹。聚集聚类是一种自下而上的聚类技术,它将尝试使彼此靠近的数据点聚类。树状图用于以树格式可视化所有簇,以使所有数据点(称为树叶)都可见并很好地排列在同一深度。因此,您得到的是将数据点聚集在一起,以及所有点的可见性-纯魔术
下面显示的是汽车数据上的聚集聚类和树状图的结果。为了增加美感,您可以用与非异常点相比不同的颜色为所有异常点着色
![7f986118a54d88fdd582b97f64b99ebd.png](https://i-blog.csdnimg.cn/blog_migrate/dd0c77380abc5b7ee8d1edc2e730bd5d.jpeg)
我们可以看到,在同一个子树中有大量带有红色标记的异常值。所有的点都很好地排列并可见。这意味着我们不仅识别了异常值,而且还识别了异常值的可能模式或群集!现在事情变得非常有趣
现在,我们使用工具提示技术来了解这个大红色集群的含义。将鼠标悬停在这些点上时,下面显示的是工具提示
![37323d15df9ac37dbb8176c72dc6985b.png](https://i-blog.csdnimg.cn/blog_migrate/0afb1fc0339260734ed60a0265bb882c.jpeg)
> Hover over to find what does outlier data point mean — Image by author
正如您将看到的那样,这个红色大集群主要有两个品牌。一种是价格超过2万的梅赛德斯-奔驰柴油,另一种是价格超过17,000的标致柴油。现在,与散点图+ PCA技术相比,这是重要的一步,因为我们可以可视化所有异常点,并且没有任何东西被隐藏和相互重叠。这有助于我们获得对异常值分析的信心。更重要的是–与PCA +散点图技术相比,我们甚至发现了奔驰以外的其他模式
融合精致与风格-向树状图添加热图
好的,现在我们将复杂性提高一级,以真正了解我们对异常值的理解。上面的树状图和工具提示已经很好地了解了我们的异常值。但是,我们仍然必须手动观察工具提示中的公共值以了解异常聚类的含义。在此可以非常方便地使用热图,因为它会在视觉上发出具有相似值的字段信号
![0bb0a2294b5c74ec9fffb2492b3a4c70.png](https://i-blog.csdnimg.cn/blog_migrate/1a33dd8d2769e5c628595dc3f853bb73.jpeg)
> Dendrogram with heatmap — Image by author
另外,您可以将鼠标悬停在热图单元上,以找到异常值簇中常见的值,如以下动画所示
![f6fdd9d9b7fd17b97af85dd2e67c38e0.gif](https://i-blog.csdnimg.cn/blog_migrate/489d87d9e4aa1d1e3c37654c4cc948eb.gif)
总而言之,发现异常是或多或少的技术工作。但是,了解异常值是科学与艺术的结合。解释异常值的过程比找到异常值更有趣和重要。如本故事所述,通过充分利用数据科学算法和可视化技术,您应该能够自信地解释异常值。
本文中的所有分析和可视化都是使用https://www.nziter.com生成的。它无需编码即可生成见解和可视化,因此内容编写者可以专注于编写内容
(本文由闻数起舞翻译自undefined的文章《Outlier!!! But Why???》,转载请注明出处,原文链接:https://towardsdatascience.com/outlier-but-why-b26c30c9ab78)