Bootstrap

数据挖掘学习笔记

第一章 绪论

  1. 数据时代

  • 数据挖掘发展的动力

    • 数据爆炸:数据采集工具和成熟的数据存储技术使大量的数据被收集和存储。
    • 我们拥有丰富的数据,但是缺乏有用的信息
    • 迫切需要将传统的数据分析方法用于处理大量数据的复杂算法相结合。
  • 数据挖掘的的价值

    • 电子商务领域,金融领域,医疗健康领域,交通运输领域,社交媒体领域,制造业领域,教育领域,政府和公共服务领域,农业领域

  1. 数据挖掘概念

  • 数据挖掘是在大型数据库自动发现有用信息的过程
      • 探查大型数据库、发现先前未知的有用模式 (pattern)
    • 可以预测未来的观测结果,并非所有的信息发现任务都被视为数据挖掘(如数据库的查询任务)
    • 数据挖掘是数据库中知识发现(KDD)不可缺少的一部分
      • KDD是识别数据中有效的、新颖的、潜在有用的和易于理解的模式的非平凡过程
  • 预处理是将原始输入数据转换为适当的格式,以便后续分析
      • 融合多个数据源的数据,数据清洗(消除噪声和重复值),选择与任务相关的记录和特征
  • 后处理确保只将有效和有用的结果集成到决策支持系统(DSS)
      • 可视化:使得数据分析者从不同的视角探查数据和挖掘结果
      • 使用统计度量假设检验删除虚假挖掘结果

  1. 数据挖掘要解决的问题

  • 可伸缩性/可扩展性

    • 代表一种弹性,随着数据量的快速增长,能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现处理能力的线性增长,实现高吞吐量和高性能
      • 采样技术:随机采样、均匀采样、水库采样
      • 并行(分布式)计算:Map/Reduce计算框架
      • 在线/增量学习方法:持续学习(Continual Learning)
  • 高维性

    • 维度(Dimension)通常是描述数据的属性或特征,比如地理位置、时间、类别、性别、职业等,它们是用来划分数据的类别或属性
    • 低维数据开发的传统分析技术通常不能很好地处理高维数据
    • 某些分析算法,随着维度(特征数)的增加,计算复杂度会迅速增加
  • 异构和复杂

    • 传统分析方法只处理包含相同类型属性的数据集。
    • 现在的数据类型更复杂:文本、图像、音频和视频
    • 为挖掘复杂对象,需要考虑数据中的联系
      • 时间和空间的自相关性
      • 图的连通性
      • 半结构化数据与XML文档的关系
  • 所有权和分布

    • 针对在物理上分布式存储的数据需要面临一系列挑战
      • 如何降低分布式计算所带来的额外通信开销
      • 如何有效地从多个数据源获得挖掘结果
      • 如何解决数据安全和隐私问题
  1. 数据挖掘的起源

1989年8月于美国底特律市召开的第十一届国际联合人工智能学术会议上首次提到“知识发现”这一概念;

到1993年,美国电气电子工程师学会(IEEE)的知识与数据工程(Knowledge and Data Engineering)汇刊出版了KDD技术专刊,发表的论文和摘要体现了当时KDD的最新研究成果和动态;

1995年在加拿大蒙特利尔召开的首届“知识发现与数据挖掘”国际学术会议上,首次提出了“数据挖掘”这一学科的名称,并把数据挖掘技术分为科研领域的知识发现与工程领域的数据挖掘。

  • 多学科的交叉:设计数据库技术、人工智能、数理统计、机器学习、模式识别、高性能计算、知识工程、神经网络、信息检索、信息的可视化等领域

  1. 数据挖掘任务

  • 两大基本任务预测描述
    • 预测任务:根据其他属性的值预测特定属性的值
      • 被预测的属性:目标变量/因变量
      • 用于预测的属性:解释变量/自变量
    • 描述任务:导出数据中潜在联系的模式
      • 相关、趋势、聚类、轨迹和异常
      • 探查性的,需要加以验证和解释
  • 预测建模
    • 为目标变量建立模型,将其作为解释变量的函数
      • 分类:用于预测离散的目标变量
      • 回归:用于预测连续的目标变量
    • 任务目标:使目标变量的预测值与实际值之间的误差最小
  • 关联分析
    • 用来发现描述数据中强关联特征的模式
      • 所发现的模式通常用蕴含规则特征子集的形式表示变量
    • 任务目标:以最有效的方式提取最有趣的模式
  • 聚类分析
    • 旨在发现紧密相关的观测值组群,使得与属于不同簇的观测值相比,属于同一簇的观测值之间尽可能类似模式。
  • 推荐算法
    • 通过一些数学算法,推测出用户可能喜欢的东西
    • 任务目标:帮助用户找到真正想要的+降低信息过载
  • 异常检测
    • 识别特征显著不同于其他数据的观测值,这样的观测值称为异常点离群点
    • 任务目标:具有高检测率低误报率
  • 图数据分析
    • 图(Graph)是一种数据结构,用于模拟物理、生物、社会和信息系统中的许多类型的关系和过程。
    • 图由节点或顶点(表示系统中的实体)组成,这些节点或顶点由边(表示这些实体之间的关系)链接。
    • 任务目标:使用特定于图的算法来实现节点级边级图级的分析任务。

