第6章 异常检测
在本章中,我们将讨论无监督学习的实际应用。目标是训练能够重现特定数据生成过程的概率密度函数的模型,或确定给定新样本是内值(Inlier)还是异常值(Outlier)的模型。一般来说,我们想的具体目标是发现异常,这些异常通常是模型不太可能的样本(即给定概率分布p(x)λ的模型,其中λ是预定义的阈值),或远离主要分布的质心。
本章将着重讨论以下主题。
- 概率密度函数及其基本属性简介。
- 直方图及其局限性。
- 核密度估计(Kernel Density Estimation,KDE)。
- 带宽选择标准。
- 异常检测的单变量示例。
- 使用KDD Cup 99数据集进行HTTP攻击的异常检测的示例。
- 单类支持向量机。
- 基于孤立森林的异常检测。
6.1 技术要求
本章中的代码需求如下。
- Python 3.5+(强烈推荐Anaconda发行版)。
- 库。
- SciPy 0.19+。
- NumPy 1.10+。
- scikit-learn 0.20+。
- pandas 0.22+。
- Matplotlib 2.0+。
- seaborn 0.9+。
示例代码可在本书配套的代码包中找到。
6.2 概率密度函数
在前几章中,我们始终假设数据集是从隐式数据生成过程pdata中提取的,所有算法都假定xi ∈X为独立同分布并且均匀采样。我们假设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.