第6章 异常检测

在本章中,我们将讨论无监督学习的实际应用。目标是训练能够重现特定数据生成过程的概率密度函数的模型,或确定给定新样本是内值(Inlier)还是异常值(Outlier)的模型。一般来说,我们想的具体目标是发现异常,这些异常通常是模型不太可能的样本(即给定概率分布p(x) \ll λ的模型,其中λ是预定义的阈值),或远离主要分布的质心。

本章将着重讨论以下主题。

  • 概率密度函数及其基本属性简介。
  • 直方图及其局限性。
  • 核密度估计Kernel Density EstimationKDE)。
  • 带宽选择标准。
  • 异常检测的单变量示例。
  • 使用KDD Cup 99数据集进行HTTP攻击的异常检测的示例。
  • 单类支持向量机。
  • 基于孤立森林的异常检测。

本章中的代码需求如下。

  • Python 3.5+(强烈推荐Anaconda发行版)。
  • 库。
    • SciPy 0.19+。
    • NumPy 1.10+。
    • scikit-learn 0.20+。
    • pandas 0.22+。
    • Matplotlib 2.0+。
    • seaborn 0.9+。

示例代码可在本书配套的代码包中找到。

在前几章中,我们始终假设数据集是从隐式数据生成过程pdata中提取的,所有算法都假定xiX为独立同分布并且均匀采样。我们假设X可以足够准确地表示pdata,因此算法可以学习用有限的初始知识进行概括。相反,在本章中,我们感兴趣的是对pdata直接建模且没有任何特定限制(例如高斯混合模型通过对分布结构施加约束来实现此目标)。在讨论一些非常强大的方法之前,我们简要回顾在可测量子集 ...

Get Python无监督学习 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.