第二章 数据基础

  1. 数据类型

  • 属性

    • 属性:对象的性质或特性,因对象而异,或随时间而变化(也称为变量、特性、字段、特征或维)
    • 一组属性用于描述对象(对象也称记录、点、事例、示例、实体或实例)
    • 数据集:数据对象的集合
  • 属性值

    • 属性值是指定给特定对象属性的数值符号(数值可以具有无穷多个值,符号具有少量的值)
    • 属性和属性值之间的区别(相同的属性可以映射到不同的属性值,不同的属性值可以映射到同一组值)
    • 属性的性质可以不同于表示属性值的性质(年龄属性有最大值,而整数没有)
  • 属性类型

    • 可以定义四种属性类型:标称、序数、区间、比率
      • 标称(Nominal):标称属性的值是一些符号或实物的名称,每个值代表某种类别、编码或状态。比如:ID,性别
      • 序数(Ordinal):序数属性可能的取值之间具有意义的序,但相继值之间的差是未知的。比如:排名,等级
      • 区间(Interval):区间属性可能的取值之间是有序的,不同取值之间的差异是有意义的。比如:日期,温度
      • 比率(Ratio):具有相等单位绝对零点的变量,例如身高、体重等。
    • 属性的类型取决于它拥有以下哪些性质/操作
    • 标称:相异性;序数:相异性、序;区间:相异性、序、差异;比率:全具备

  • 用值的个数描述属性

    • 离散:具有有限个值或者无限可数个值,常用整数变量表示
      • 可以是分类的(如邮政编码或ID号),也可以是数值的(如计数)
      • 二元属性是离散属性的特例,常用布尔变量表示
    • 连续:取实数值的属性,常用浮点变量表示
      • 例如:温度、高度、重量
    • 通常,标称和序数属性是二元的或离散的区间和比率属性是连续
  • 非对称属性

    • 只有存在非零属性值才被视为重要(文档中出现的单词,客户购买过的商品)
    • 非对称的二元属性:只有非零值才重要的二元属性(对于关联分析特别重要)
    • 也存在离散的/连续的非对称属性(比如文档中单词出现的次数/频率)
  • 数据集的重要特性

    • 维度:数据对象具有的属性数
      • 分析高维数据有时会陷入维灾难,主要通过降维解决
    • 稀疏性:稀疏的数据对象大多数属性值都是0
      • 对于关联分析特别重要
    • 分布:构成数据对象的属性的各种值或值得集合出现的频率
      • 很多数据的分布并非标准的统计分布,比如高斯分布
  • 数据集的类型

    • 数据集的分布特征可以从集中趋势离散程度分布形态三个方面进行描述
    • 集中趋势
    • 离散程度
      • 反映观测变量各个取值之间的差异,包括:异众比率、四分位差、方差及标准差、标准分数、离散系数等。
      • 异众比率:分类数据离散程度的测度,计算公式\frac{\sum_{}^{}{f_i-f_m}}{\sum_{}^{}{f_i}}=1-\frac{f_m}{\sum_{}^{}{f_i}}
      • 四分位数:顺序数据离散程度的测度,把数据分布划分成4个相等的部分,使得每部分表示数据的四分之一,这三个数据点就称为四分位数,下四分位数Q1、中位数Q2、上四分位数Q3.
      • 四分位差:Q=Q3-Q1,其中:Q1的位置=(n+1)/4,Q3的位置=3(n+1)/4
      • 方差和标准差:数据离散程度的最常用测度值;反映了各变量值与均值的平均差异;方差公式为s^2=\frac{1}{n}[(x_1-x)^2+(x_2-x)^2+\cdots+(x_n-x)^2]
      • 标准分数:也称标准化值,是对某一个值在一组数据中相对位置的度量,计算公式为z_i=\frac{x_i-\bar{x}}s
      • 离散系数:标准差与其相应的均值之比,消除了数据水平高低和计量单位的影响,其计算公式是V_s=\frac{s}{\bar{x}}
    • 分布形态
      • 分布形状通过偏态和峰态衡量
      • 偏态:倾斜度(skewness),统计数据分布偏移方向和程度的度量。
      • 峰态:是反应变量分布陡峭程度的指标
        • 三种情况:标准正态分布、尖峰分布、扁平分布
    • 分辨率(resolution):经常可以在不同的分辨率下得到数据,并且在不同的分辨率下数据的性质不同。
      • 数据的模式也依赖于分辨率。如果分辨率太高模式可能看不出,或者掩埋在噪声中;如果分辨率太低模式可能不出现
    • 数据集的类型:记录数据、基于图的数据、有序数据
      • 记录数据集:记录的汇集,每个记录具有固定的、相同的属性集,记录之间或属性之间没有明显的联系。
        • 事务数据:一种特殊类型的记录数据;每个记录涉及一系列项;事务数据是项的集合,可以将其视为一组字段为非对称属性的记录
      • 基于图的数据:图捕获数据对象之间的联系,数据对象本身用图表示
        • 频繁图挖掘:在图的集合中发现一组频繁出现的子结构
      • 有序数据
        • 时序事务数据事务数据的扩充,每个事务包含一个与之相关联的时间
        • 时间序列数据:在不同时间上收集到的数据,用于所描述现象随时间变化的情况(重要考虑时间自相关性,即如果两个测量的时间很近,则它们的值很相似
        • 序列数据:一个数据集合,包含各个实体的序列,如词或字母的序列
        • 空间和时空数据:具有空间属性的数据对象(重要考虑空间自相关性,即物理上靠近的对象趋于在其他方面也相似;空间自相关类似于时间自相关)

  1. 数据质量

  • 数据质量

    • 人类的错误、测量设备的限制或数据收集过程中的漏洞都可能导致不真实或重复的对象也会存在不一致
    • 数据挖掘着眼于两个方面
      • 数据质量问题的检测与纠正——数据清理
      • 使用可以容忍低质量数据的算法——鲁棒算法
  • 测量和数据搜集问题

    • 测量误差:测量过程中产生的问题——记录值与实际值不同
      • 误差:对于连续属性,测量值与真实值的差
    • 数据搜集错误遗漏数据对象或属性值,或者不当地包含了其他数据对象等错误
    • 这两种问题可能是系统的,也可能是随机的
  • 噪声和伪像

    • 噪声:测量误差的随机部分,通常涉及值被扭曲或加入了谬误对象(既有时间上的也有空间上的)
    • 使用信号或图像处理技术降低噪声,从而帮助发现可能“淹没在噪声中”的模式(信号)
    • 鲁棒算法:在噪声干扰下也能产生可以接受的结果。
    • 数据错误可能是更确定性现象的结果,伪像就是数据的确定性失真
  • 精度、偏置

  • 准确率

    • 准确率:被测量的测量值与实际值之间的接近度
    • 一个重要方面是有效数字的使用
      • 目标是只使用与数据精度相符的数字来测量或计算结果
    • 缺乏对数据和结果准确率的分析,分析者将可能出现严重的数据分析错误
  • 离群点

    • 离群点:具有不同于数据集中其他大部分数据对象的特征的数据对象,或是相对于该属性的典型值来说不寻常的属性值。我们也称其为异常对象或异常值。
    • 注意区分噪声和离群点:离群点是合法的数据对象或值
  • 遗漏值

    • 一个对象遗漏一个或多个属性值的情况并不少见
    • 应对策略
      • 删除数据对象或属性:删除具有遗漏值的数据对象,然而有时即便不完整的数据对象也可能包含一些有用的信息
      • 估计遗漏值:可以采用插值方法、邻近点的属性(平均)值、近邻中最常出现的属性值进行可靠估计。
      • 在分析时忽略遗漏值:采用没有遗漏值的属性来计算相似性。
  • 不一致的值

    • 数据可能包含不一致的值
    • 无论原因是什么,重要的是能检测出来并且如果可能的话,纠正这种错误,比如基于“校验”信息
    • 检测到不一致后,有事可以对数据进行更正
  • 重复数据

    • 数据集可以包含重复或几乎重复的数据对象
    • 去重复
      • 对于相同的对象,如果存在属性值不同,要一致化
      • 避免意外地将两个相似但并非重复的数据对象合并
    • 在某些情况下,两个或多个对象在数据库的属性度量上是相同的,但是仍然代表不同的对象

  1. 数据预处理

  • 预处理方法选择分析所需要的数据对象和属性,以及创建/改变属性
  • 聚集:将两个或多个对象合并成单个对象
    • 删除属性/压缩特定属性不同值个数的过程,常用于联机分析处理OLAP
    • 定量属性通常通过求和和求平均值进行聚集
    • 定性属性可以忽略也可以用更高层次的类别来概括
    • 动机:1️⃣ 数据归约导致的较小的数据集需要较少的内存和处理时间; 2️⃣ 通过高层而不是低层数据视图,聚集起到了范围或标度转换的作用; 3️⃣ 对象或属性群的行为通常比单个对象或属性的行为更加稳定(平均值、总数等聚集量具有较小的变异性)
    • 聚集的缺点是可能丢失有趣的细节
  • 抽样:选择数据子集进行分析的常用方法
    • 使用抽样的算法可以压缩数据量,以便可以使用更好但开销较大的数据挖掘算法
    • 若样本近似地具有与原数据集相同的(感兴趣的)性质,则称标本是有代表性的
    • 如果样本是有代表性的,则使用样本使用整个数据集效果几乎一样
    • 选择一个抽样方案,确保以很高的概率得到有代表性的样本
      • 简单随机抽样:选取任何特定项的概率相等
        • 无放回抽样/有放回抽样
      • 分层抽样:总体由不同类型的对象组成并且每种类型的对象数量差别很大时,简单随机抽样不能充分地代表不太频繁出现的对象类型
        • 需要提供具有不同频率的感兴趣的项的抽样方案
        • 也叫类型抽样,可以每个类型取相同对象,也可以每一组抽的量正比于组大小
      • 蓄水池采样:给定一串很长的数据流,对该数据流中数据只能访问一次,使得数据流中所有数据被选中的概率相等
        • 假设需要采样的数量为k,首先构建一个k个元素的数组,将序列的前k个元素放入数组中
        • 对于从第j个元素(j>k),以\frac{k}{j}的概率来决定该元素是否被替换到数组中,数组中的k个元素被替换的概率是相同的
        • 当遍历完所有元素之后,数组中剩下的元素即为采样样本
    • 选择样本容量:太大跟没抽样一样,太小容易丢失模式
      • 由于可能很难确定合适的样本容量,因此有时需使用自适应渐近抽样方法
        • 从一个小样本开始,然后增加样本容量直至得到足够容量的样本
        • 预测模型的准确率随样本容量的增加而增加,但在某一点准确率的增加趋于稳定
        • 掌握模型准确率随样本逐渐增大的变化情况,估计出当前容量与稳定点的接近程度
  • 维归约(降维)
    • 维灾难:随着数据维度的增加,许多数据分析变得非常困难;特别是随着维度增加,数据在它所占据的空间中越来越稀疏
      • 对于分类,这可能意味着没有足够的数据对象来创建模型,将所有可能的对象可靠地指派到一个类(准确率降低);
      • 对于聚类,点之间的密度和距离的定义(对聚类时至关重要的)失去了意义(聚类质量下降
    • 通过创建新属性或将一些旧属性合并在一起以降低数据集的维度,使得低维表示保留原始数据的一些有意义的特性
      • 删除不相关的特征并降低噪声,许多数据挖掘算法的效果就会更好
      • 可以使模型只涉及较少的属性、更容易理解,更容易让数据可视化;降低了数据挖掘算法的时间和内存需求
    • 最常用的方法是使用线性代数技术,将数据由高维空间投影到低维空间,特别是对于连续数据
    • 主成分分析PCA是一种用于它找出新的属性(主成分),这些属性是原属性的线性组合,是相互正交的,并且捕获了数据的最大变差
    • 奇异值分解SVD是一种线性代数技术,它与PCA有关,并且也用于维归约
  • 特征子集选择
    • 冗余特征重复地包含在一或多个其他属性中的许多或所有信息
    • 不相关特征:包含对于当前的数据挖掘任务几乎完全没用的信息
    • 冗余和不相关的特征可能降低分类的准确率,影响聚类的质量
    • 选择方法
      • 理想选择方法:将所有可能的特征子集作为感兴趣的数据挖掘算法的输入,然后选取能产生最好结果的子集(涉及n个属性的自己多达2^n个,行不通
      • 嵌入方法特征选择作为数据挖掘算法的一部分,在数据挖掘算法运行期间,算法本身决定使用哪些属性和忽略哪些属性。
      • 过滤方法:使用某种独立于数据挖掘任务的方法,在数据挖掘算法运行前进行特征选择
      • 包装方法:直接把最终将要使用的数据挖掘算法的性能作为特征子集的评价准则,但通常并不枚举所有可能的子集来找出最佳属性子集
    • 可以将过滤和包装方法放到一个共同的体系结构中,特征选择过程可以看作由四部分组成:控制新的特征子集产生的搜索策略、子集评估度量、停止搜索判断和验证过程
    • 过滤不同于目标数据挖掘算法;包装使用目标数据挖掘算法
    • 特征子集搜索策略的计算花费应当较低,并且应当找到最近或近似最优的特征子集(很难同时满足,要折中)
    • 评估步骤需要一种评估度量,确定属性特征子集的质量
      • 过滤方法:预测实际数据挖掘算法在给定的属性集上执行的效果如何
      • 包装方法:运行目标数据挖掘算法,评估函数就是通常用于度量数据挖掘结果的评判标准
    • 因为子集的数量可能很大,考察所有的子集可能不现实,所以需要某种停止准则
    • 策略通常基于如下一个或多个条件:
      • 迭代次数
      • 子集评估的度量值是否最优或超过给定的阈值
      • 一个特定大小的子集是否已经得到
      • 使用搜索策略得到的选择是否可以实现改进
    • 一旦选定特征子集,就要验证目标数据挖掘算法在选定子集上的结果
      • 方法1: 将使用全部特征得到的结果与使用该特征子集得到的结果进行比较
      • 方法2: 使用一些不同的特征选择算法得到多个特征子集,然后比较数据挖掘算法在每个子集上的运行结果
    • 特征加权是另一种保留或删除特征的办法
      • 特征越重要,赋予它的权值越大,而对于不太重要的特征,赋予它的权值较小
      • 这些权值可以根据特征的相对重要性的领域知识确定,也可以自动确定
  • 特征创建:可以由原来的属性创建新的属性集,以更有效地捕获数据集中的重要信息
    • 新属性的数目可能比原属性,使得我们可以获得前面介绍的维归约带来的所有好处
    • 两种方法:特征提取、映射数据到新的空间
      • 特征提取:由原始数据创建新的特征集
        • 将数据挖掘用于一个相对较新的领域,一个关键任务就是开发新的特征和特征提取方法
      • 映射数据到新空间:使用一种完全不同的视角去挖掘数据
        • 比如通过对时间序列实施傅里叶变换,将它转换成频率信息明显的表示,就能检测到这些模式
  • 离散化和二元化
    • 某些分类算法,要求数据是分类属性形式
    • 发现关联模式的算法要求数据是二元属性形式
    • 离散化:将连续属性变换成分类属性,并且连续和离散属性可能都需要变换成一个或多个二元属性(二元化)
      • 若一个离散属性有m个分类值[0,m-1],则需n=\lceil log_2m \rceil个二元属性
      • 关联分析需要非对称的二元属性,其中只有属性的值为1才是重要的。因此,对于关联问题需要为每一个分类值引入一个二元属性
      • 连续属性变换成分类属性涉及两个子任务:1️⃣ 决定需要多少个分类值n 2️⃣ 确定如何将连续属性值映射到这些分类值
      • 具体步骤:1️⃣ 将连续属性值排序后,通过指定n-1个分割点把它们分成n个区间;2️⃣ 将一个区间中的所有值映射到相同的分类值
      • 离散化问题就是决定选择多少个分割点确定分割点位置的问题
      • 两种形式:
        • 无监督离散化:不使用类信息进行离散化(等宽法、等频率或等深)
        • 监督离散化:根据类标对数据进行离散化(极大化区间纯度的方式确定分割点)
      • 基于熵(纯度的度量)的方法是重要的离散化方法之一。
    • 分类属性有时可能具有太多的值
    • 如果分类属性是序数属性,则可以使用类似于处理连续属性的技术,以减少分类值的个数
    • 如果分类属性是标称的,就需要使用属性值之间联系的知识,将其合并成较大的组(仅当分组结果能提高分类准确率或达到某种其他数据挖掘目标时,才将至聚集到一起)
  • 变量变换:用于变量的所有值的变换
    • 一个函数,它将给定属性的整个值集映射到一组新的替换值,这样每个旧值都可以用一个新的值来标识(简单函数变换、规范化或标准化)
    • 简单函数变换:一个简单的数学函数分别作用于每一个值
    • 在统计学中,变量变换(特别是平方根、对数和倒数变换)常用来将不具有高斯(正态)分布的数据变换成具有高斯(正态)分布的数据
    • 如果变量具有很大的值域,常用对数变换将其进行压缩
    • 使用变量变换时需要小心,因为它们改变了数据的特性(新数据特性,是否保序,是否可作用于0或负值,对0-1间的值有何影响)
    • 规范化和标准化:使整个值的集合具有特定的性质

  1. 相似性和相异性的度量

  • 基础

    • 相似度:两个对象相似程度的数值度量(非负,0不相似,1完全相似)
    • 相异度:两个对象差异程度的数值度量(越类似相异度越低,[0,1]或[0,∞]取值)
    • 邻近度表示相似性或相异性
  • 简单属性之间的相似度和相异度

    • 下表显示了两个对象x和y在单个简单属性方面的相似性和不相似性

属性类型

相异度

相似度

标称

d=\begin{align} \begin{cases} 0, \space if\space x=y\\ 1, \space if\space x\ne y \end{cases} \end{align}

s= \begin{align} \begin{cases} 1, \space if\space x=y\\ 0, \space if\space x\ne y \end{cases} \end{align}

序数

d=\frac{|x-y|}{(n-1)},值映射到整数0到n-1,其中n是值的个数

s=1-d

区间或比率

d=|x-y|

s=-d,\space s=\frac{1}{1+d}, \space s=e^{-d}

s=1-\frac{(d-min\_d)}{(max\_d-min\_d)}

  1. 数据可视化

  • 数据可视化:旨在通过图形表示清晰有效地表达数据
    • 通过将数据映射到图形图元上,深入了解信息空间
    • 提供大型数据集的定性概述
    • 搜索模式、趋势、结构、不规则性、数据之间的关系
    • 帮助找到有趣的区域合适的参数,以便进行进一步的定量分析
    • 提供计算机表示的视觉证明
  • 基于像素的可视化技术
    • 一种可视化一维值的简单方法是使用像素,其中像素的颜色反映该维的值
    • 对于一个m维数据集,基于像素的技术在屏幕上创建m个窗口每维一个
    • 记录m个维值映射到这些窗口中对应位置上的m个像素
    • 窗口不必是矩形的,圆弓分割技术使用圆弓形窗口
  • 几何投影可视化技术
    • 像素对于我们理解多维空间的数据分布帮助不大
    • 几何投影技术帮助用户发现多维数据集的有趣投影
    • 几何投影技术的首要挑战是设法解决如何在二维显示上可视化高维空间
    • 散点图使用笛卡尔坐标显示二维数据点,使用不同的颜色/形状表示不同的数据点,可以增加第三维。
    • 维数超过4散点图一般不太有效,散点图矩阵是散点图的一种有用扩充,散点图矩阵是二维散点图的n\times n网格,提供每个维与所有其他维的可视化
  • 可视化复杂对象和关系
    • 越来越多的非数值数据,标签云是用户产生的标签的统计量的可视化

第三章 分类

  1. 基本概念

  • 总体思路

    • 分类任务的数据由元组(x,y)组成,其中x是描述实例的属性值集合,y是实例的类别标签。属性集x可以包含任何类型的属性,而类别标签y必须是可分类的
    • 分类模型是属性集和类别标签之间关系的抽象表示,在数学表达上作为一个目标函数f,它将属性值x作为输入并产生一个对应于预测类别标签的输出,如果f(x)=y,则该模型可正确地对实例(x,y)进行分类
    • 分类模型在数据挖掘中担当两个重要角色
      • 预测模型:对先前未标记的实例进行分类(一个好的分类模型必须以快速的响应时间提供准确的预测
      • 描述性模型识别不同类别实例的特征
    • 类别标签必须是标称类型,可能并非所有属性都与分类任务相关,寻找区分不同类别实例的最佳属性组合是构建最优分类模型的关键挑战
  • 分类器的种类

    • 二分类器将每个数据实例分配给两种可能的标签中的一种,通常表示为+1(正类)和-1(负类)正类通常指的是我们对正确预测更感兴趣的类别
    • 多分类器:有两个以上的可用标签
    • 确定性分类器:对每个它分类的数据实例产生一个离散值标签
    • 概率性分类器:分配一个在0-1之间的连续的分数来表示特定标签的可能性,各分类下概率总和1(提供了更多分配到类时的置信度信息,实例通常分配给概率得分最高的类
    • 线性分类器:用一个线性分离超平面来区分不同类别中的实例
    • 非线性分类器:能够构造更复杂的非线性的决策表面(拟合复杂数据不太灵活,但不容易过拟合)
    • 全局分类器:用单个模型拟合整个数据集
    • 局部分类器:将输入空间划分为更小的区域,并将不同的模型拟合于每个区域的训练实例(K近邻分类器是一个经典例子,更具灵活性,但更容易过拟合)
    • 生成分类器:在预测类别标签的过程中,学习每个类的生成模型
    • 判别分类器:在没有明确描述每个类别分布的情况下,直接预测类别标签(不用对生成机制进行深入研究)
    • 基分类器:基于决策树的方法、基于规则的方法、最近邻方法、朴素贝叶斯和贝叶斯信念网络、支持向量机、神经网络、深度神经网络
    • 集成分类器:提升、装袋、随机森林
  • 一般的分类框架

    • 分类模型是使用给定的一组实例创建的,这组实例称为训练集,其中包含每个实例的属性值以及类别标签
    • 学习算法:用于学习给定训练集的分类模型的系统方法
    • 归纳:使用学习算法从训练数据建立分类模型的过程
    • 演绎:在未知的测试实例上应用分类模型来预测它们的类别标签的过程
    • 训练集和测试集应该是相互独立的,以确保归纳模型能够准确预测以前从未遇到过的实例的类别标签——具有良好的泛化性能
    • 模型(分类器)的性能可以通过比较实例的预测标签和真实标签来评估,这些信息可以在混淆矩阵中总结出来。
    • 评估度量:准确率,错误率

  1. 决策树分类器

  • 基本概念

    • 从根结点开始,应用其属性测试实例,并根据测试结果按照适当的分支进行操作;一旦到达叶结点,将于该结点关联的类别标签分配给测试实例。
  • 构建决策树的基本算法(Hunt)

    • 搜索空间随数据集规模指数级上升寻找最佳数的代价是昂贵的
    • 需要在合理的时间内归纳出具有合理准确率的决策树尽管不是最优的
    • 贪心策略:以自顶向下的方式生成决策树,对划分训练数据时要使用的属性进行一系列局部最优决策
    • 决策树是递归方式生长,最初包含与所有训练实例关联的单个根结点
    • 如果某个结点与来自多个类的实例相关联,则会使用由拆分标准确定的属性测试条件进行扩展。为每个属性测试条件的每个结果创建一个子结点,并将与父结点关联的实例分发给子结点,可以递归应用于每个子结点(只要它具有多个类的标签),如果某个叶结点相关所有实例都具有相同的类别标签则不会进一步扩展
    • 两个关键问题:拆分标准、终止标准
      • 拆分标准:决定选择哪个属性作为测试条件以及如何将训练实例分配给子结点
      • 终止标准:确定何时应该终止扩展结点的条件
  • 表示属性测试条件的方法

    • 二元属性的测试条件产生两个可能的输出
    • 标称属性可以有多个属性值,因此多路划分和二元划分(2^{k-1}-1种)
    • 序数属性也可以产生二元或多路划分,只要分组不违反有序性就能分组
    • 连续属性的测试条件可以表示为产生二元划分的比较测试或表示用于产生多路划分的形的范围查询
  • 如何确定最佳划分(重点)

  • 增益率

    • 熵和基尼指数等不纯性度量存在一个潜在的局限,即它们更容易选择具有大量不同值的定性属性
    • 单一的低不纯性结点不足以找到良好的属性测试条件
    • 子结点越多决策树越复杂,更容易出现过拟合
    • 在决定最佳属性测试条件时,考虑划分属性产生的子结点数量(一种方法是仅生成二元决策树,从而避免使用不同数量的划分来处理属性;另一种方法是修改划分标准以考虑属性生成的划分数量
    • Gain\space Ratio=\frac{\Delta_{info}}{Split\space Info}Split \space Info=-\sum_{i=1}^{k}\frac{n_i}{n}log_2\frac{n_i}{n}
      • 划分信息(Split Info)测量将结点划分成子结点的熵,并评估划分是否会导致大量相同大小的子结点
      • 如果属性产生大量的划分,则其划分信息也很大,从而降低了增益率
  • 决策树分类器的特点

    • 适用性
      • 非参数化,不需要先验假设因此适用于各种各样的数据集(连续可分类、多分类),易于理解,简单数据集准确率也与其它分类技术相当
    • 表达能力
      • 离散值函数通用表示,可以编码任何离散值属性的函数;每个离散值函数表示为一个赋值表,其中每个离散属性的唯一组合都被赋予一个类别标签,由于每个属性组合可以表示为一个叶结点所以总能找到
    • 计算效率
      • 数量可能非常大因此采用基于启发式的方法来指导搜索,自顶向下的贪心递归划分策略,最坏情况下复杂度为O(\omega)\omega是树的最大深度
    • 处理缺失值
    • 属性之间的相互作用
      • 相互作用:一起使用能区分类别,单独使用提供很少或不提供信息
      • 存在相互作用时决策树可能表现不佳
    • 处理不相关的属性
      • 属性对分类任务无用就利用特征选择技术消除
    • 处理冗余属性
      • 属性间强相关说明有属性冗余,选一个作为属性测试条件
    • 使用直线分割
      • 边界称为决策边界,一次只涉及单个属性,边界是直线平行于坐标轴;限制了决策树在表示具有连续属性数据集的决策边界时的表达能力;倾斜决策树可以通过允许使用多个属性指定测试条件来克服这个限制
  • 三种常见的决策树算法

  1. 最近邻分类器

  • 基本概念

    • 决策树分类器是渴望学习器懒惰学习器延迟建模过程直到需要对测试实例进行分类
    • 最近邻:找到与测试实例的属性相对形似的所有训练实例,用来确定测试实例的类别标签
      • 最近邻分类器将每个样本表示为d维空间中的数据点,其中d为属性数目
      • 给定一个测试实例,计算它与训练实例的接近程度
      • 在邻居有多个标签的情况下,将测试实例分配给其最近邻居的类
  • 算法

    • 多数表决方法中,每个邻居对分类具有相同的影响
    • 为了减少k的影响的方法之一是,根据距离权衡每个最近邻的影响
    • 使用距离加权w_i=\frac{1}{d(x',x_i)^2}投票方案,距离z较远的训练实例对分类的影响要小于距离z较近的
  • 最近邻分类器的特点

    • 最近邻分类器是以实例学习而闻名的一种通用技术
    • 需要用邻近度量来确定实例之间的相似性或距离,以及基于测试实例与其他实例的邻近度返回其预测类别的分类函数
    • 基于局部信息预测,具有较小的k值,对噪声非常敏感
    • 难以处理缺失值,因为通常需要所有属性存在
    • 如果有高度相关的冗余属性,可能过度偏向导致错误
    • 除非采取适当的邻近度量数据预处理步骤,否则可能出错

  1. 朴素贝叶斯分类器

  1. 支持向量机

  • 基本概念

    • 支持向量机SVM是一种二分类模型,用于学习属性空间中的线性或非线性决策便捷来分离类
    • 提供正则化能力,控制复杂度确保良好泛化性能学习高度表达模型而不过拟合
    • 仅使用最难分类的一个子集来表示决策边界(也即支持向量)
    • 判别模型,只受两类边界附近的训练实例的影响,而不是学习每个类的生成分布
  • 分离超平面的边缘

    • 通用方程w^Tx+b=0
    • x代表参数,(w,b)代表超平面的参数。x可以属于超平面任一侧,取决于w^Tx+b的符号
    • 存在能够完全分离数据集中的类的超平面,则数据集是线性可分
    • 边缘超平面(分离超平面的平行超平面且接触到两个类最近的实例的超平面),间距称为超平面的边缘
      • 支持向量:距离超平面最近的几个样本点
      • 较大边缘泛化性能更好(边缘大有余地处理鲁棒性);边缘小容易受干扰和过拟合
  • 线性SVM

  • 非线性SVM

    • 需要一个非线性变换\varphi,将数据从其原始属性空间映射到一个新的空间,以便线性超平面可以分离这些类。新空间可以构建一个线性超平面。w^T\varphi(x)+b=0
  • 学习模型参数

  1. 组合方法

  • 基本概念

    • 组合或分类器组合:通过聚集多个分类器的预测提高分类准确率的技术。
      • 构建一组几分类器,并通过对每个基分类器的预测进行投票来分类
    • 组合分类器的性能优于单个分类器必须满足两个必要条件:
      • 基分类器应该相互独立
      • 基分类器应该好于随机猜测分类器(\epsilon小于0.5)
  • 构建组合分类器的方法

    • 基本思想:在原始数据上构建多个分类器,然后在分类未知样本聚集它们的预测结果
    • 通过处理训练数据集:抽样得到多个数据集,装袋、提升
    • 通过处理输入特征:选择输入特征的子集,随机森林(决策树)
    • 通过处理类标签:适合类数足够多,类标签随机划分两个子集变换为二分类问题,重新标记数据得到新的一组基分类器,统计选票,例如ECOC错误-纠错编码
    • 通过处理学习算法:相同的训练数据上多次执行算法
  • 装袋

    • 装袋/自助聚集:根据均匀概率分布从数据集中有放回的重复抽样技术。每个自助样本集都和原始数据集一样大。
    • 决策树桩:仅包含一层的二叉决策树
  • 提升

  • 随机森林

    • 随机森林试图通过构建去相关决策树组合分类器来提高泛化性能
    • 基于装袋的思想,使用不同训练数据集的自助样本来学习决策树;与装袋的关键区别在于在一小组随机选择的属性中选择划分标准
      • 随机森林不仅通过操纵训练实例,还通过操纵输入属性来构建决策树的集合。
      • 有放回随机抽样实例 ➡️ 随机抽样一组p个属性 ➡️ 选择一个属性

  1. 模型的过拟合

  • 基本概念

    • 模型没有很好地捕捉到数据特征,不能够很好地拟合数据,这种情况称为模型欠拟合
    • 有的模型即使能够很好地覆盖训练数据,但它仍然可能表现出较差的泛化性能过拟合
    • 模型过拟合:在追求训练错误率最小化的过程中,选择了一种过于复杂的模型,这种模型捕捉到了训练数据中的特定模式,但没能获取到整体数据中属性和类别标签之间的本质关系
  • 过拟合的原因

    • 有限的训练规模:增大训练数据可以减少过拟合影响
    • 高模型复杂度

  1. 模型评估

  • 基本概念

    • 模型评估:估计模型泛化性能的方法
    • 正确方法:在有标签的测试集上,对学习模型的性能进行评估,测试集从未被使用
  • 留出法(Holdout)

    • 多次重复,随机子采样/重复留出法
  • 交叉验证(Cross-Validation)

    • 随机划分,不同子集测试,最后求均值
    • k折交叉验证方法:分成k相等大小的分区或子类,重复k次
      • 特殊情况:留一法,每次运行只使用一个数据实例进行测试

  1. 超参数的使用

  • 基本概念

    • 超参数不会出现在最终分类模型
    • 取值在模型选择期间被确定,模型评估期间也要考虑超参数
  • 超参数选择

    • D.train分为三个部分,其中一折D.val用于验证,其余两折D.tr用于训练
    • 求和计算,选择验证错误率最低的超参数p^*,并使用它习得模型m^*

  1. 类不均衡问题

  • 基本概念

    • 倾斜/类不平衡:不同类别的实例数量不接近
    • 带来两个挑战
      • 很难找到充足的稀有类别的样本
      • 准确率不适合在类不平衡的测试数据中评估模型
  • 类不平衡的分类器构建

    • 考虑因素
      • 既能充分表示多数类,也能表示少数类(过采样、欠采样)
      • 调整分类决策,匹配不平衡测试集的要求,分类模型输出转换为实数分数然后选择合适的阈值
    • 平衡数据集:欠采样(降低多数类)、过采样(生成少数类SMOTE)
  • 带类不平衡的性能评估

第四章 回归

  1. 基本概念

  • 基本定义

    • 回归分析:确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法
    • 作为一种预测模型,它基于观测数据建立变量间适当的依赖关系,以便分析数据间的内在规律,并应用于预测、控制等问题
  • 回归类别

    • 回归与分类均为有监督学习问题,其中输入x输出y的数值是给定的,任务是学习从输入到输出的映射
      • 按照问题所涉及变量的多少,可将回归分析分为一元回归分析多元回归分析
      • 按照自变量和因变量之间是否存在线性关系,分为线性回归分析非线性回归分析
  1. 线性回归

  1. 非线性回归

  1. 逻辑回归

  • 基本概念

  • 学习模型的参数

    • 参数(w,b)是在训练过程中使用最大似然估计法来估计的:需要观察训练数据可能性,然后确定最大似然估计下的模型参数
  • logistic回归模型的特点

    • logistic回归是一种用来直接计算概率的判别类型,它不做任何关于条件概率的假设。因此,它是相当通用的,可以应用于不同的应用程序。它也可以轻松地扩展到多分类,那是,它被称为多项式logistic回归。然而,它的表达能力仅限于学习线性决策边界
    • 因为每个属性都有不同的权重(参数),因此可以分析logistic回归的学习参数来理解属性和类别标签之间的关系

第五章 关联分析

  1. 基本概念

  • 总体思路

    • 关联分析:用于发现隐藏在大型数据集汇总有意义的联系
      • 大型事务数据集代价高,发现的模式可能是偶然的虚假的 ➡️ 有效、评估
    • 频繁项集:用出现在许多事务中的项集来表示所发现的联系
    • 关联规则:表示两个项集之间的关系
  • 基本定义

    • 二元表示:每行一个事务,每列对应一个项,项用二元变量表示(非对称二元变量)
    • I是所有项的集合,T是所有事务的集合,每个事务包含的项集都是I的子集。
    • 支持度计数/包含某特定项集的事务个数\sigma(X)=|\{t_i|X\subseteq t_i,\space t_i\in T \}|
    • 支持度:某一项集出现的比率s(X)=\frac{\sigma(X)}{N}
      • 如果s(X)比阈值大则称项集X是频繁的;关联规则的强度可以用支持度/置信度度量
      • 置信度度量是通过规则进行推理的可靠性,也可以估计条件概率
      • 拆分支持度和置信度要求
    • 关联规则挖掘任务两个主要子任务
      • 频繁项集产生:发现满足最小支持度阈值的所有项集/频繁项集(开销大)
      • 规则的产生:提取所有高置信度的规则/强规则
  1. 频繁项集的产生

  • 基本思路

    • 格结构:用于枚举所有可能的项集
    • 降低产生频繁项集的计算复杂度3种方法:
      • 减少候选项集的数目(M):先验原理,不用计算支持度删除某些候选项集
      • 减少比较次数(MN):选用更高级的数据结构来存储
      • 减少事务数目(N)
  • 先验原理

    • 如果一个项集是频繁的,那么它的所有自己一定也是频繁的。
    • 一个项集的支持度永远不会超过其子集的支持度,也称为反单调性
  • Apriori算法的频繁项集产生

    • 使用基于支持度的剪枝技术,系统地控制候选项集的指数增长
    • 两个重要特点:
      • 逐层算法:每次遍历项集格中的一层
      • 产生-测试策略:新的候选项集由前一次迭代发现的频繁项集产生然后计数,总迭代次数是频繁项集的最大长度+1
  • 候选项集的产生与剪枝

    • 产生:新的候选项集由前一次迭代发现的频繁项集产生
      • 未遗漏则是完备的,候选项集的集合必须包含所有频繁项集的集合
      • 产生不超过一次是无冗余的
      • F_{k-1}\times F_{k-1}方法:两个候选项集除了最大的都一样就可以合并,完备无冗余
    • 剪枝:基于支持度的剪枝技术,子集非频繁直接删除,不需要计算实际支持度
      • 真子集中有任何一个是非频繁的会被立即剪枝
  • 支持度计数

    • 作用:确定在候选剪枝步骤中保留下来的每个候选项集出现的频繁程度
    • 枚举每个事务包含的项集,并利用其更新对应的候选项集的支持度
      • 先枚举,再用Hash树(候选项集划分为不同的桶放在Hash树中)
  1. 规则的产生

  1. 关联模式的评估

  • 基本概念

    • 第一套标准:数据驱动方法定义客观兴趣度度量,用来对规则进行排序
    • 第二组标准:主观论据,需要大量先验信息
  • 兴趣度的客观度量

    • 不依赖于领域,只需要用户设置阈值来过滤低质量的模式。
    • 基于列联表中列出的频度技术来计算

第六章 聚类分析

  1. 概述

  • 什么是聚类分析

    • 聚类分析仅根据在数据中发现的描述对象及其关系的信息将数据对象分组(称为簇)。其目标是,组内的对象是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性(同质性)越大,组间差别越大,聚类就越好。
    • 分类是有监督分类,即使用由类别标签已知的对象开发的模型,对新的、无标记的对象赋予类别标签。而聚类分析被视为无监督分类。
  • 聚类的不同类型

    • 层次的与划分的
      • 划分聚类简单地把数据对象划分成不重叠的子集(簇),使得每个数据对象恰在一个子集中。
      • 层次聚类嵌套簇的集合,组织成一棵树;除叶结点,每一个结点(簇)都是其子女(子簇)的并集,而树根是包含所有对象的簇。通常树叶是单个数据对象的单元素。
    • 互斥的、重叠的与模糊的
      • 互斥的:每个对象都被指派到单个簇。
      • 重叠的/非互斥的:一个对象同时属于多个组(类)
      • 模糊聚类:每个对象以0(绝对不属于)和1(绝对属于)之间的隶属权值归属于每个簇。不同簇权值之和必须等于1,通常指派到具有最大隶属权值的簇,转化成互斥聚类。
    • 完全的与部分的
      • 完全聚类:将每个对象指派到一个簇。
      • 部分聚类:数据集中的某些对象可能不属于明确定义的组。
  • 簇的不同类型

    • 明显分离的:不必球形,阈值
    • 基于原型的:质心/均值为中心,趋于呈球形
    • 基于图的:连通分支
    • 基于密度的:稠密区域
  1. K均值

  • K均值算法

    • K个初始质心,每个点指派到最近的质心,更新质心,重复指派更新直到质心不变
    • 邻近度度量欧几里得距离/余弦相似性
    • 质心可能随数据邻近度度量聚类目标的不同而改变
    • 聚类目标用一个目标函数表示,该函数依赖于点之间或点到簇的质心的邻近度
    • 误差的平方和SSE/散布:度量聚类质量的目标函数SSE=\sum_{i=1}^{K}\sum_{x\in C_i}dist(c_i,x)^2,其中dist是欧几里得空间中两个对象之间的标准欧几里得距离,第i个簇的质心(均值)c_i=\frac{1}{m_i}\sum_{x\in C_i}x,局部最优
    • 文档:目标是最大化簇中文档与簇的质心的相似性,该量称为簇的凝聚度。总凝聚度总凝聚度=\sum_{i=1}^{K}\sum_{x\in C_i}cosine(c_i,x)
    • K均值++: 一种初始化K均值的新方法,保证Olog(k)内可以找到一个最优K均值聚类的解决方案
  • 二分K均值

    • 将所有点集合分裂成两个簇,选一个继续分裂知道产生K个簇
    • 可以选最大、最大SSE等,局部使用不代表最终总SSE最小
  • K均值和不同的簇类型

    • 具有局限性非球形状或尺寸密度不同,K均值很难检测到“自然簇”
    • 一种解决方案:找到大量的簇,小簇再进行组合
  1. 凝聚层次聚类

  • 基本概念

    • 两种产生层次聚类的基本方法:
      • 凝聚的:从点作为个体簇开始,每一步合并两个最接近的簇。这需要定义簇的邻近度概念。
      • 分裂的:从包含所有点的某个簇开始,每一步分裂一个簇,直到仅剩下单点簇。在这种情况下,我们需要确定每一步分裂哪个簇,以及如何分裂。
      • 最常见的是凝聚层次聚类技术
    • 树状图显示簇-子簇联系簇合并(凝聚)或分裂的次序。二维点使用嵌套簇图
  • 基本凝聚层次聚类算法

    • 个体点作为簇开始,相继合并两个最接近的簇,直到只剩下一个簇。
    • MIN(单链)定义簇的邻近度为不同簇两个最近的点之间的邻近度最短边
    • MAX(全链)取不同簇中两个最远的点之间的邻近度作为簇的邻近度(最长边
    • 组平均技术:不同簇的所有点对邻近值的均值(平均边长)定义为簇的邻近度。
    • 质心间距离:簇的邻近度定义为簇质心之间的邻近度
  1. DBSCAN

  • 基本概念

    • 基于密度的聚类寻找被低密度区域分离的高密度区域
  • 传统的密度:基于中心的方法

    • 特定点指定半径(Eps)内的点的数量来估计
    • 点可以分为:稠密区域内部;稠密区域边缘;稀疏区域
    • 三个重要的点:核心点、边界点、噪声点
  • DBSCAN算法

    • 任意两个足够靠近(相互之间的距离在Eps之内)的核心点放在同一个簇中。同样,任何与核心点足够靠近边界点也放到与核心点相同的簇中。如果一个边界点靠近不同簇的核心点,则可能需要解决平局问题。噪声点被丢弃
  • 时间和空间复杂度

  • 优点和缺点

    • 基于密度定义簇,所以能抗噪声,能处理任意形状和大小的簇
    • 密度变化太大时候、对于高维数据难以定义密度的,会出现问题
    • 计算所有点的时候开销可能很大
  1. 簇评估

  • 概述

    • 簇验证的重要任务
      • 确定数据集的聚类趋势(是否存在非随机结构
      • 确定正确的簇个数
      • 不引用附加的信息,评估聚类分析结果对数据拟合的情况
      • 将聚类分析结果与已知的客观结果比较
      • 比较两个簇集,确定哪个更好
    • 度量或指标分为三类
      • 无监督的:不考虑外部信息,内部指标,如SSE,进一步分成凝聚、分离
      • 有监督的:发现的聚类结构与某种外部结构的匹配程度外部指标
      • 相对的:比较不同的聚类或簇
  • 无监督簇评估:使用凝聚度和分离度

  • 轮廓系数

    • 结合了凝聚度分离度
    • 计算过程:
      • 1️⃣ 计算第i个对象到簇中所有其他对象的平均距离a_i
      • 2️⃣ 计算第i个对象到包含该对象的任意簇中对象的平均距离b_i
      • 3️⃣ 轮廓系数s_i=\frac{b_i-a_i}{max(a_i,b_i)},-1~1之间,越接近1说明聚类效果越好
  • 无监督簇评估:使用邻近度矩阵

    • 理想的簇:点与簇内所有点相似度为1,与其他簇内所有点相似度为0
      • 矩阵排序:块对角结构
      • 块内部相似度非0,其他为0

第七章 异常检测

  1. 概述

  • 异常检测的目标是发现一些不符合正常规律和行为的对象。
    • 异常对象被称为离群点(outlier),因为在数据的散点图中,它们的分布远离其他的数据点
    • 异常检测也称为偏差检测,因为异常对象的某些属性值明显偏离该属性的期望值或典型的属性值
    • 异常检测也称为例外挖掘,因为异常在某种意义上是例外的。
  • 应用场景:欺诈检测、入侵检测、医疗和公共卫生、航空安全
  1. 异常检测问题的特性

  • 异常的定义
    • 异常是指不符合正常实例分布的观测,比如与某种分布下大多数实例不相似。
      • 这个定义没有假设这种分布是可以用已知统治分布术语轻易表达的。事实上,这种困难正式许多异常检测方法使用非统计学方法的原因。
      • 可以按照看到一个对象的概率或某种更极端的方法来对数据对象排序。出现的概率越低,这个对象越可能是一个异常数据
      • 造成异常现象的原因有很多:噪声,对象来自不同的分布,对象仅仅是这个分布中极少出现的
  • 数据的性质
    • 输入数据的性质在决定选择合适的异常检测技术中起着重要的作用。
    • 输入数据的一些共有特性包括属性的数量和类型,以及描述每个数据实例的表示方式
    • 单变量或多变量
      • 如果单一属性,该对象是否异常只依赖于这个对象的属性值是否是异常的
      • 如果多个属性,可能某些属性上有异常的数值,其他属性表现正常
      • 一个对象即使每个单独属性都不异常整体而言也有可能是异常对象
    • 记录数据或邻近度矩阵
      • 表示一个数据集合最常见的方式是使用记录数据或它的变体,比如数据矩阵,在矩阵中每个数据实例使用相同的属性进行描述。
      • 一些异常检测方法适应邻近度矩阵,矩阵中的每一个数值表示两个实例间的接近程度(相似或不相似)
    • 标签的可用性
      • 一个数据实例的标签标明这个实例是正常的还是异常的
      • 如果有一个每个数据实例都带有标签的训练数据集,那么异常检测的问题就可以转化为监督学习(分类)问题
      • 因为异常数据非常稀少,获得异常类的类标是非常具有挑战性的
      • 本质上大多数异常检测问题是无监督的
      • 给定一个输入数据集,从正常实例中区分出异常实例是非常具有挑战性的
    • 异常的两个主要性质
      • 数量相对较少
        • 正常实例占绝大多数,输入数据集作为正常类的不完美展示,指定输入数据中异常值期望数量的机制可以处理具有大量异常的数据。
      • 稀疏分布
        • 异常数据分布稀疏,有一些异常检测方法专门用来找聚类异常,通常假设这些异常数据的数量很小或者离其他实例的距离很远
  • 如何使用异常检测
    • 方法一:给定的输入数据中既包含正常实例又包含异常实例,我们要找到异常实例,本章所有异常检测方法都可以在这种设定中使用
    • 方法二:获得识别为异常的测试实例(每次出现一个),大多数异常检测方法都能够使用输入数据集来提供测试实例的输出
  1. 统计方法

  • 基本概念

    • 统计方法使用概率分布对正常类进行建模。
    • 这些分布的一个重要特征是它们把每一个数据实例和一个概率值进行关联,表示这个实例从分布中生成的可能性有多大。
    • 异常数据被认为是那些不太可能从正常类的概率分布中生成的实例。
    • 有两种类型的模型可以用来表示正常类的概率分布:
      • 参数模型:使用那些熟知的统计分布族,这些分布需要从数据中进行参数估计
      • 非参数模型:非常灵活,直接从得到的数据中学习正常类的分布
  • 使用参数模型

    • 一些常用的参数模型被广泛用于描述许多类型的数据集,这些模型包括高斯分布、泊松分布和二项分布。其中涉及的参数需要从数据中学习,例如,高斯模型需要从数据中确定均值和方差这两个参数
    • 参数模型能够非常有效的表示正常类的行为,尤其当知道正常类服从某个特定分布时。通过参数模型计算的异常分数具有较强的理论性质,可以用于分析异常分数并评估其统计显著性
    • 将在一元和多元环境下讨论用高斯分布对正常类进行建模
  • 使用非参数模型

    • 简单的对正常类建模的非参数方法建立正常数据的直方图
    • 如果数据包含单一连续的属性,那么可以使用等宽离散技术来构造属性的不同范围的容器。
    • 之后,可以检查一个新的实例是否落在了直方图的容器中。如果它没有落在任何一个容器中,则可以认为它是一个异常实例
    • 否则,可以使用实例所在容器频率的倒数作为它的异常分数。这个方法称为基于频率的基于计数的异常检测方法。

  1. 基于邻近度的方法

  • 基本概念

    • 基于邻近度的方法把那些远离其他对象的实例认定为离群点
    • 该方法依赖的假设是,正常实例相关的并且彼此接近,而异常的实例与其他实例不同,因此与其他实例的距离相对较远
    • 因为许多基于邻近度的技术都基于距离变量,因此也称为基于距离的异常检测技术
    • 基于邻近度的方法都是无模型异常检测技术,因为它们没有构建一个明确的正常类模型用于计算异常分数。
    • 它们利用每个数据的局部视角计算其异常分数
    • 它们比统计方法更加通用,因为确定一个对数据集有意义的邻近度度量往往比确定其他统计分布更容易。
  • 基于距离的异常分数

    • 定义数据实例x的基于邻近度的异常分数的最简单方法之一是使用它到第k个最近邻的距离dist(x,k)
      • 如果一个实例x许多其他实例位于它的附近(正常类的特性),dist(x,k)的值将会很小
      • 一个异常实例x将会和它的k-近邻实例由非常远的距离,因此dist(x,k)的值也会比较大
      • dist(x,k)对k的取值非常敏感,k太小少量离群点的异常分数也会较低;k太大所有对象都有可能变成异常。
    • 另一种基于距离的异常分数是取前k个最近邻距离的平均值avg.dist(x,k),其对k的选择更具有鲁棒性
      • 事实上,avg.dist(x,k)作为一种可靠的基于邻近度的异常分数被广泛应用在多个应用中。
  • 基于密度的异常分数

    • 一个实例周围的密度可以定义为\frac{n}{V(d)},其中n是指距离它在一个特定距离d内的实例数V(d)是邻域的体积
    • 由于V(d)对于给定的d是恒定的,所以实例周围的密度通常用固定距离d内的实例数量来表示。此定义类似于DBSCAN聚类算法所使用的定义。
    • 从基于密度的观点来看,异常是低密度区域中的实例。因此,一个异常在距离d内具有的实例个数比正常的实例更少
    • 在基于密度的度量中选择参数d是具有挑战性的。
      • 如果d太小,那么许多正常实例错误地显示低密度值
      • 如果d太大,那么许多异常可能具有类似于正常实例的密度
    • 基于距离基于密度的异常分数是相反的关系。这可以用来定义如下的密度度量,其基于两个距离度量dist(x,k)avg.dist(x,k)

density(x,k)=\frac{1}{(x,k)}

avg.density(x,k)=\frac{1}{avg.dist(x,k)}

  • 基于相对密度的异常分数

    • 上述基于邻近度的方法只考虑单个实例局部性来计算其异常分数
    • 在数据包含不同密度的区域的情况下,这样的方法无法正确地识别异常,因为正常位置的概念会随着区域的变化而变化。(有的区域松一点异常标准应该低一点)
    • 为了正确地识别上述数据集中的异常点,需要一个与相邻实例的密度相关的密度概念
    • 对于一个点x,有一种方法就是计算它的k-近邻(y1到yk)平均密度和x的密度的比率,如下:相对密度(x,k)=\frac{\frac{1}{k}\sum_{i=1}^{k}density(y,k)}{density(x,k)}
    • 点附近的平均密度明显于点的密度时,它的相对密度就会很高

  1. 基于聚类的方法

  • 概述

    • 基于聚类的异常检测方法使用簇来表示正常类
    • 这依赖于这样的假设:正常实例彼此接近,因此可以被分组成簇
    • 异常点则为不符合正常类的簇的实例,或者出现在与正常类的簇相距很远的小簇中的实例。
    • 基于聚类的方法可以分为两种类型
      • 小簇视为异常
      • 一个点如果没有很好地符合聚类将被定义为异常,通常由该点到簇心的距离来度量
  • 发现异常簇

    • 这种方法假定在数据中存在簇异常,其中异常以小规模的紧密组出现。
    • 当异常从同一异常类中产生时,就会出现聚类异常。
    • 异常类通常为小簇,因为异常在自然界中是罕见的
    • 由于异常不符合正常的模式或行为,所以异常也被期望会远离正常类的簇
    • 检测异常簇的一种基本方法是对总体数据进行聚类,并标记大小太小或与其他簇相距太远的簇
  • 发现异常实例

    • 从聚类的角度看,另一种描述一个异常的方式是该实例不能被任何正常簇解释
    • 一个异常检测的基本方法是,首先聚类所有数据(主要包括正常实例),然后评估每个实例属于其各自簇的程度
    • 因此,远离它们各自簇的质心的实例可以被识别为异常
    • 评估一个对象属于一个簇的程度
      • 对于基于原型的簇,有几种方法来评估一个实例属于一个簇的程度。
      • 一种方法是度量实例与其簇原型之间的距离,并将其视为该实例的异常分数。
      • 如果这些簇的密度不同,那么我们可以构造一个异常分数,该分数可以就实例到簇中其余实例的距离而言,度量实例到簇原型的相对距离
      • 另一种可能是假设簇可以用高斯分布精确地建模,那就使用马氏距离作为度量方式M(x,y)=\sqrt{(x-y)^T\Sigma^{-1}(x-y)}
      • 相对距离是该点与质心的距离该簇中所有点与质心的中位距离之比
;