第一章 绪论
-
数据时代
-
数据挖掘发展的动力
- 数据爆炸:数据采集工具和成熟的数据存储技术使大量的数据被收集和存储。
- 我们拥有丰富的数据,但是缺乏有用的信息
- 迫切需要将传统的数据分析方法与用于处理大量数据的复杂算法相结合。
-
数据挖掘的的价值
- 电子商务领域,金融领域,医疗健康领域,交通运输领域,社交媒体领域,制造业领域,教育领域,政府和公共服务领域,农业领域
-
数据挖掘概念
- 数据挖掘是在大型数据库中自动发现有用信息的过程
-
- 探查大型数据库、发现先前未知的有用模式 (pattern)
- 可以预测未来的观测结果,并非所有的信息发现任务都被视为数据挖掘(如数据库的查询任务)
- 数据挖掘是数据库中知识发现(KDD)不可缺少的一部分
- KDD是识别数据中有效的、新颖的、潜在有用的和易于理解的模式的非平凡过程
-
- 预处理是将原始输入数据转换为适当的格式,以便后续分析
-
- 融合多个数据源的数据,数据清洗(消除噪声和重复值),选择与任务相关的记录和特征
-
- 后处理确保只将有效和有用的结果集成到决策支持系统(DSS)中
-
- 可视化:使得数据分析者从不同的视角探查数据和挖掘结果
- 使用统计度量或假设检验,删除虚假挖掘结果
-
-
数据挖掘要解决的问题
-
可伸缩性/可扩展性
- 代表一种弹性,随着数据量的快速增长,能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现处理能力的线性增长,实现高吞吐量和高性能
- 采样技术:随机采样、均匀采样、水库采样
- 并行(分布式)计算:Map/Reduce计算框架
- 在线/增量学习方法:持续学习(Continual Learning)
- 代表一种弹性,随着数据量的快速增长,能够保证旺盛的生命力,通过很少的改动甚至只是硬件设备的添置,就能实现处理能力的线性增长,实现高吞吐量和高性能
-
高维性
- 维度(Dimension)通常是描述数据的属性或特征,比如地理位置、时间、类别、性别、职业等,它们是用来划分数据的类别或属性。
- 为低维数据开发的传统分析技术通常不能很好地处理高维数据
- 某些分析算法,随着维度(特征数)的增加,计算复杂度会迅速增加。
-
异构和复杂
- 传统分析方法只处理包含相同类型属性的数据集。
- 现在的数据类型更复杂:文本、图像、音频和视频
- 为挖掘复杂对象,需要考虑数据中的联系
- 时间和空间的自相关性
- 图的连通性
- 半结构化数据与XML文档的关系
-
所有权和分布
- 针对在物理上分布式存储的数据需要面临一系列挑战
- 如何降低分布式计算所带来的额外通信开销
- 如何有效地从多个数据源获得挖掘结果
- 如何解决数据安全和隐私问题
- 针对在物理上分布式存储的数据需要面临一系列挑战
-
数据挖掘的起源
1989年8月于美国底特律市召开的第十一届国际联合人工智能学术会议上首次提到“知识发现”这一概念;
到1993年,美国电气电子工程师学会(IEEE)的知识与数据工程(Knowledge and Data Engineering)汇刊出版了KDD技术专刊,发表的论文和摘要体现了当时KDD的最新研究成果和动态;
1995年在加拿大蒙特利尔召开的首届“知识发现与数据挖掘”国际学术会议上,首次提出了“数据挖掘”这一学科的名称,并把数据挖掘技术分为科研领域的知识发现与工程领域的数据挖掘。
- 多学科的交叉:设计数据库技术、人工智能、数理统计、机器学习、模式识别、高性能计算、知识工程、神经网络、信息检索、信息的可视化等领域
-
数据挖掘任务
- 两大基本任务:预测和描述
- 预测任务:根据其他属性的值预测特定属性的值
- 被预测的属性:目标变量/因变量
- 用于预测的属性:解释变量/自变量
- 描述任务:导出数据中潜在联系的模式
- 相关、趋势、聚类、轨迹和异常
- 探查性的,需要加以验证和解释
- 预测任务:根据其他属性的值预测特定属性的值
- 预测建模
- 为目标变量建立模型,将其作为解释变量的函数
- 分类:用于预测离散的目标变量
- 回归:用于预测连续的目标变量
- 任务目标:使目标变量的预测值与实际值之间的误差最小
- 为目标变量建立模型,将其作为解释变量的函数
- 关联分析
- 用来发现描述数据中强关联特征的模式
- 所发现的模式通常用蕴含规则或特征子集的形式表示变量
- 任务目标:以最有效的方式提取最有趣的模式
- 用来发现描述数据中强关联特征的模式
- 聚类分析
- 旨在发现紧密相关的观测值组群,使得与属于不同簇的观测值相比,属于同一簇的观测值之间尽可能类似模式。
- 推荐算法
- 通过一些数学算法,推测出用户可能喜欢的东西
- 任务目标:帮助用户找到真正想要的+降低信息过载
- 异常检测
- 识别特征显著不同于其他数据的观测值,这样的观测值称为异常点或离群点。
- 任务目标:具有高检测率和低误报率。
- 图数据分析
- 图(Graph)是一种数据结构,用于模拟物理、生物、社会和信息系统中的许多类型的关系和过程。
- 图由节点或顶点(表示系统中的实体)组成,这些节点或顶点由边(表示这些实体之间的关系)链接。
- 任务目标:使用特定于图的算法来实现节点级、边级和图级的分析任务。
第二章 数据基础
-
数据类型
-
属性
- 属性:对象的性质或特性,因对象而异,或随时间而变化(也称为变量、特性、字段、特征或维)
- 一组属性用于描述对象(对象也称记录、点、事例、示例、实体或实例)
- 数据集:数据对象的集合
-
属性值
- 属性值是指定给特定对象属性的数值或符号(数值可以具有无穷多个值,符号具有少量的值)
- 属性和属性值之间的区别(相同的属性可以映射到不同的属性值,不同的属性值可以映射到同一组值)
- 属性的性质可以不同于表示属性值的性质(年龄属性有最大值,而整数没有)
-
属性类型
- 可以定义四种属性类型:标称、序数、区间、比率
- 标称(Nominal):标称属性的值是一些符号或实物的名称,每个值代表某种类别、编码或状态。比如:ID,性别
- 序数(Ordinal):序数属性可能的取值之间具有意义的序,但相继值之间的差是未知的。比如:排名,等级
- 区间(Interval):区间属性可能的取值之间是有序的,不同取值之间的差异是有意义的。比如:日期,温度
- 比率(Ratio):具有相等单位绝对零点的变量,例如身高、体重等。
- 属性的类型取决于它拥有以下哪些性质/操作
- 相异性:=和\ne
- 序:< 、\leq 、>、\geq
- 差异:+ 和 -
- 比率:* 和 /
- 标称:相异性;序数:相异性、序;区间:相异性、序、差异;比率:全具备
- 可以定义四种属性类型:标称、序数、区间、比率
-
用值的个数描述属性
- 离散:具有有限个值或者无限可数个值,常用整数变量表示
- 可以是分类的(如邮政编码或ID号),也可以是数值的(如计数)
- 二元属性是离散属性的特例,常用布尔变量表示
- 连续:取实数值的属性,常用浮点变量表示
- 例如:温度、高度、重量
- 通常,标称和序数属性是二元的或离散的,区间和比率属性是连续的
- 离散:具有有限个值或者无限可数个值,常用整数变量表示
-
非对称属性
- 只有存在非零属性值才被视为重要(文档中出现的单词,客户购买过的商品)
- 非对称的二元属性:只有非零值才重要的二元属性(对于关联分析特别重要)
- 也存在离散的/连续的非对称属性(比如文档中单词出现的次数/频率)
-
数据集的重要特性
- 维度:数据对象具有的属性数
- 分析高维数据有时会陷入维灾难,主要通过降维解决
- 稀疏性:稀疏的数据对象大多数属性值都是0
- 对于关联分析特别重要
- 分布:构成数据对象的属性的各种值或值得集合出现的频率
- 很多数据的分布并非标准的统计分布,比如高斯分布
- 维度:数据对象具有的属性数
-
数据集的类型
- 数据集的分布特征可以从集中趋势、离散程度及分布形态三个方面进行描述
- 集中趋势
- 主要测度:众数、中位数、均值
- 均值两点特质:各变量值与均值的离差之和等于0;离差平方和最小
- 几何平均值:适用于对比率数据的平均,主要用于计算平均增长率。计算公式G_m=\sqrt[n]{x_1 \times x_2 \times x_3 \times \cdots \times x_n}=\sqrt[n]{\prod_{i=1}^{n}x_i}
- 主要测度:众数、中位数、均值
- 离散程度
- 反映观测变量各个取值之间的差异,包括:异众比率、四分位差、方差及标准差、标准分数、离散系数等。
- 异众比率:分类数据离散程度的测度,计算公式\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),统计数据分布偏移方向和程度的度量。
- 根据原始数据计算偏态系数SK=\frac{n\sum(x_i-\bar x)^3}{(n-1)(n-2)s^3}
- SK<0,左偏分布;SK>0,右偏分布;SK=0,对称分布
- 峰态:是反应变量分布陡峭程度的指标
- 三种情况:标准正态分布、尖峰分布、扁平分布
- 分辨率(resolution):经常可以在不同的分辨率下得到数据,并且在不同的分辨率下数据的性质不同。
- 数据的模式也依赖于分辨率。如果分辨率太高,模式可能看不出,或者掩埋在噪声中;如果分辨率太低,模式可能不出现。
- 数据集的类型:记录数据、基于图的数据、有序数据
- 记录数据集:记录的汇集,每个记录具有固定的、相同的属性集,记录之间或属性之间没有明显的联系。
- 事务数据:一种特殊类型的记录数据;每个记录涉及一系列项;事务数据是项的集合,可以将其视为一组字段为非对称属性的记录
- 基于图的数据:图捕获数据对象之间的联系,数据对象本身用图表示
- 频繁图挖掘:在图的集合中发现一组频繁出现的子结构
- 有序数据
- 时序事务数据:事务数据的扩充,每个事务包含一个与之相关联的时间
- 时间序列数据:在不同时间上收集到的数据,用于所描述现象随时间变化的情况(重要考虑时间自相关性,即如果两个测量的时间很近,则它们的值很相似)
- 序列数据:一个数据集合,包含各个实体的序列,如词或字母的序列
- 空间和时空数据:具有空间属性的数据对象(重要考虑空间自相关性,即物理上靠近的对象趋于在其他方面也相似;空间自相关类似于时间自相关)
- 记录数据集:记录的汇集,每个记录具有固定的、相同的属性集,记录之间或属性之间没有明显的联系。
-
数据质量
-
数据质量
- 人类的错误、测量设备的限制或数据收集过程中的漏洞都可能导致不真实或重复的对象,也会存在不一致
- 数据挖掘着眼于两个方面
- 数据质量问题的检测与纠正——数据清理
- 使用可以容忍低质量数据的算法——鲁棒算法
-
测量和数据搜集问题
- 测量误差:测量过程中产生的问题——记录值与实际值不同
- 误差:对于连续属性,测量值与真实值的差
- 数据搜集错误:遗漏数据对象或属性值,或者不当地包含了其他数据对象等错误
- 这两种问题可能是系统的,也可能是随机的
- 测量误差:测量过程中产生的问题——记录值与实际值不同
-
噪声和伪像
- 噪声:测量误差的随机部分,通常涉及值被扭曲或加入了谬误对象(既有时间上的也有空间上的)
- 使用信号或图像处理技术降低噪声,从而帮助发现可能“淹没在噪声中”的模式(信号)
- 鲁棒算法:在噪声干扰下也能产生可以接受的结果。
- 数据错误可能是更确定性现象的结果,伪像就是数据的确定性失真
-
精度、偏置
- 测量过程和结果数据用精度和偏置度量
- 精度:(同一个量的)重复测量值之间的接近程度(用值集合的标准差度量S=\sqrt{\frac{\sum_{i=1}^{n}{(x_i-\bar x)^2}}{n-1}})
- 偏置:测量值与被测值之间的系统的变化)(用值集合的均值与被测量的已知值之间的差度量bias^2(x)=(\bar f(x)-y)^2)
-
准确率
- 准确率:被测量的测量值与实际值之间的接近度
- 一个重要方面是有效数字的使用
- 目标是只使用与数据精度相符的数字来测量或计算结果
- 缺乏对数据和结果准确率的分析,分析者将可能出现严重的数据分析错误
-
离群点
- 离群点:具有不同于数据集中其他大部分数据对象的特征的数据对象,或是相对于该属性的典型值来说不寻常的属性值。我们也称其为异常对象或异常值。
- 注意区分噪声和离群点:离群点是合法的数据对象或值
-
遗漏值
- 一个对象遗漏一个或多个属性值的情况并不少见
- 应对策略:
- 删除数据对象或属性:删除具有遗漏值的数据对象,然而有时即便不完整的数据对象也可能包含一些有用的信息
- 估计遗漏值:可以采用插值方法、邻近点的属性(平均)值、近邻中最常出现的属性值进行可靠估计。
- 在分析时忽略遗漏值:采用没有遗漏值的属性来计算相似性。
-
不一致的值
- 数据可能包含不一致的值
- 无论原因是什么,重要的是能检测出来并且如果可能的话,纠正这种错误,比如基于“校验”信息
- 检测到不一致后,有事可以对数据进行更正
-
重复数据
- 数据集可以包含重复或几乎重复的数据对象
- 去重复
- 对于相同的对象,如果存在属性值不同,要一致化
- 避免意外地将两个相似但并非重复的数据对象合并
- 在某些情况下,两个或多个对象在数据库的属性度量上是相同的,但是仍然代表不同的对象
-
数据预处理
- 预处理方法:选择分析所需要的数据对象和属性,以及创建/改变属性
- 聚集:将两个或多个对象合并成单个对象
- 删除属性/压缩特定属性不同值个数的过程,常用于联机分析处理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️⃣ 将一个区间中的所有值映射到相同的分类值
- 离散化问题就是决定选择多少个分割点和确定分割点位置的问题
- 两种形式:
- 无监督离散化:不使用类信息进行离散化(等宽法、等频率或等深)
- 监督离散化:根据类标对数据进行离散化(极大化区间纯度的方式确定分割点)
- 基于熵(纯度的度量)的方法是重要的离散化方法之一。
- 熵:设k是不同的类标号数,m_i是某划分的区间i中值的个数,m_{ij}是区间i中类j的值的个数,第i个区间的熵是e_i=-\sum_{j=1}^{k}p_{ij}log_2p_{ij},\space p_{ij}=\frac{m_{ij}}{m_i}第i个区间中类j的概率
- 划分的总熵e是每个区间的熵的加权平均:e=\sum_{i=1}^{n}w_i \times e_i, \space wi=\frac{m_i}{m}第i个区间的值的比例
- 如果一个区间只包含一个类的值(该区间非常纯)则其熵为0;如果一个区间中的值类出现的频率相等(该区间非常不纯),则其熵最大。
- 分类属性有时可能具有太多的值
- 如果分类属性是序数属性,则可以使用类似于处理连续属性的技术,以减少分类值的个数
- 如果分类属性是标称的,就需要使用属性值之间联系的知识,将其合并成较大的组(仅当分组结果能提高分类准确率或达到某种其他数据挖掘目标时,才将至聚集到一起)
- 变量变换:用于变量的所有值的变换
- 一个函数,它将给定属性的整个值集映射到一组新的替换值,这样每个旧值都可以用一个新的值来标识(简单函数变换、规范化或标准化)
- 简单函数变换:一个简单的数学函数分别作用于每一个值
- 在统计学中,变量变换(特别是平方根、对数和倒数变换)常用来将不具有高斯(正态)分布的数据变换成具有高斯(正态)分布的数据
- 如果变量具有很大的值域,常用对数变换将其进行压缩
- 使用变量变换时需要小心,因为它们改变了数据的特性(新数据特性,是否保序,是否可作用于0或负值,对0-1间的值有何影响)
- 规范化和标准化:使整个值的集合具有特定的性质
- 最小-最大规范化:对原始数据进行线性变换。假如min_A和max_A分别是属性A地最小值和最大值。最小-最大规范化通过如下计算:v_i'=\frac{v_i-min_A}{max_A-min_A}(new\_max-new\_min_A)+new\_min_A把A的值映射到区间[new\_min-A,new\_max_A]中。
- z分数:也叫标准分数,是一个数与平均数的差再除以标准差的过程。
- x'=\frac{x-\bar x}{s_x},\bar x是属性值的均值(平均值),而s_x是它们的标准差,它具有均值0和标准差1
- 均值和标准差受离群点的影响很大,可以用中位数取代均值,用均值绝对偏差取代标准差\bar d=\frac{|x_1-\bar x|+|x_2-\bar x|+\cdots+|x_n-\bar x|}{n}=\frac{\sum_{i=1}^{n}|x_i-\bar x|}{n}
- 小数定标规范化:通过移动属性A的值的小数点位置进行规范化。小数点的移动位数依赖于A的最大绝对值。A的值v_i被规范化为v_i',由下式计算:v_i'=\frac{v_i}{10^j},其中j是使得max(|v_i'|)<1的最小整数。
- 最小-最大规范化:对原始数据进行线性变换。假如min_A和max_A分别是属性A地最小值和最大值。最小-最大规范化通过如下计算:v_i'=\frac{v_i-min_A}{max_A-min_A}(new\_max-new\_min_A)+new\_min_A把A的值映射到区间[new\_min-A,new\_max_A]中。
-
相似性和相异性的度量
-
基础
- 相似度:两个对象相似程度的数值度量(非负,0不相似,1完全相似)
- 区间变换:s'=\frac{(s-min\_s)}{(max\_s-min\_s)},和min\_s分别是相似度的最大值和最小值
- 相异度:两个对象差异程度的数值度量(越类似相异度越低,[0,1]或[0,∞]取值)
- 区间变化:d'=\frac{(d-min\_d)}{(max\_d-min\_d)}
- 如果相似度/相异度落在[0,1]区间,则相异度/相似度可以定义为d=1-s或s=1-d
- 邻近度表示相似性或相异性
- 相似度:两个对象相似程度的数值度量(非负,0不相似,1完全相似)
-
简单属性之间的相似度和相异度
- 下表显示了两个对象x和y在单个简单属性方面的相似性和不相似性
属性类型 | 相异度 | 相似度 |
标称 | ||
序数 | d=\frac{|x-y|}{(n-1)},值映射到整数0到n-1,其中n是值的个数 | |
区间或比率 |
-
数据对象之间的相异度
- 距离具有一些众所周知的性质
- 如果d(x,y)是两个点x和y之间的距离,则如下性质成立:
- 非负性d(x,y)\geq 0、同一性x=y,d(x,y)=0
- 对称性d(x,y)=d(y,x)、三角不等式d(x,z) \leq d(x,y)+d(y,z)
- 满足以上四个性质的测度称为度量
- 欧几里得距离d(x,y)= \sqrt{\sum_{k=1}^{n}(x_k-y_k)^2}, n是维度,x_k和y_k分别是x和y的第k个属性
- 闵可夫斯基距离d(x,y)=(\sum_{k-1}^{n}|x_k-y_k|^r)^{1/r}
- 三个特例
- r=1,城市街区、曼哈顿、出租车距离d(x,y)=\sum_{k=1}^{n}|x_k-y_k|
- r=2,欧几里得距离(L2范数)
- r=∞,上确界距离、切比雪夫距离d(x,y)=\max_{k}{(|x_k-y_k|)}
- 三个特例
-
数据对象之间的相似度
- 对于相似度,三角不等式(或类似的性质)通常不成立,但是对称性和非负性通常成立
- 如果s(x,y)是两个点x和y之间的相似度,则如下性质成立
- 非负性0\leq s \leq 1;仅当x=y时,s(x,y)=1
- 对称性 对于所有x和y,s(x,y)=s(y,x)
-
邻近度度量的例子
- 两个仅包含二元属性的对象之间的相似性度量也称为相似系数,并且通常在0和1之间取值,值为1表明两个对象完全相似, 0表明对象完全不相似
- 设x和y是两个对象,都由n个二元属性组成。这样的两个对象(即两个二元向量)D额比较可生成如下四个量:
- 简单匹配系数SMC SMC=\frac{值匹配的属性个数}{属性个数}=\frac{f_{00}+f_{11}}{f_{00}+f_{01}+f_{10}+f_{11}}
- Jaccard系数:J=\frac{f_{11}}{f_{01}+f_{10}+f_{11}},用来处理仅包含非对称的二元属性的对象
- 文档用向量表示,向量的每个分量(属性)代表一个特定的词(术语)在文档中出现的频率;每个文档向量都是稀疏的,因为它具有相对较少的非零属性值;文档的相似性度量不仅影响Jaccard度量一样需要忽略0-0匹配,而且还必须能够处理非二元向量。
- 余弦相似度 cos(x,y)=\frac{x \cdot y}{||x||\space||y||}=\frac{\sum_{k=1}^{n}x_ky_k}{\sqrt{\sum_{k=1}^{n}x_k^2}\sqrt {\sum_{k=1}^{n}y_k^2}}
- 两个向量的内积(x \cdot y)适用于非对称属性,只依赖于两个向量中非零的分量
- 两个文档之间的相似性只取决于它们中出现的单词
- 余弦相似度实际上是x和y之间夹角(余弦)的度量
- 余弦相似度不考虑两个数据对象的量值
- 广义Jaccard系数(Tanimoto系数)T(x,y)= \frac {x \cdot y} { ||x||^2 + ||y||^2 - x\cdot y} = \frac {\sum_{k=1}^{n}x_ky_k} { \sum_{k=1}^{n}x_k^2 + \sum_{k=1}^{n}y_k^2- \sum_{k=1}^{n}x_ky_k }
- 相关性
- 相关性经常被用来测量两组被观察到的值之间的线性关系
- 相关性可以测量两个变量(高度和重量)之间或两个对象(一对温度时间序列)之间的线性关系
- 如果两个数据对象中的值来自不同的属性,可以使用相关性来度量属性之间的相似度
- 统计学中的三大相关性系数:Pearson Spearman Kendall
- 协方差:用来衡量两个变量的总体误差
- 变化趋势一致,正值,正相关;变化趋势相反,负值,负相关
- 相互独立协方差为0,不相关
- cov(X,Y)=\frac{\sum_{i=1}^{n}(X_i-\bar X)(Y_i - \bar Y)}{n-1}
- 方差是协方差的特殊情况,其中两个属性相同(属性与自身的协方差)
- 皮尔森相关系数是协方差于标准差的比值
- corr(x,y)=\frac{covariance(x,y)}{standard_{deviation(x)} \times standard_{deviation(y)} }=\frac{S_{xy}}{S_xS_y}
- S_{xy}=\frac{1}{n-1}\sum_{k=1}^{n}(x_k-\bar x)(y_k-\bar y), S_x=\sqrt{\frac{1}{n-1}\sum_{k=1}^{n}(x_k-\bar x)^2}, S_y=\sqrt { \frac{1}{n-1} \sum _{k=1} ^{n} (y_k-\bar y)^2 }
- 相关度总是在-1到1之间取值:1(-1)意味着x和y具有完全正(负)线性关系;相关度为0,则两个数据对象的属性不存在线性关系,仍然可能存在非线性关系。
- 数据变换发现邻近度度量值不变,则该邻近度度量方法被认为对数据变换具有不变性
- 相关性度量对于缩放和平移都有不变性,而余弦度量只对缩放具有不变性
- 闵可夫斯基度量对缩放和平移都是敏感的
-
邻近度计算中的问题
- 当属性具有不同的值域通常称作变量具有不同的尺度。
- 当属性相关时、具有不同的值域(不同的方差),并且数据分布近似于高斯(正态)分布时,马氏距离是有用的M(x,y)=\sqrt{(x-y)^T \Sigma^{-1}(x-y)}
- \Sigma^{-1}是数据协方差矩阵的逆,协方差矩阵的第ij个元素是第i个和第j个属性的协方差
- 当属性具有不同类型时,直截了当的方法是分别计算出每个属性之间的相似度,然后使用一种输出为0和1之间相似度的方法组合这些相似度。
- 将总相似度定义为所有属性相似度的平均值;当某些属性是非对称属性,如果两个对象在这些属性上的值都是0,则在计算对象相似度时忽略它们
- 当某些属性对邻近度的定义比其他属性更重要时,可以通过对每个属性的贡献加权来修改邻近度公式,属性权重为w_k时,similarity(x,y)=\frac {\sum_{k=1}^{n}w_k*\delta_k*s_k(x,y)} {\sum_{k=1}^{n}w_k*\delta_k},闵可夫斯基距离的定义也可修改为d(x,y)=(\sum_{k=1}^{n}w_k*|x_k-y_k|^r)^{1/r}
-
数据可视化
- 数据可视化:旨在通过图形表示清晰有效地表达数据
- 通过将数据映射到图形图元上,深入了解信息空间
- 提供大型数据集的定性概述
- 搜索模式、趋势、结构、不规则性、数据之间的关系
- 帮助找到有趣的区域和合适的参数,以便进行进一步的定量分析
- 提供计算机表示的视觉证明
- 基于像素的可视化技术
- 一种可视化一维值的简单方法是使用像素,其中像素的颜色反映该维的值
- 对于一个m维数据集,基于像素的技术在屏幕上创建m个窗口,每维一个
- 记录m个维值映射到这些窗口中对应位置上的m个像素
- 窗口不必是矩形的,圆弓分割技术使用圆弓形窗口
- 几何投影可视化技术
- 像素对于我们理解多维空间的数据分布帮助不大
- 几何投影技术帮助用户发现多维数据集的有趣投影
- 几何投影技术的首要挑战是设法解决如何在二维显示上可视化高维空间
- 散点图使用笛卡尔坐标显示二维数据点,使用不同的颜色/形状表示不同的数据点,可以增加第三维。
- 维数超过4散点图一般不太有效,散点图矩阵是散点图的一种有用扩充,散点图矩阵是二维散点图的n\times n网格,提供每个维与所有其他维的可视化
- 可视化复杂对象和关系
- 越来越多的非数值数据,标签云是用户产生的标签的统计量的可视化
第三章 分类
-
基本概念
-
总体思路
- 分类任务的数据由元组(x,y)组成,其中x是描述实例的属性值集合,y是实例的类别标签。属性集x可以包含任何类型的属性,而类别标签y必须是可分类的。
- 分类模型是属性集和类别标签之间关系的抽象表示,在数学表达上作为一个目标函数f,它将属性值x作为输入并产生一个对应于预测类别标签的输出,如果f(x)=y,则该模型可正确地对实例(x,y)进行分类
- 分类模型在数据挖掘中担当两个重要角色:
- 预测模型:对先前未标记的实例进行分类(一个好的分类模型必须以快速的响应时间提供准确的预测)
- 描述性模型:识别不同类别实例的特征
- 类别标签必须是标称类型,可能并非所有属性都与分类任务相关,寻找区分不同类别实例的最佳属性组合是构建最优分类模型的关键挑战。
-
分类器的种类
- 二分类器将每个数据实例分配给两种可能的标签中的一种,通常表示为+1(正类)和-1(负类)。正类通常指的是我们对正确预测更感兴趣的类别。
- 多分类器:有两个以上的可用标签
- 确定性分类器:对每个它分类的数据实例产生一个离散值标签
- 概率性分类器:分配一个在0-1之间的连续的分数来表示特定标签的可能性,各分类下概率总和1(提供了更多分配到类时的置信度信息,实例通常分配给概率得分最高的类)
- 线性分类器:用一个线性分离超平面来区分不同类别中的实例
- 非线性分类器:能够构造更复杂的、非线性的决策表面(拟合复杂数据不太灵活,但不容易过拟合)
- 全局分类器:用单个模型拟合整个数据集
- 局部分类器:将输入空间划分为更小的区域,并将不同的模型拟合于每个区域的训练实例(K近邻分类器是一个经典例子,更具灵活性,但更容易过拟合)
- 生成分类器:在预测类别标签的过程中,学习每个类的生成模型
- 判别分类器:在没有明确描述每个类别分布的情况下,直接预测类别标签(不用对生成机制进行深入研究)
- 基分类器:基于决策树的方法、基于规则的方法、最近邻方法、朴素贝叶斯和贝叶斯信念网络、支持向量机、神经网络、深度神经网络
- 集成分类器:提升、装袋、随机森林
-
一般的分类框架
- 分类模型是使用给定的一组实例创建的,这组实例称为训练集,其中包含每个实例的属性值以及类别标签
- 学习算法:用于学习给定训练集的分类模型的系统方法
- 归纳:使用学习算法从训练数据建立分类模型的过程
- 演绎:在未知的测试实例上应用分类模型来预测它们的类别标签的过程
- 训练集和测试集应该是相互独立的,以确保归纳模型能够准确预测以前从未遇到过的实例的类别标签——具有良好的泛化性能
- 模型(分类器)的性能可以通过比较实例的预测标签和真实标签来评估,这些信息可以在混淆矩阵中总结出来。
- 评估度量:准确率,错误率
- 对于二分类问题,准确率=\frac{正确预测的数量}{总预测数量}=\frac{f_{00}+f_{11}}{f_{00}+f_{01}+f_{10}+f_{11}}
- 对于二分类问题,错误率=\frac{错误预测的数量}{总预测数量}=\frac{f_{01}+f_{01}}{f_{00}+f_{01}+f_{10}+f_{11}}
- 大多数分类计数的学习算法旨在学习在应用于测试集时达到最高准确度或等效最低错误率的模型
-
决策树分类器
-
基本概念
- 从根结点开始,应用其属性测试实例,并根据测试结果按照适当的分支进行操作;一旦到达叶结点,将于该结点关联的类别标签分配给测试实例。
-
构建决策树的基本算法(Hunt)
- 搜索空间随数据集规模指数级上升,寻找最佳数的代价是昂贵的
- 需要在合理的时间内归纳出具有合理准确率的决策树,尽管不是最优的
- 贪心策略:以自顶向下的方式生成决策树,对划分训练数据时要使用的属性进行一系列局部最优决策
- 决策树是递归方式生长,最初包含与所有训练实例关联的单个根结点;
- 如果某个结点与来自多个类的实例相关联,则会使用由拆分标准确定的属性测试条件进行扩展。为每个属性测试条件的每个结果创建一个子结点,并将与父结点关联的实例分发给子结点,可以递归应用于每个子结点(只要它具有多个类的标签),如果某个叶结点相关所有实例都具有相同的类别标签则不会进一步扩展
- 两个关键问题:拆分标准、终止标准
- 拆分标准:决定选择哪个属性作为测试条件以及如何将训练实例分配给子结点
- 终止标准:确定何时应该终止扩展结点的条件
-
表示属性测试条件的方法
- 二元属性的测试条件产生两个可能的输出
- 标称属性可以有多个属性值,因此多路划分和二元划分(2^{k-1}-1种)
- 序数属性也可以产生二元或多路划分,只要分组不违反有序性就能分组
- 连续属性的测试条件可以表示为产生二元划分的比较测试或表示用于产生多路划分的形的范围查询
-
如何确定最佳划分(重点)
- 贪心算法:优先考虑更纯净的子集的属性测试条件
- 子结点的不纯性度量:I(子结点)=\sum_{j=1}^{k}\frac{N(v_j)}{N}I(v_j)
- 差异越大条件越好,差异也叫纯度增益\Delta=I(父结点)-I(子结点)
- I(v_j)是该结点子结点的熵时,通常称为信息增益\Delta_{info}
-
增益率
- 熵和基尼指数等不纯性度量存在一个潜在的局限,即它们更容易选择具有大量不同值的定性属性
- 单一的低不纯性结点不足以找到良好的属性测试条件
- 子结点越多,决策树越复杂,更容易出现过拟合
- 在决定最佳属性测试条件时,考虑划分属性产生的子结点数量(一种方法是仅生成二元决策树,从而避免使用不同数量的划分来处理属性;另一种方法是修改划分标准以考虑属性生成的划分数量)
- 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)测量将结点划分成子结点的熵,并评估划分是否会导致大量相同大小的子结点
- 如果属性产生大量的划分,则其划分信息也很大,从而降低了增益率
-
决策树分类器的特点
-
适用性
- 非参数化,不需要先验假设因此适用于各种各样的数据集(连续可分类、多分类),易于理解,简单数据集准确率也与其它分类技术相当
-
表达能力
- 离散值函数通用表示,可以编码任何离散值属性的函数;每个离散值函数表示为一个赋值表,其中每个离散属性的唯一组合都被赋予一个类别标签,由于每个属性组合可以表示为一个叶结点所以总能找到
-
计算效率
-
处理缺失值
- 信息增益的计算式推广为Gain(D,a)=\rho\times Gain(\tilde{D},a)=\rho \times (Ent(\tilde D)-\sum_{v=1}^{V}\tilde r_v Eny(\tilde D^v)
- 其中,Ent(\tilde D)=-\sum_{k=1}^{|y|}\tilde p_klog_2\tilde p_k
- C4.5使用概率划分,CART使用替代划分,CHAID使用独立类
-
属性之间的相互作用
- 相互作用:一起使用能区分类别,单独使用提供很少或不提供信息
- 存在相互作用时决策树可能表现不佳
-
处理不相关的属性
- 属性对分类任务无用就利用特征选择技术消除
-
处理冗余属性
- 属性间强相关说明有属性冗余,选一个作为属性测试条件
-
使用直线分割
- 边界称为决策边界,一次只涉及单个属性,边界是直线平行于坐标轴;限制了决策树在表示具有连续属性数据集的决策边界时的表达能力;倾斜决策树可以通过允许使用多个属性指定测试条件来克服这个限制
-
-
三种常见的决策树算法
-
最近邻分类器
-
基本概念
- 决策树分类器是渴望学习器,懒惰学习器是延迟建模过程直到需要对测试实例进行分类
- 最近邻:找到与测试实例的属性相对形似的所有训练实例,用来确定测试实例的类别标签
- 最近邻分类器将每个样本表示为d维空间中的数据点,其中d为属性数目
- 给定一个测试实例,计算它与训练实例的接近程度
- 在邻居有多个标签的情况下,将测试实例分配给其最近邻居的类
-
算法
- 在多数表决方法中,每个邻居对分类具有相同的影响
- 为了减少k的影响的方法之一是,根据距离权衡每个最近邻的影响
- 使用距离加权w_i=\frac{1}{d(x',x_i)^2}投票方案,距离z较远的训练实例对分类的影响要小于距离z较近的
-
最近邻分类器的特点
- 最近邻分类器是以实例学习而闻名的一种通用技术
- 需要用邻近度量来确定实例之间的相似性或距离,以及基于测试实例与其他实例的邻近度返回其预测类别的分类函数
- 基于局部信息预测,具有较小的k值,对噪声非常敏感
- 难以处理缺失值,因为通常需要所有属性存在
- 如果有高度相关的冗余属性,可能过度偏向导致错误
- 除非采取适当的邻近度量和数据预处理步骤,否则可能出错
-
朴素贝叶斯分类器
-
基本概念
- 不确定性,所以需要置信度的度量
- 概率分类模型:利用概率论来表示属性和类别之间的关系
-
概率论基础
- 边缘化:对随机变量Y的联合概率求和,我们得到观察剩余变量Y的概率
- 贝叶斯定理:P(Y|X)=\frac{P(X,Y)}{P(X)}=\frac{P(X|Y)P(Y)}{P(X)}
- 全概率公式:P(X)=\sum_{i=1}^{k}P(X,y_i)=\sum_{i=1}^{k}P(X|y_i)\times P(y_i)
- P(Y)是类先验概率,P(Y|X)是后验概率,P(X|Y)是类条件概率(生成分类模型),P(X)不依赖于类别标签可被视为归一化常数
-
朴素贝叶斯假设
- 条件独立:独立P(X_1,X_2|Y)=P(X_1|Y)\times P(X_2|Y),假设P(X|Y)=\prod_{i=1}^{d}P(x_i|Y)
- 工作机制:P(y|x)\propto P(x)\prod_{i=1}^{d}P(x_i|y),选择能够最大化后者的类,可以自然地处理缺失值,没有极端情况仍然可以使用先验概率作为后验概率的估计
- 高斯分布P(X_i=x_i|Y=y_j)=\frac{1}{\sqrt{2\pi}\sigma_{ij}}exp[-\frac{(x_i-\mu_{ij})^2}{2\sigma_{ij}^2}],可以用样本均值估计期望值\mu_{ij},可以用样本方差S^2来估计方差\sigma_{ij}
- 对噪声/不相关属性具有鲁棒性
-
支持向量机
-
基本概念
- 支持向量机SVM是一种二分类模型,用于学习属性空间中的线性或非线性决策便捷来分离类
- 提供正则化能力,控制复杂度确保良好泛化性能,学习高度表达模型而不过拟合
- 仅使用最难分类的一个子集来表示决策边界(也即支持向量)
- 判别模型,只受两类边界附近的训练实例的影响,而不是学习每个类的生成分布
-
分离超平面的边缘
-
线性SVM
- 线性SVM是寻找具有最大边缘的分离超平面的分类器,因此它也经常被称为最大边缘分类器
- 令w^Tx+b=0是一个分离超平面的方程,它通过将两个类放置在超平面相反的两侧来分离这两个类\left\{ \begin{array}{ll} w^Tx_i+b>0 & y_i=+1 \\ w^Tx_i+b<0 & y_i=-1 \end{array} \right.
- 任意线x到超平面的距离D(x)=\frac{|w^Tx+b|}{||w||}
-
非线性SVM
- 需要一个非线性变换\varphi,将数据从其原始属性空间映射到一个新的空间,以便线性超平面可以分离这些类。新空间可以构建一个线性超平面。w^T\varphi(x)+b=0
-
学习模型参数
- SVM的优化问题:\min_{w,b}\frac{||w||^2}{2} \\
- s.t \space\space\space\space\space\space y_i(w^Tx_i+b)\geq1
- 拉格朗日乘子\lambda,对偶优化问题,仅受最接近SVM的决策边界的支持向量影响
- 最大边缘超平面可以表示为f(x)=(\sum_{i=1}^{n}\lambda_iy_ix_i^Tx_j)+b=0
- SVM的优化问题:\min_{w,b}\frac{||w||^2}{2} \\
-
组合方法
-
基本概念
- 组合或分类器组合:通过聚集多个分类器的预测来提高分类准确率的技术。
- 构建一组几分类器,并通过对每个基分类器的预测进行投票来分类
- 组合分类器的性能优于单个分类器必须满足两个必要条件:
- 基分类器应该相互独立
- 基分类器应该好于随机猜测分类器(\epsilon小于0.5)
- 组合或分类器组合:通过聚集多个分类器的预测来提高分类准确率的技术。
-
构建组合分类器的方法
- 基本思想:在原始数据上构建多个分类器,然后在分类未知样本时聚集它们的预测结果
- 通过处理训练数据集:抽样得到多个数据集,装袋、提升
- 通过处理输入特征:选择输入特征的子集,随机森林(决策树)
- 通过处理类标签:适合类数足够多,类标签随机划分两个子集变换为二分类问题,重新标记数据得到新的一组基分类器,统计选票,例如ECOC错误-纠错编码
- 通过处理学习算法:相同的训练数据上多次执行算法
-
装袋
- 装袋/自助聚集:根据均匀概率分布从数据集中有放回的重复抽样技术。每个自助样本集都和原始数据集一样大。
- 决策树桩:仅包含一层的二叉决策树
-
提升
- 提升是一个迭代的过程,用于自适应地改变训练样本的分布,使得基分类器聚焦那些难以分类的样本。
- 不同于装袋,提升给每个训练样本赋一个权重,而且可以在每一轮提升过程结束时自动地调整权重。可以用来抽样分布或者学习偏向于更高权重示例的模型。
- 初始时权重都相同\frac{1}{N},每一轮提升结束更新权重,增加错误样本权重,减少正确分类样本权重。
- AdaBoost算法:错误率\epsilon=\frac{1}{N}[\Sigma_jw_j\delta(C_i(x_j)\ne y_j]
- C_i是基分类器,\delta判断谓词真则为1否则为0
- w_j^{(i)}表示第i轮迭代分配的权重,更新方式w_j^{(i+1)}=\frac{w_j^{(i)}}{Z_i}\times \left\{ \begin{array}{ll} e^{-\alpha_i} & \text{if } C_i(x_j)=y_j \\ e^{\alpha_i} & \text{if } C_i(x_j)\ne y_j \end{array} \right.
- \alpha_i称为基分类器C_i的重要性,定义为\alpha_i=\frac{1}{2}ln(\frac{1-\epsilon_i}{\epsilon_i})
-
随机森林
- 随机森林试图通过构建去相关决策树组合分类器来提高泛化性能。
- 基于装袋的思想,使用不同训练数据集的自助样本来学习决策树;与装袋的关键区别在于在一小组随机选择的属性中选择划分标准
- 随机森林不仅通过操纵训练实例,还通过操纵输入属性来构建决策树的集合。
- 有放回随机抽样实例 ➡️ 随机抽样一组p个属性 ➡️ 选择一个属性
-
模型的过拟合
-
基本概念
- 模型没有很好地捕捉到数据特征,不能够很好地拟合数据,这种情况称为模型欠拟合。
- 有的模型即使能够很好地覆盖训练数据,但它仍然可能表现出较差的泛化性能,过拟合。
- 模型过拟合:在追求训练错误率最小化的过程中,选择了一种过于复杂的模型,这种模型捕捉到了训练数据中的特定模式,但没能获取到整体数据中属性和类别标签之间的本质关系
-
过拟合的原因
- 有限的训练规模:增大训练数据可以减少过拟合影响
- 高模型复杂度
-
模型评估
-
基本概念
- 模型评估:估计模型泛化性能的方法
- 正确方法:在有标签的测试集上,对学习模型的性能进行评估,测试集从未被使用
- D.train用于模型选择,D.test用于计算测试错误率err_{test}
-
留出法(Holdout)
- 多次重复,随机子采样/重复留出法
-
交叉验证(Cross-Validation)
- 随机划分,不同子集测试,最后求均值
- k折交叉验证方法:分成k相等大小的分区或子类,重复k次
- 特殊情况:留一法,每次运行只使用一个数据实例进行测试
-
超参数的使用
-
基本概念
- 超参数不会出现在最终分类模型
- 取值在模型选择期间被确定,模型评估期间也要考虑超参数
-
超参数选择
-
类不均衡问题
-
基本概念
- 倾斜/类不平衡:不同类别的实例数量不接近
- 带来两个挑战:
- 很难找到充足的稀有类别的样本
- 准确率不适合在类不平衡的测试数据中评估模型
-
类不平衡的分类器构建
- 考虑因素:
- 既能充分表示多数类,也能表示少数类(过采样、欠采样)
- 调整分类决策,匹配不平衡测试集的要求,分类模型输出转换为实数分数然后选择合适的阈值
- 平衡数据集:欠采样(降低多数类)、过采样(生成少数类SMOTE)
- 考虑因素:
-
带类不平衡的性能评估
第四章 回归
-
基本概念
-
基本定义
- 回归分析:确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法
- 作为一种预测模型,它基于观测数据建立变量间适当的依赖关系,以便分析数据间的内在规律,并应用于预测、控制等问题
-
回归类别
- 回归与分类均为有监督学习问题,其中输入x和输出y的数值是给定的,任务是学习从输入到输出的映射
- 按照问题所涉及变量的多少,可将回归分析分为一元回归分析和多元回归分析
- 按照自变量和因变量之间是否存在线性关系,分为线性回归分析和非线性回归分析
- 回归与分类均为有监督学习问题,其中输入x和输出y的数值是给定的,任务是学习从输入到输出的映射
-
线性回归
-
基本概念
- 线性回归:因变量y和一个或多个自变量x之间建立一种线性方程关系
- 线性回归是常用的建模技术之一,也通常是人们在学习预测模型时首选的技术之一
- 在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的
- 只有两个变量,一个因变量和一个自变量,且自变量与因变量之间的函数关系能够用一条直线来近似表示,那么称其为一元线性回归分析。
- 线性回归:因变量y和一个或多个自变量x之间建立一种线性方程关系
-
一元线性回归
- E(y)=\beta_0+\beta_1x
- 这个方程对应的图像时一条直线,称作回归线,其中\beta_0是回归线的截距,\beta_1是回归线的斜率,E(y)是给定x值下y的期望值(均值)
- 最小二乘法
- 出发点是使实际测量数据y_i与拟合直线上的估计值\hat{y_i}的差(残差)的平方和为最小,即min\sum(y_i-\hat{y_i})^2
- 让总的误差的平方最小的y就是真值,这是基于“如果误差是随机的,应该围绕真值上下波动”
- \beta_o=\frac { \sum x_i^2\sum y_i-\sum x_i\sum x_iy_i } { n\sum x_i^2-(\sum x_i)^2 }, \beta_1=\frac { n\sum x_iy_i-\sum x_i\sum y_i } { n\sum x_i^2-(\sum x_i)^2 }
-
多元线性回归
- 线性模型试图学得一个通过属性的线性组合来进行预测的函数,即f(X)=\beta_0+\beta_1X1+\beta_2X2+\cdots+\beta_dX_d
- \beta_1,\beta_2,\cdots,\beta_d称为偏回归系数,\beta_i的意义是当其他自变量X_j(j\ne i)都固定时,自变量X_i每变化一个单位而使因变量平均改变的数值
- 参数的最小二乘估计量为\beta=(X^TX)^{-1}X^TY
-
非线性回归
-
基本概念
- 两个现象变量之间的相关关系并非二元关系,而呈现某种非线性的曲线关系
- 对于非线性回归问题,常采用适当的变量代换,把问题转化为线性回归问题,求出线性回归模型后代回,得到非线性回归方程。
-
幂函数型
- 样本点分布在某幂函数曲线y=c_1x^{c_2}的周围,其中c_1,c_2是待定参数。
- 变量代换:令m=ln\space y,\space n=ln \space x,变换后样本点应该分布在直线m=an+b的周围,其中a=c_2,\space b=ln\space c_1
-
指数函数型
- 样本点分布在某一条指数函数曲线y=c_3e^{c_4x}的周围,其中c_3,\space c_4是待定参数
- 变量代换:令z=ln\space y,变换后样本点应该分布在直线z=ax+b的周围,其中a=c_4, \space b=ln\space c_3
-
多项式函数型
- 进行多项式回归分析,首先要确定多项式的次数,一般是根据经验和实验
- 假设确定了用一个一元k次多项式来拟合训练样本集,多项式函数表示为\hat y=\beta_0+\beta_1x+\beta_2x^2+\cdots+\beta_kx^k,令x_1=x,\space x_2=x^2,\space \dots,\space x_k=x^k,则该式可化为\hat y=\beta_0+\beta_1x+\beta_2x_2+\cdots+\beta_kx_k,后续采用类似于多元线性回归的方法求解各\beta值。
- 多项式回归的优势在于它可以拟合处各种形状的曲线。然而,随着多项式阶数的增加,模型的复杂度也会增加,可能会导致过拟合的问题。
-
逻辑回归
-
基本概念
- logistic回归:一种概率判别类型,它直接利用其属性值来估计数据实例x的概率
- logistic回归的基本思想是使用线性预测器z=w^Tx+b表示x的概率:比率值\Rightarrow \frac{P(y=1|x)}{P(y=0|x)}=e^z=e^{w^Tx +b }
- 如果w^Tx+b >0,那么x属于第1类,因为它的比率值大于1;否则,x属于第0类
- 由于P(y=0|x)+P(y=1|x)=1,可以重写\frac{P(y=1|x)}{1-P(y=1|x)}=e^z,进一步简化,将P(y=1|x)表示为z的函数P(y=1|x)=\frac{1}{1+e^{-z}}=\sigma(z)
- \sigma(\cdot )称为logistic或者S形函数
- P(y=0|x)可以表示为P(y=0|x)=1-\sigma(z)=\frac{1}{1+e^{z}}
- 如果知道了参数w和b的合适值,可以用上式来估计任何数据实例x的后验概率,并确定其类别标签
-
学习模型的参数
- 参数(w,b)是在训练过程中使用最大似然估计法来估计的:需要观察训练数据可能性,然后确定最大似然估计下的模型参数
-
logistic回归模型的特点
- logistic回归是一种用来直接计算概率的判别类型,它不做任何关于条件概率的假设。因此,它是相当通用的,可以应用于不同的应用程序。它也可以轻松地扩展到多分类,那是,它被称为多项式logistic回归。然而,它的表达能力仅限于学习线性决策边界。
- 因为每个属性都有不同的权重(参数),因此可以分析logistic回归的学习参数来理解属性和类别标签之间的关系
第五章 关联分析
-
基本概念
-
总体思路
- 关联分析:用于发现隐藏在大型数据集汇总有意义的联系
- 大型事务数据集代价高,发现的模式可能是偶然的虚假的 ➡️ 有效、评估
- 频繁项集:用出现在许多事务中的项集来表示所发现的联系
- 关联规则:表示两个项集之间的关系
- 关联分析:用于发现隐藏在大型数据集汇总有意义的联系
-
基本定义
- 二元表示:每行一个事务,每列对应一个项,项用二元变量表示(非对称二元变量)
- 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是频繁的;关联规则的强度可以用支持度/置信度度量
- 置信度度量是通过规则进行推理的可靠性,也可以估计条件概率
- 拆分支持度和置信度要求
- 关联规则挖掘任务两个主要子任务:
- 频繁项集产生:发现满足最小支持度阈值的所有项集/频繁项集(开销大)
- 规则的产生:提取所有高置信度的规则/强规则
-
频繁项集的产生
-
基本思路
- 格结构:用于枚举所有可能的项集
- 降低产生频繁项集的计算复杂度3种方法:
- 减少候选项集的数目(M):先验原理,不用计算支持度删除某些候选项集
- 减少比较次数(MN):选用更高级的数据结构来存储
- 减少事务数目(N)
-
先验原理
- 如果一个项集是频繁的,那么它的所有自己一定也是频繁的。
- 一个项集的支持度永远不会超过其子集的支持度,也称为反单调性
-
Apriori算法的频繁项集产生
- 使用基于支持度的剪枝技术,系统地控制候选项集的指数增长
- 两个重要特点:
- 逐层算法:每次遍历项集格中的一层
- 产生-测试策略:新的候选项集由前一次迭代发现的频繁项集产生然后计数,总迭代次数是频繁项集的最大长度+1
-
候选项集的产生与剪枝
- 产生:新的候选项集由前一次迭代发现的频繁项集产生
- 未遗漏则是完备的,候选项集的集合必须包含所有频繁项集的集合
- 产生不超过一次是无冗余的
- F_{k-1}\times F_{k-1}方法:两个候选项集除了最大的都一样就可以合并,完备无冗余
- 剪枝:基于支持度的剪枝技术,子集非频繁直接删除,不需要计算实际支持度
- 真子集中有任何一个是非频繁的会被立即剪枝
- 产生:新的候选项集由前一次迭代发现的频繁项集产生
-
支持度计数
- 作用:确定在候选剪枝步骤中保留下来的每个候选项集出现的频繁程度
- 枚举每个事务包含的项集,并利用其更新对应的候选项集的支持度
- 先枚举,再用Hash树(候选项集划分为不同的桶放在Hash树中)
-
规则的产生
-
基本概念
- 忽略前因或后果为空的规则,每个频繁k-项集Y最多可以产生(2^k-2)个关联规则——等于Y的非空真子集的个数
- 将项集Y划分为两个非空的子集X和Y-X,使X\rightarrow Y-X满足置信度阈值,必然满足支持度阈值因为就是频繁项集产生的。
-
基于置信度的剪枝
- 令Y是一个项集,X是Y的一个子集。如果X\rightarrow Y-X不满足置信度阈值,则形如\tilde X \rightarrow Y- \tilde X的规则也一定不满足置信度阈值,其中\tilde X是X的子集
-
Apriori算法中规则的产生
- 逐层方法产生关联规则,每层对应于规则后果中的项数
- \{acd\} \rightarrow \{b\} ,\space \{abd\} \rightarrow \{c\},可以合并为\{ad\}\rightarrow\{bc\}
-
关联模式的评估
-
基本概念
- 第一套标准:数据驱动方法定义客观兴趣度度量,用来对规则进行排序
- 第二组标准:主观论据,需要大量先验信息
-
兴趣度的客观度量
- 不依赖于领域,只需要用户设置阈值来过滤低质量的模式。
- 基于列联表中列出的频度技术来计算
-
- 兴趣因子/提升度:兴趣因子度量了模式s(A, B)的支持度与在统计独立性假设下计算出的基准支持度S_{indep}(A,B)的比值
- I(A,B)=\frac{N\times f_{11}}{f_{1+}\times f_{+1}},等于1相互独立,大于1正相关,小于1负相关
- 分析变量之间统计独立性的合适度量方法
- 相关度分析:皮尔森相关系数
- 二元变量:\phi=\frac{f_{11}f_{00}-f_{01}f_{10}}{\sqrt {f_{1+}f_{+1}f_{0+}f_{+0}}}, 0没关联,+1完全正相关,-1完全负相关
- \phi= \frac{ s(A,B)-s(A)\times s(B) }{ \sqrt{ s(A)\times (1-s(A))\times s(B)\times (1-s(B)) } }
- 用于评估变量之间统计独立性的强度
- 兴趣因子/提升度:兴趣因子度量了模式s(A, B)的支持度与在统计独立性假设下计算出的基准支持度S_{indep}(A,B)的比值
第六章 聚类分析
-
概述
-
什么是聚类分析
- 聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(称为簇)。其目标是,组内的对象是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性(同质性)越大,组间差别越大,聚类就越好。
- 分类是有监督分类,即使用由类别标签已知的对象开发的模型,对新的、无标记的对象赋予类别标签。而聚类分析被视为无监督分类。
-
聚类的不同类型
-
层次的与划分的
- 划分聚类简单地把数据对象划分成不重叠的子集(簇),使得每个数据对象恰在一个子集中。
- 层次聚类是嵌套簇的集合,组织成一棵树;除叶结点,每一个结点(簇)都是其子女(子簇)的并集,而树根是包含所有对象的簇。通常树叶是单个数据对象的单元素。
-
互斥的、重叠的与模糊的
- 互斥的:每个对象都被指派到单个簇。
- 重叠的/非互斥的:一个对象同时属于多个组(类)
- 模糊聚类:每个对象以0(绝对不属于)和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均值很难检测到“自然簇”
- 一种解决方案:找到大量的簇,小簇再进行组合
-
凝聚层次聚类
-
基本概念
- 两种产生层次聚类的基本方法:
- 凝聚的:从点作为个体簇开始,每一步合并两个最接近的簇。这需要定义簇的邻近度概念。
- 分裂的:从包含所有点的某个簇开始,每一步分裂一个簇,直到仅剩下单点簇。在这种情况下,我们需要确定每一步分裂哪个簇,以及如何分裂。
- 最常见的是凝聚层次聚类技术。
- 树状图显示簇-子簇联系和簇合并(凝聚)或分裂的次序。二维点使用嵌套簇图。
- 两种产生层次聚类的基本方法:
-
基本凝聚层次聚类算法
- 从个体点作为簇开始,相继合并两个最接近的簇,直到只剩下一个簇。
- MIN(单链)定义簇的邻近度为不同簇的两个最近的点之间的邻近度(最短边)
- MAX(全链)取不同簇中两个最远的点之间的邻近度作为簇的邻近度(最长边)
- 组平均技术:不同簇的所有点对邻近值的均值(平均边长)定义为簇的邻近度。
- 质心间距离:簇的邻近度定义为簇质心之间的邻近度。
-
DBSCAN
-
基本概念
- 基于密度的聚类寻找被低密度区域分离的高密度区域。
-
传统的密度:基于中心的方法
- 特定点指定半径(Eps)内的点的数量来估计
- 点可以分为:稠密区域内部;稠密区域边缘;稀疏区域
- 三个重要的点:核心点、边界点、噪声点
-
DBSCAN算法
- 任意两个足够靠近(相互之间的距离在Eps之内)的核心点将放在同一个簇中。同样,任何与核心点足够靠近的边界点也放到与核心点相同的簇中。如果一个边界点靠近不同簇的核心点,则可能需要解决平局问题。噪声点被丢弃。
-
时间和空间复杂度
- 基本时间复杂度是O(m\times找出Eps邻域中的点所需要的时间),m是点的个数,最坏情况下时间复杂度O(m^2)
- 低维空间(尤其二维)平均时间复杂度可以降低到O(mlogm)
- 即便对于高维数据,空间复杂度也是O(m)
-
优点和缺点
- 基于密度定义簇,所以能抗噪声,能处理任意形状和大小的簇
- 密度变化太大时候、对于高维数据难以定义密度的,会出现问题
- 计算所有点的时候开销可能很大
-
簇评估
-
概述
- 簇验证的重要任务:
- 确定数据集的聚类趋势(是否存在非随机结构)
- 确定正确的簇个数
- 不引用附加的信息,评估聚类分析结果对数据拟合的情况
- 将聚类分析结果与已知的客观结果比较
- 比较两个簇集,确定哪个更好
- 度量或指标分为三类:
- 无监督的:不考虑外部信息,内部指标,如SSE,进一步分成凝聚、分离
- 有监督的:发现的聚类结构与某种外部结构的匹配程度,外部指标
- 相对的:比较不同的聚类或簇
- 簇验证的重要任务:
-
无监督簇评估:使用凝聚度和分离度
- 簇凝聚度:衡量簇中对象的紧密关系,SSE越小聚类效果越好SSE=\sum_i\sum_{x\in C_i}(x-m_i)^2
- 簇分离度:测量簇与其他簇的区别或分离程度,SSB越高分离性越好SSB=\sum_i|C_i|(m-m_i)^2, |C_i|表示簇i的大小
-
轮廓系数
- 结合了凝聚度和分离度
- 计算过程:
- 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,与其他簇内所有点相似度为0
第七章 异常检测
-
概述
- 异常检测的目标是发现一些不符合正常规律和行为的对象。
- 异常对象被称为离群点(outlier),因为在数据的散点图中,它们的分布远离其他的数据点。
- 异常检测也称为偏差检测,因为异常对象的某些属性值明显偏离该属性的期望值或典型的属性值
- 异常检测也称为例外挖掘,因为异常在某种意义上是例外的。
- 应用场景:欺诈检测、入侵检测、医疗和公共卫生、航空安全
-
异常检测问题的特性
- 异常的定义
- 异常是指不符合正常实例分布的观测,比如与某种分布下大多数实例不相似。
- 这个定义没有假设这种分布是可以用已知统治分布术语轻易表达的。事实上,这种困难正式许多异常检测方法使用非统计学方法的原因。
- 可以按照看到一个对象的概率或某种更极端的方法来对数据对象排序。出现的概率越低,这个对象越可能是一个异常数据。
- 造成异常现象的原因有很多:噪声,对象来自不同的分布,对象仅仅是这个分布中极少出现的。
- 异常是指不符合正常实例分布的观测,比如与某种分布下大多数实例不相似。
- 数据的性质
- 输入数据的性质在决定选择合适的异常检测技术中起着重要的作用。
- 输入数据的一些共有特性包括属性的数量和类型,以及描述每个数据实例的表示方式
- 单变量或多变量
- 如果单一属性,该对象是否异常只依赖于这个对象的属性值是否是异常的
- 如果多个属性,可能某些属性上有异常的数值,其他属性表现正常
- 一个对象即使每个单独属性都不异常,整体而言也有可能是异常对象
- 记录数据或邻近度矩阵
- 表示一个数据集合最常见的方式是使用记录数据或它的变体,比如数据矩阵,在矩阵中每个数据实例都使用相同的属性进行描述。
- 一些异常检测方法适应邻近度矩阵,矩阵中的每一个数值表示两个实例间的接近程度(相似或不相似)
- 标签的可用性
- 一个数据实例的标签标明这个实例是正常的还是异常的。
- 如果有一个每个数据实例都带有标签的训练数据集,那么异常检测的问题就可以转化为监督学习(分类)问题。
- 因为异常数据非常稀少,获得异常类的类标是非常具有挑战性的
- 本质上大多数异常检测问题是无监督的
- 给定一个输入数据集,从正常实例中区分出异常实例是非常具有挑战性的
- 异常的两个主要性质
- 数量相对较少
- 正常实例占绝大多数,输入数据集作为正常类的不完美展示,指定输入数据中异常值期望数量的机制可以处理具有大量异常的数据。
- 稀疏分布
- 异常数据分布稀疏,有一些异常检测方法专门用来找聚类异常,通常假设这些异常数据的数量很小或者离其他实例的距离很远。
- 数量相对较少
- 如何使用异常检测
- 方法一:给定的输入数据中既包含正常实例又包含异常实例,我们要找到异常实例,本章所有异常检测方法都可以在这种设定中使用
- 方法二:获得识别为异常的测试实例(每次出现一个),大多数异常检测方法都能够使用输入数据集来提供测试实例的输出。
-
统计方法
-
基本概念
- 统计方法使用概率分布对正常类进行建模。
- 这些分布的一个重要特征是它们把每一个数据实例和一个概率值进行关联,表示这个实例从分布中生成的可能性有多大。
- 异常数据被认为是那些不太可能从正常类的概率分布中生成的实例。
- 有两种类型的模型可以用来表示正常类的概率分布:
- 参数模型:使用那些熟知的统计分布族,这些分布需要从数据中进行参数估计
- 非参数模型:非常灵活,直接从得到的数据中学习正常类的分布
-
使用参数模型
- 一些常用的参数模型被广泛用于描述许多类型的数据集,这些模型包括高斯分布、泊松分布和二项分布。其中涉及的参数需要从数据中学习,例如,高斯模型需要从数据中确定均值和方差这两个参数
- 参数模型能够非常有效的表示正常类的行为,尤其当知道正常类服从某个特定分布时。通过参数模型计算的异常分数具有较强的理论性质,可以用于分析异常分数并评估其统计显著性。
- 将在一元和多元环境下讨论用高斯分布对正常类进行建模
- 一元高斯分布
- 两个参数:均值\mu=\frac{1}{m}\sum_{i=1}^{m}{x_i}和标准差\sigma^2=\frac{1}{m}\sum_{i=1}^{m}{(x_i-\mu)^2}
- 概率密度函数f(x)表示为:f(x)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}
- x离分布中心越远,f(x)的值越小,因此可以使用点x到原点的的距离作为异常分数
- 这个距离值有一个概率解释,可以用来评定x是一个异常点的置信度
- 多元高斯分布
- 对于由两个或多个连续属性组成的数据集,可以使用多元高斯分布对正常类建模
- 多元高斯分布N(\mu,\Sigma)包括两个参数:均值向量\mu和协方差矩阵\Sigma,它们需要从数据中估计得到
- 点x的概率密度函数N(\mu,\Sigma)表示为f(x)=\frac{1}{(2\pi)^{n/2}|\Sigma|^{1/2}}e^{-\frac{(x-\mu)^T\Sigma^{-1}(x-\mu)}{2}}
- n是x的维数,|\Sigma|表示协方差矩阵的行列式
- 一元高斯分布
-
使用非参数模型
- 简单的对正常类建模的非参数方法是建立正常数据的直方图。
- 如果数据包含单一连续的属性,那么可以使用等宽离散技术来构造属性的不同范围的容器。
- 之后,可以检查一个新的实例是否落在了直方图的容器中。如果它没有落在任何一个容器中,则可以认为它是一个异常实例
- 否则,可以使用实例所在容器频率的倒数作为它的异常分数。这个方法称为基于频率的或基于计数的异常检测方法。
-
基于邻近度的方法
-
基本概念
- 基于邻近度的方法把那些远离其他对象的实例认定为离群点。
- 该方法依赖的假设是,正常实例是相关的并且彼此接近,而异常的实例与其他实例不同,因此与其他实例的距离相对较远。
- 因为许多基于邻近度的技术都基于距离变量,因此也称为基于距离的异常检测技术。
- 基于邻近度的方法都是无模型异常检测技术,因为它们没有构建一个明确的正常类模型用于计算异常分数。
- 它们利用每个数据的局部视角计算其异常分数
- 它们比统计方法更加通用,因为确定一个对数据集有意义的邻近度度量往往比确定其他统计分布更容易。
-
基于距离的异常分数
- 定义数据实例x的基于邻近度的异常分数的最简单方法之一是使用它到第k个最近邻的距离dist(x,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)
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)}
- 当点附近的平均密度明显高于点的密度时,它的相对密度就会很高
-
基于聚类的方法
-
概述
- 基于聚类的异常检测方法使用簇来表示正常类
- 这依赖于这样的假设:正常实例彼此接近,因此可以被分组成簇
- 异常点则为不符合正常类的簇的实例,或者出现在与正常类的簇相距很远的小簇中的实例。
- 基于聚类的方法可以分为两种类型:
- 将小簇视为异常
- 一个点如果没有很好地符合聚类将被定义为异常,通常由该点到簇心的距离来度量
-
发现异常簇
- 这种方法假定在数据中存在簇异常,其中异常以小规模的紧密组出现。
- 当异常从同一异常类中产生时,就会出现聚类异常。
- 异常类通常为小簇,因为异常在自然界中是罕见的。
- 由于异常不符合正常的模式或行为,所以异常也被期望会远离正常类的簇。
- 检测异常簇的一种基本方法是对总体数据进行聚类,并标记大小太小或与其他簇相距太远的簇。
-
发现异常实例
- 从聚类的角度看,另一种描述一个异常的方式是该实例不能被任何正常簇解释
- 一个异常检测的基本方法是,首先聚类所有数据(主要包括正常实例),然后评估每个实例属于其各自簇的程度。
- 因此,远离它们各自簇的质心的实例可以被识别为异常。
- 评估一个对象属于一个簇的程度
- 对于基于原型的簇,有几种方法来评估一个实例属于一个簇的程度。
- 一种方法是度量实例与其簇原型之间的距离,并将其视为该实例的异常分数。
- 如果这些簇的密度不同,那么我们可以构造一个异常分数,该分数可以就实例到簇中其余实例的距离而言,度量实例到簇原型的相对距离。
- 另一种可能是假设簇可以用高斯分布精确地建模,那就使用马氏距离作为度量方式M(x,y)=\sqrt{(x-y)^T\Sigma^{-1}(x-y)}
- 相对距离是该点与质心的距离跟该簇中所有点与质心的中位距离之比