数据挖掘
考试题型:
- 选择题:2 * 8 = 16
- 判断题:1 * 10 = 10
- 填空题:2 * 8 = 16
- 简答题:6 * 3 = 18
- 计算题:分类、聚类、关联分析、离群点挖掘 4 * 10 = 40
考点范围:
(1)数据预处理、分类、聚类、关联分析、离群点挖掘、以及每类方法的应用场景
(2)算法重点掌握 ID3、C4.5、CART、Bayes、KNN、k-means、一趟聚类、DBSCAN、Apriori、基于距离、密度、聚类的离群点检测方法(离群因子OF的计算方法)
1. 数据挖掘
1.1数据挖掘的定义
技术层面:数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中、人们事先不知道的、但又==潜在有用的信息==的过程。
商业层面:数据挖掘是一种新的商业信息处理技术,其主要特点是对商业业务数热进行抽取、转换、分析和其他模型化处理,从中提取==辅助商业决策==的关键性数据。
1.2 数据挖掘的任务
预测任务:根据其它属性的值,预测特定属性的值,如分类、回归、离群点检测
描述任务:寻找概括数据中潜在的联系模式,如聚类分析、关联分析
(1) 分类(Classification)分析
分类分析就是通过分析数据,为每个类别做出准确的描述或建立分析模型或挖掘出分类规则,然后用这个分类模型对其它的记录进行分类。
(2) 聚类(Clustering)分析
聚类分析技术就是找出数据集中的共性和差异,并将具有共性的对象聚合在同一类中。聚类可以帮助决定哪些组合更有意义。
(3) 关联(Association)分析
关联分析,发现事物之间的共现关系。通常是从给定的数据集中发现频鉴出现的模式知识(又称为关联规则)。关联分析广泛用于市场营销、事务分析等领域
(4) 离群点(Outlier)分析
离群点分析就是对偏离大部分数据的数据点的挖掘。比如商业欺诈行为测,网络入侵检测,金融欺诈检测等。
1.3 数据挖掘的对象
常见的数据挖掘对象有以下7大类:
- 关系型数据库(MySQL)、非关系系数据库(NoSQL);
- 数据仓库/多维度数据库(HDFS/Hive);
- 空间数据(如地图信息)
- 工程数据(如建筑、集成电路的信息)
- 文本和多媒体数据(如 文本、图像、音频、视频数据)
- 时间相关的数据(如历史数据或股票交换数据)
- 万维网(如半结构化的HTML、结构化的XML以及其他网络信息)。
1.4 知识发现主要步骤
- 数据清洗(清洗噪声、无关点)
- 数据集成(集成多数据源相关数据)
- 数据转换(将数据转换为所需格式)
- 数据挖掘(用智能方法挖掘数据模式或规律知识)
- 模式评估(用评估标准选出所需知识)
- 知识表示(将知识可视化)
1.5 产生背景
“数据过剩”、“信息爆炸”、“知识贫乏”
应用:
(1) 数据挖掘在商业领域中的应用:市场分析和管理,公司分析和风险管理,欺诈行 为检测,自动趋势预测,…
(2) 数据挖掘在计算机领域中的应用:入侵检测,垃圾邮件的过滤,互联网信息/使用 挖掘,智能回答系统…
(3) 其它领域中的应用:工业制造方面的应用,生物信息或基因的数据挖掘,…
1.6 数据挖掘与隐私防护
(1)个人隐私信息泄露风险增加。
(2)无法做到真正的个人隐私保护。
(3)无法实现用户匿名化。
(4)数据被攻击的可能性增加。
数据挖掘技术的应用能够为人们的生活提供便利、为政府的社会管理提供有效的支持、通过帮助公司更好地迎合顾客的需求来提高顾客的满意度为企业增加收益,然而数据挖掘可能被滥用而涉及隐私问题。
大数据管理、应用中如何实现数据的充分利用并且不涉及用户的隐私和安全是广 为关注的焦点。在数据采集、处理过程中,我们也应遵守法律法规,合规使用数据
2. 数据预处理
2.1 数据挖掘中的数据
-
数据挖掘中使用的数据是数据对象及其属性的集合。属性是指对象的特性。
-
不同的属性类型:
- 分类属性:
- 标称型:性别
- 序数型:好坏等级
- 数值属性:
- 区间型:日期
- 比率型:分数
属性可以划分为四种:标称、序数、区间、比例
- 分类属性:
2.2 数据预处理的意义
- 现实世界中的原始数据往往存在一定的质量问题:不完整的,有感兴趣的属性缺少属性值;含噪声的,包含错误或“孤立点”;不一致的,在命名或编码上存在差异
- 没有高质量的数据,就没有高质量的挖掘效果
- 意义和目的:提供干净、简洁、准确的数据,提高挖掘效率和准确性
2.3 数据预处理一般工作
包括:数据清理、数据集成、数据变换、数据归约、离散化及特征选择等。
- 数据清理包括填写空缺数据,平滑噪声数据,识别、删除孤立点等。
- 数据集成是集成多个数据库,数据立方体或文件。
- 数据变换是对原始数据进行规范化和特征构造。
- 数据归约是对数据集进行压缩表示及特征选择。
- 数据离散化是通过概念分层和数据离散化来归约数据。
2.3.1 抽样
用数据较小的随机样本表示大的数据集
- 数据挖掘使用抽样是因处理所有数据的费用太高、太费时间
- 有效抽样原理:使用样本与使用整个数据集的效果几乎一样
- 简单随机抽样:无放回抽样,有放回的抽样
- 分层抽样
- 应用场景:总体由不同类别的对象组成,每种类型的对象数量差别很大
- 利用聚类实现分层抽样:将数据集 D 划分成m 个不相交的类,再在聚类结果的类上进行简单随机抽样
2.3.2 噪声处理
包括:**分箱(**将数据落入箱中来平滑数据)、聚类(通过聚类监测并且去除孤立点)、回归(通过让数据适应回归函数来平滑数据)。
- 中位数的定义:设给定的N个不同值的数据集按数值升序排序,如果N是奇数,则中位数是有序集的中间值,否则中位数是中间两个值的平均值。
- 中列数:是指数据集中极大值与极小值的平均。
- 众数的定义:数据集中出现次数最多的值。
2.3.3 规范化
通过将属性数据**按比例缩放**,通过一个函数将给定属性的整个值域映射到一个新的域中,即每个旧的值都被一个新的值替代。有 3 种规范化策略。
最小一最大(min-max)规范化
Z-SCORE规范化
小数定标规范化(不用记,能看懂就行)
2.3.4 数据规约策略
数据归约:数据归约用来得到数据集的简约表示,但可以产生几乎相同的分析结果
-
数据归约策略
- 维归约:通过删除不相干的属性或维减少数据量
- 数据压缩:用数据编码变换得到原始数据的压缩。小波变换和主成分分析
- 数值归约
- 离散化和概念分层
-
规约标准
- 用于数据归约的时间不应超过或“抵消”在归约后的数据上挖掘节省的时间
- 归约得到的数据比原数据小得多,但可产生相同或几乎相同的分析结果
2.3.5 特征提取
由原始数据创建新的特征集
- 映射数据到新的空间
- 特征构造:由一个或多个原始特征共同构造新的特征
2.3.6 特征选择
从一组已知特征集合中选择最具代表性的特征子集,使其保留原有数据的大部分信息,从而提高数据处理的效率。特征选择可以用于解决维数灾难(降维) 的问题。
- 目的:去除不相关和冗余的特征,降低时间空间复杂度,提高数据泛化能力。
- 理想的特征子集:非目标特征与目标特征强相关,非目标特征之间弱相关
2.3.7 离散化和概念分层
离散化:通过将属性域划分为区间,减少给定连续属性值的个数。包括等宽离散化、等频离散化等方法
概念分层:通过使用高层的概念(比如:老年,中年,青年)来替代底层的属性值(比如:实际的年龄数据值)来规约数据,概念分层可以用树来表示,树的每一个节点都代表一个概念(比如:按地区划分世界)。
2.4 距离与相似性
2.4.1 相似性
Cosine相似度
定义两个向量的夹角余弦为相似度,即:
对文档进行聚类时通常采用余弦相似度计算相似性。
相关系数(Correlation coefficient)(能看懂)
相关系数是标准化后的对象之间的夹角余弦,它表示两个向量的线性相关程度。 具有平移不变性。
Pearson相关系数(能看懂)
2.4.2 距离
间隔数值属性
设 m 为样本空间的维数,对于任意样本对象p=[p1,p2,p3,…,pm]与q=[q1,q2,q3,…,qm]。
欧氏距离
曼哈顿距离
坎贝拉距离(能看懂)
二值属性
二值属性变量(binary variable)只有两种状态:0或1,表示属性的存在与否。一种差异计算方法就是根据二值数据计算。假设二值属性对象p和q的取值情况如下表所示:
3. 分类
3.1 概述
分类是数据挖掘中的一种主要分析手段
分类的任务是对数据集进行学习,并构造一个拥有预测功能 的分类模型,用于预测未知样本的类标号,如:
- 根据电子邮件的标题和内容检查出垃圾邮件
- 根据核磁共振的结果区分肿瘤是恶性还是良性的
- 将新闻分类金融、天气、娱乐体育等
分类和回归都有预测的功能,但是:
- 分类预测的输出为离散或标称的属性值;
- 回归预测的输出为连续的属性值;
分类与回归的例子:
- 预测未来某银行客户会流失或不流失,这是分类任务
- 预测某商场未来一年的总营业额,这是回归任务
分类的过程
- 首先将数据集划分为2部分:训练集和测试集。
- 对训练集学习,构建分类模型。
- 用建好的分类模型对测试集分类,评估该分类模型的分类准确度及其它性能。
- 使用分类准确度高的分类模型,对类标号未知的新数据进行分类。
分类算法归类
分类方法大体上有以下几类:
- 基于决策树的分类方法
- 贝叶斯分类方法
- 最近邻分类方法
- 神经网络方法
- 支持向量机等
回归则包括:
- 线性回归
- 非线性回归
- 逻辑回归等。
3.2 决策树
概述
决策树(Decision Tree)是一种树型结构,包括:决策节点、分支和叶节点三个部分。
- 决策节点对应于待分类对象的某个属性;在该属性上的不同测试结果则对应某一个分支。
- 叶节点存放某个类标号值,表示一种分类结果。
- 关键环节是如何选择 测试属性和划分样本集
决策树可以用来对未知样本进行分类,过程如下:
从决策树的根节点开始,从上往下沿着某个分支往下搜索,直到叶结点,以叶结点的类标号值,作为该未知样本所属类标号。
可以通过该决策树轻松得预测出拖欠房款的属性为:“NO”
- 可以用任何一个属性对数据集进行划分,但最后形成的 决策树会差异很大。需要寻找合适的属性选择方法。
- 属性选择是决策树算法中重要的步骤
属性选择
常见的属性选择标准包括信息增益(information gain)和 Gini系数。
- 信息增益是决策树常用的分枝准则,在树的每个结点上选择 具有最高信息增益的属性作为当前结点的划分属性
- Gini系数是一种不纯度函数,用来度量数据集的数据关于类 的纯度
3.2.1 Hunt算法
是许多决策树算法的基础,递归方式建立决策树。
信息熵
熵(entropy,也称信息熵)用来度量一个属性的信息量。
熵越小表示样本对目标属性的分布越纯,反之熵越大表示样本对目标属性分布越混乱。
例题
解答:
令weather数据集为S,其中有14个样本,目标属性 play ball有2个值{C1=yes, C2=no},14个样本的分布为:
9个样本的类标号取值为yes,5个样本的类标号取值为No。 C1=yes在所有样本S中出现的概率为9/14,C2=no在所有样本 S中出现的概率为5/14。
因此数据集S关于play ball的熵为:
信息增益
信息增益是==划分前样本数据集的熵和划分后样本数据集的熵的差值==。
- 假设划分前样本数据集为S,并用属性A来划分样本集S,则按属性A划 分S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后的样本 子集的熵:
- 按属性A划分S后的样本子集的熵定义如下:假定属性A有k个不同的 取值,从而将S划分为k个样本子集{S1 ,S2 ,…,Sk },则按属性A划分S后 的样本子集的信息熵为:
- 其中|Si |(i=1,2,…k)为样本子集Si中包含的样本数,|S|为样本集S中包含 的样本数。信息增益越大,说明使用属性A划分后的样本子集越纯, 越有利于分类。
例题
解答:
(1) 首先由前例计算得到数据集S的熵值为0.94;
(2) 属性wind有2个可能的取值{weak, strong},它将S划分为2 个子集:{S1 ,S2},S1为wind属性取值为weak的样本子集,共 有8个样本;S2为wind属性取值为strong的样本子集,共有6 个样本;下面分别计算样本子集S1和S2的熵。
- 对样本子集S1,play ball=yes的有6个样本,play ball=no 的有2个样本,则:
- 对样本子集S2,play ball=yes的有3个样本,play ball=no 的有3个样本,则:
- 利用属性wind划分S后的熵为:
- 按属性wind划分数据集S所得的信息增益值为:
3.2.2 ID3分类算法
使用信息增益(information gain)作为属性的选择标准。
首先检测所有的属性,==选择信息增益最大的属性作为决策树结点,==由该属性的不同取值建立分支;
再对各分支的子集递归调用该方法建立决策树结点的分支,直到所有子集仅包含同一个类别的数据为止。
例题
以weather数据集为例,讲解ID3的建立过程
- 数据集的构成
数据集具有属性:outlook, temperature, humidity, wind.
outlook = { sunny, overcast, rain }
temperature = {hot, mild, cool }
humidity = { high, normal }
wind = {weak, strong }
- ID3建立决策树
- 计算按照每个属性划分S的信息增益,选取信息增益最大 的属性:
-
显然,这里outlook属性具有最高信息增益值,因此将它选为根结点.
-
以outlook做为根结点,继续往下,因为outlook有3个可能值,因此对根结点建立3个分支 {sunny, overcast, rain}.
- 首先对outlook的sunny分支建立子树。
找出数据集中outlook = sunny的样本子集S outlook=sunny,然后依 次计算剩下三个属性对该样本子集S sunny划分后的信息增益
显然humidity具有最高信息增益值,因此它被选为 outlook结点下sunny分支下的决策结点
- 采用同样的方法,依次对outlook的overcast分支、rain 分支建立子树,最后得到一棵可以预测类标号未知的 样本的决策树。
从而可以通过这个决策树对类标号未知的样本进行预测:
X={rain, hot, normal, weak, ?}
总结
ID3算法的核心是在决策树各级结点上选择属性,用信息增益作为属性选择的标准,使得在每个非叶节点进行测试时能获得关于被测数据最大的类别信息,使得该属性将数据集分成子集后,系统的熵值最小。
优点
理论清晰,方法简单,学习能力较强。
缺点
(1) 算法只能处理分类属性数据,无法处理连续型数据;
(2) 算法中使用信息增益作为决策树节点属性选择的标准,由于信息增益在类别值多的属性上计算结果大于类别值少的属性上计算结果,这将导致决策树算法偏向选择具有较多分枝的属性,因而可能导致过度拟合。在极端的情况下,如果某个属性对于训练集中的每个元组都有唯一的一个值,则认为该属性是最好的,这是因为对于每个划分都只有一个元组(因此也是一类)
3.2.3 C4.5分类算法
该算法继承了ID3算法的优点,并在以下几个方面对ID3算法进行了改进:
- 能够处理连续型属性数据和离散型属性数据;
- 使用信息增益率作为决策树的属性选择标准;
概念描述
假定训练集S中,Ci在所有样本中出现的频率为 pi (i=1,2,3,…,m),则该集合S所包含的信息熵为:
设用属性A来划分S中的样本,计算属性A对集合S的 划分熵值Entropy A(S)定义如下:
- 若属性A为离散型数据,并具有k个不同的取值,则属性A依据这 k个不同取值将S划分为k个子集{S1 ,S2 ,…,Sk},属性A划分S的信 息熵为:
-
其中|Si |和|S|分别是Si和S中包含的样本个数。
-
如果属性A为连续型数据,则按属性A的取值递增排序,将每 对相邻值的中点看作可能的分裂点,对每个可能的分裂点,计 算:
- 其中SL和SR分别对应于该分裂点划分的左右两部分子集,选择 EntropyA(S)值最小的分裂点作为属性A的最佳分裂点,并以该 最佳分裂点按属性A对集合S的划分熵值作为属性A划分S的熵 值。
C4.5以信息增益率作为选择标准,不仅考虑信息增益的大小程度,还兼顾为获得信息增益所付出的“代 价” :
- C4.5通过引入属性的分裂信息来调节信息增益,分裂信息定义 为
- 信息增益率定义为
- 这样如果某个属性有较多的分类取值,则它的信息熵会偏大, 但信息增益率由于考虑了分裂信息而降低,进而消除了属性取 值数目所带来的影响。
例题
STEP1:
计算所有属性划分数据集S所得的**信息增益**分别为
STEP2:
计算各个属性的分裂信息和信息增益率
以outlook属性为例,取值为overcast的样本有4条,取值为 rain的样本有5条,取值为sunny的样本有5条:
同理依次计算其它属性的**信息增益率**分别如下:
STEP3:
取值信息增益率最大的那个属性作为分裂结点,因 此最初选择outlook属性作为决策树的根结点,产生3个分支,如下:
3.2.4 CART算法
CART算法是一种二分递归分割技术,把当前样本划分为两个子样本,使得生成的每个非叶子结点都有两个分支,
因此CART算法生成的决策树是结构简洁的二叉树。由于CART算法构成的是一个二叉树,它在每一步的决策时只能
是“是”或者“否”,即使一个feature有多个取值,也是把数据分为两部分。在CART算法中主要分为两个步骤
CART 算法使用 Gini 系数来度量对某个属性变量测试输出的两组取值的差异性。理 想的分组应该尽量使两组中样本输出变量取值的差异性总和达到最小,即“纯度”最大,也就是使两组输出变量取值的差异性下降最快,“纯度”增加最快。
Gini系数
按属性划分Gini系数
Gini系数增益
例题
先算根节点Gini系数(类似信息熵)
在计算个属性的Gini系数
最后计算Gini系数增益(类似信息增益):
用根节点Gini - 各属性比例 * 各属性Gini系数
3.3 贝叶斯
贝叶斯分类方法是一种基于统计的学习方法,是利用概率统计知识进行学习分类的方法
贝叶斯分类算法是建立在贝叶斯定理基础上的算法
预测一个数据对象属于某个类别的概率。例如:计算邮件是垃圾邮件 或合法邮件的概率,取概率大的为预测结果
假定X为类标号未知的一个数据样本,H为样本X属于类别C的一个假设
- 分类问题就是计算概率P(H|X) 的问题,即给定观察样本X下假设H成立的概率有多大。
- P(H)表示假设H的先验概率(prior probability)。
- P(X)表示样本数据X的先验概率。
- P(H|X)表示在条件X下,假设H的后验概率(posterior probability)。
- P(X|H)表示在给定假设H的前提条件下,样本X的后验 概率
举例
贝叶斯定理
重点记公式
对于样本X和假设H,根据贝叶斯定理,满足如下关系:
贝叶斯定理是在H、X的先验概率P(H)、P(X)和X的后验 概率P(X|H)已知的情况下,计算H的后验概率P(H|X)的方法。
例题
解答:
计算:
3.3.1 朴素贝叶斯
朴素贝叶斯分类算法利用贝叶斯定理来预测一个未知类 别的样本属于各个类别的可能性,选择其中可能性最大 的一个类别作为该样本的最终类别
例题
解答:
这里的X是指除了play的四种属性,分别分为x1、x2、x3、x4
这里是在play=yes条件下,所以分母是9。
将每个类别概率相乘就是总类别条件下发生概率。
总结
朴素贝叶斯分类算法的优点在于:
- 容易实现
- 在大多数情况下所获得的结果比较好。
缺点:
- 算法成立的前提是假设各属性之间互相独立。
- 当数据集满足这种独立性假设时,分类准确度较高。
- 而实际领域中,数据集可能并不完全满足独立性假设
3.4 KNN
是一 种基于实例(已有样本)进行推理的算法,通过对已有训练样本集和新进的未知样本的比较得出该新进样本的类别。它==不需要先使用训练样本进行分类器==的设计,而是直接用训练集对数据样本进行分类, 确定其类别标号。
基本思想
对于未知类标号的样本,按照欧几里得距离找出它在训练集中的k个最近邻,将未知样本赋予k最近邻中出现次数最多的 类别号
基本描述
例题
对weather数据集,利用KNN算法,测试样本X=(rain, hot, normal, weak,?)的类标号属性,其中k取3
主要是看哪个多久投出哪个
**优点:**算法思想简单,易于实现
缺点:
- 最近邻分类对每个属性指定相同权重
- 而数据集中的不同属性可能需要赋予不同的权值
- 由于K-NN存放所有的训练样本,直到有新的样本需要分类时才建立分类,因此当训练样本数量很大时该学习算法的时间复杂度为n2
3.5 评价
3.5.1 分类模型评价标准
(1) 分类准确率,即模型正确地预测新的或先前未见过的数据的类标号的能力。 一个分类模型在测试集上的准确率越高说明这个模型越好。
(2) 计算复杂度,由于在数据挖掘中的操作对象是海量的数据库,因而空间和时 间的复杂度将是非常重要的问题。
(3) 可解释性,分类结果只有可解释性好,容易理解,才能更好地用于决策支 持。
(4) 可伸缩性,一个模型是可伸缩的,是指在给定内存和磁盘空间等可用的系统 资源的前提下,算法的运行时间应当随数据库大小线性增加。
(5) 稳定性,模型不随数据的变化而过于剧烈变化。
(6) 强壮性,模型在数据集中含有噪声和空缺值的情况下,仍具有较好的正确分 类数据的能力。
(7) 成本,这涉及预测错误代价所产生的计算花费
3.5.2 评价的具体指标
测试方法
- 保持方法
是我们目前为止讨论准确率时默认的方法。
执行步骤如下:
- 把数据集分为两个相互独立的子集:训练集和测试集。 通常情况下,指定不小于三分之二的数据分配到训练集, 其余三分之一分配到测试集。
- 使用训练集来训练构建分类模型,用测试集来评估分类模型的分类效果
- 随机子抽样
步骤:
- 以无放回抽样方式从数据集D中随机抽取样本;这些样本形 成新的训练集D1,D中其余的样本形成测试集D2
- 用D1来训练分类器,用D2来评估分类准确率
- 步骤(1)(2)循环K次,K越大越好。总分类效果取每次迭代分类效果的平均值
- 交叉验证
k折交叉验证方法的一种特殊情况是令k=N(N为样本总数),这样每个检验集只有一个记录,这一方法被称为留一方法(leave-one-out)。
该方法的优点是使用尽可能多的训练记录,此外,检验集之间是互斥的, 并且有效地覆盖了整个数据集。该方法的缺点是整个过程重复N次,计算上开销很大,此外,因为每个检验集只有一个记录,性能估计度量的 方差偏高。
通常k=10,10-fold cross-validation
评价方法
- 混淆矩阵
- 精确率(Accuracy)
- 差错率(Errorate)
- 精度/查准率(Precision)
- 召回率/查全率(Recall)
- F1度量
4. 聚类
4.1 聚类概述
聚类是一种无监督的机器学习方法,即不需要标注训练集 进行训练。是将数据集划分为若干相似对象组成的多个组(group)或 簇(cluster)的过程,使得同一类中对象间的相似度最大化,不同类中对象间的相似度最小化。
目的:寻找数据中潜在的自然分组结构和感兴趣的 关系
4.1.1 类的特征
- 聚类所说的类不是事先给定的,而是根据数据的相似性 和距离来划分
- 类的数目和结构都没有事先假定
4.1.2 聚类的要求
- 可伸缩性(Scalability)
- 处理不同类型属性的能力
- 发现任意形状的聚类
- 用于决定输入参数的领域知识最小化
- 对于输入记录顺序不敏感
- 高维性
- 处理噪音和异常数据的能力
- 基于约束的聚类
- 可解释性
4.1.3 聚类的分类
- 划分方法(partitioning methods) K-means、一趟聚类
- 层次的方法(hierarchical methods) BIRCH 、CURE
- 基于密度的方法 DBSCAN、OPTICS
- 基于图的方法 Chameleon、SNN
- 基于网格的方法(grid-based methods) STING
- 基于模型的方法(model-based methods)EM、 COBWEB
- 其他聚类方法 谱聚类算法(spectral clustering)、蚁群聚类 算法等
4.2 基于划分
给定一个 n 个对象的数据集,构建数据集的k个划分,每 个划分表示一个聚类,并且k<=n。同时满足如下的要求:
- 每个类至少包含一个对象;
- 每个对象必须属于且只属于一个类。
划分式聚类算法需要预先指定类中心,通过反复迭代运算,逐步降低目标函数的误差,当目标函数值收敛时, 得到最终聚类结果.
4.2.1 K-MEANS
例题
优点: 描述容易、实现简单、快速
缺点:
- 簇的个数 k 难以确定;
- 聚类结果对初始簇中心的选择较敏感;
- 对噪音和异常数据敏感;
- 不能用于发现非凸形状的簇,或具有各种不同大小的簇。
4.2.2 一趟聚类算法
一趟聚类算法,只需扫描数据集一遍即得到结果聚类,具有近似线性时间复杂度,高效,参数选择简单,对噪声不敏感的优点; 但这一算法本质上是将数据划分为大小几乎相同的超球体,不能用于发现非凸形状的簇,或具有各种不同大小的簇。
具体步骤:
- 初始时,类集合为空,读入一个新的对象;
- 以这个对象构造一个新的类;
- 若已到数据集末尾,则转(6);否则读入新对象,利用给定的 距离定义,计算它与每个已有类间的距离,并选择最小的距离;
- 若最小距离超过给定的半径阈值r,转(2);
- 否则将该对象并入具有最小距离的类中,并更新该类的各分 类属性值的统计频度及数值属性的质心,转(3);
- 结束
(每看一个点就算一次中心簇)
优点:
1、能处理大规模数据,超过系统内存的数据,不能一次性读取,也能对其进行处理
2、高效,参数选择简单,对噪声不敏感
缺点:
1、对输入顺序敏感
2、不能用于发现非凸形状的簇,或具有各种不同大小的簇
4.3 基于层次
4.3.1 BIRCH算法(不考)
聚类特征CF是一个三维向量,汇总了对象簇的信息。给定簇中n个m 维对象或点 ,则该簇的CF定义如下:
线性和反映了聚类的重心、平方和反映了簇的直径大小
例子
4.4 基于密度
4.4.1 DBSCAN算法
一种基于高密度连通区域的聚类方法,该算法 将具有足够高密度的区域划分为类,并在具有噪声的空间数据库中**发现任意形状的类**。
它将类定义为密度相连的点的最大的集合
根据点的密度将点分为三类:
(1) 稠密区域内部的点==( 核心点 )==
(2) 稠密区域边缘上的点==( 边界点 )==
(3) 稀疏区域中的点==( 噪声点 )==
DBSACN能区分核心点、噪声点、边界点
具体描述
例题
解答:
这里Eps指定的是圈圈范围,MinPts指定的是范围内最少要有的点数
4.5 基于图
4.5.1 Chameleon算法(不考)
得出以下点与点相似度的表格:
在算法的第二阶段,基于相对互连度(RI)和相对紧密度(RC) 度量,寻找可以合并的类对
4.6 聚类算法评价
高质量的簇:簇内相似度高 和 簇间相似度低。
评估聚类结果质量的准则有两种:
- 内部质量评价准则:通过计算簇内部平均相似度、簇间平均相似度或整体相似度 来评价聚类效果。
- 外部质量评价准则:基于一个已经存在的人工分类数据集(已经知道每个对象的类 别)进行评价。 如 k-means 算法的 SSE 属于内部质量评价准则;而聚类精度为外部质量评价准 则
CH指标
5. 关联规则挖掘
5.1关联规则挖掘概述
关联规则挖掘用以发现事物间存在的关联性
寻找预测 “某些项将会随其他项的出现而出现” 的规则
Apriori 算法 是 关联规则 挖掘算法 ,
关联规则 反映了 对象之间 相互依赖关系 ,
可以通过 一个对象的行为或属性预测其它对象的行为或属性 ;
关联规则 不是因果关系 , 有可能有因果关系 , 有可能没有 ;
关联规则挖掘步骤 :
① 步骤一 : 找出 支持度 ≥ 最小支持度阈值 的 频繁项集 ;
② 步骤二 : 根据 频繁模式 生成 满足 可信度阈值 的 关联规则 ;
数据集 与 事务 ( Transaction ) 概念
数据挖掘 数据集 由 事务 构成 ;
数据集 记做 D ;
使用事务表示 数据集 , 表示为D={t1,t2,⋯,tn} ,
其中 tk , ( k = 1 , 2 , ⋯ , n ) 称为事务 ;
每个事物可以使用 唯一的标识符 表示 事务编号 ( TID ) ;
项 ( Item ) 概念
每个 事务 ( Transaction ) 由多个 项 ( Item ) 组成 ;
项 记做 i ;
表示为 t k = { i 1 , i 2 , ⋯ , i n } ;
数据集 D 是所有 项 i 的集合 是 I 集合 ;
项集 ( Item Set ) 概念
I 中的 任意子集 X , 称为 数据集 D 的 项集 ( Item Set ) ;
如果 项集 ( Item Set ) 中 项 ( Item ) 个数为 k ,
则称该 项集 ( Item Set ) 为 k 项集 ( k-itemset ) ;
频繁项集
频繁项集 : 频繁项集指的是出现次数较多的项集 ;
整个 数据集 D , 由 5 个 事务 构成 ;
数据集 : D = { t 1 , t 2 , t 3 , t 4 , t 5 }
事物 1 : t 1 = { 奶 粉 , 莴 苣 }
事物 2: t 2 = { 莴 苣 , 尿 布 , 啤 酒 , 甜 菜 }
事物 3 : t 3 = { 奶 粉 , 尿 布 , 啤 酒 , 橙 汁 }
事物 4 : t 4 = { 奶 粉 , 莴 苣 , 尿 布 , 啤 酒 }
事物 5 : t 5 = { 奶 粉 , 莴 苣 , 尿 布 , 橙 汁 }
上述 事物 集合中的元素 i 都称为项 , 奶粉,莴苣,尿布,啤酒,甜菜,橙汁 都是 项 ;
I = { 奶 粉 , 莴 苣 , 尿 布 , 啤 酒 , 甜 菜 , 橙 汁 }
项集 : 任意不相同的项组成的集合就称为项集 , 上述 6 个元素的集合有 2^6 -1个项集 ; 参考集合幂集个数
{ 奶 粉 } 是 1 项集 ;
{ 尿 布 , 啤 酒 } 是 2 项集 ;
{ 莴 苣 , 尿 布 , 啤 酒 } 是 3 项集 ;
{ 奶 粉 , 莴 苣 , 尿 布 , 啤 酒 } 是 4 项集 ;
{ 奶 粉 , 莴 苣 , 尿 布 , 啤 酒 , 甜 菜 } 是 5 项集 ;
{ 奶 粉 , 莴 苣 , 尿 布 , 啤 酒 , 甜 菜 , 橙 汁 } 是 6 项集 .
关联规则
某些项集出现在一个事务中 ,
可以推导出,另外一些 项集也出现在同一个事务中 ;
如 : 事物 2 : t 2 = { 莴 苣 , 尿 布 , 啤 酒 , 甜 菜 }
{ 啤 酒 }1 项集 出现在购买清单 事务 2中 , { 尿 布 } 1 项集 也出现在购买清单 事务 2 中 ;
所以可以推导出 { 啤酒 } -> {尿布} 等同于 { 尿布,啤酒 }
数据项支持度
支持度 表示 数据项 ( Item ) 在 事务 ( Transaction ) 中的 出现频度 ;
支持度公式 :
S u p p o r t ( X ) = c o u n t ( X ) / c o u n t ( D )
S u p p o r t ( X ) 指的是 X 项集的支持度 ;
c o u n t ( X ) 指的是 数据集 D 中含有项集 X 的事务个数 ;
c o u n t ( D ) 指的是 数据集 D 的事务总数。
关联规则支持度
关联规则 X ⇒ Y 的支持度 ,
等于 项集 X ∪ Y 的支持度 ;
公式为 :
S u p p o r t ( X ⇒ Y ) = S u p p o r t ( X ∪ Y ) = c o u n t ( X ∪ Y ) / c o u n t ( D )
c o u n t ( X ∪ Y ) 指的是 数据集 D 中含有项集 X ∪ Y的事务个数 ;
c o u n t ( D ) 指的是 数据集 D 的事务总数
置信度
关联规则 X ⇒ Y 的置信度 ,
表示 数据集 D 中包含 X 项集的事物 , 同时有多大可能性包含 Y 项集 ,
等于 项集 X ∪ Y 的支持度 与 项集 X 的支持度 比值 ;
公式为 :
c o n f i d e n c e ( X ⇒ Y ) = s u p p o r t ( X ∪ Y ) / s u p p o r t ( X )
tips:
项集
项集 X 的 支持度 s u p p o r t ( X ) , 大于等于 指定的 最小支持度阈值 minsup ,则称该 项集 X 为 频繁项集 ,又称为 频繁项目集 ;
项集 X 的 支持度 s u p p o r t ( X ) , 小于 指定的 最小支持度阈值 minsup ,则称该 项集 X 为 非频繁项集 ,又称为 非频繁项目集 ;
关联规则
- 项集 X 是 频繁项集 的前提下 , ( 项集 X 的 支持度 support ( X ) , 大于等于 指定的 最小支持度阈值 minsup ) ,置信度 confidence ( X ⇒ Y ) 大于等于 置信度最小阈值minconf ,称该 关联规则 X⇒Y 是 强关联规则 ;
- 项集 X 是 **频繁项集 的前下 , ( 项集 X 的 支持度 support(X) , 小于等于 指定的 最小支持度阈值 minsup ) ,置信度 confidence(X⇒Y) 小于 置信度最小阈值 minconf ,称该 关联规则 X⇒Y 是 弱关联规则 ;
非频繁项集超集
性质:非频繁项集 的 超集 一定是 非频繁的 ;
超集 就是 包含 该集合的集合 ;
项集 X 是 非频繁项集 , 项集 Y 是 项集 X 的超集 , 则 项集 Y 一定是 非频繁的 ;
( 说明:使用集合表示 : X ⊆ Y , X ≠ ∅ , 项集 Y 包含 项集 X , 并且 项集 X 不为空集 )
例子:
1 项集 {甜菜}
2 项集 {甜菜,啤酒}
上述 {甜菜,啤酒} 就是 {甜菜} 的 超集 ,
1 项集 { 甜 菜 } 其支持度是 0.2 , 小于最小支持度 minsup = 0.6 , 是非频繁项集
那么 { 甜菜 , 啤酒 } 也是 非频繁项集 ;
在具体算法中会使用该性质 , 用于进行 “剪枝” 操作 ;
计算支持度时 , 按照 1 项集 支持度 , 2 项集 支持度 , ⋯ 顺序进行计算 ,
如果发现 1 项集 中有 非频繁项集 , 则包含该 1 项集的 n 项集 肯定是 非频繁项集 ;
然后使用 频繁 1 项集 组合成 2 项集 , 然后再计算这些 2 项集是否是频繁项集 ;
“剪枝” 操作 减少了不必要的计算量 ;
频繁项集子集
性质:频繁项集 的 所有非空子集 , 一定是 频繁项集 ;
项集 Y 是 频繁项集 ,项集 Y 是 项集 X 的超集 ,则 项集 X 一定是 频繁的 ;
( 使用集合表示 : X ⊆ Y , X ≠ ∅ , 项集 Y 包含 项集 X , 并且 项集 X 不为空集 )
1 项集 {尿布} , {啤酒}
2 项集 {尿布,啤酒}
2 项集 {尿布,啤酒} 其支持度是 0.6 , 等于最小支持度 minsup = 0.6 , 是 频繁项集
那么 2 项集 {尿布,啤酒} 的子集是 1 项集 {尿布} , {啤酒} ,根据上述性质 , 1 项集 {尿布} , {啤酒} 都是 频繁项集 ;
任意一个 项集 的 支持度 , 都 大于等于 其 超集 支持度
5.2 Apriori算法
Apriori 算法具有一个 Apriori 性质,即先验原理来控制候选项集的指数增长。
Apriori 性质(先验原理):如果一个项集是频繁的,则它的所有子集也是频繁的, 相反:如果一个项集是非频繁的,则它的所有超集也一定是非频繁的。
原始数据集 D ,
1、1 项集 C1 , 2 项集 C2 , ⋯ , k 项集 Ck , 这些项集都是候选项集 ,
2、根据 原始数据集 D , 创造 1 项集 C1 , 然后对 C1 执行 数据集扫描函数 , 找到其中的 频繁 1 项集 L1 ,
3、根据 频繁 1 项集 L1 , 创造 2 项集 C2 , 然后对 C2 执行 数据集扫描函数 , 找到其中的 频繁 2 项集 L2 ,
4、根据 频繁 k−1 项集 Lk−1 , 创造 k 项集 Ck , 然后对 Ck 执行 数据集扫描函数 , 找到其中的 频繁 k 项集 Lk ,
具体例子
事物编号 | 事物 |
---|---|
001 | 奶粉,莴苣 |
002 | 莴苣,尿布,啤酒,甜菜 |
003 | 奶粉,尿布,啤酒,橙汁 |
004 | 奶粉,莴苣,尿布,啤酒 |
005 | 奶粉,莴苣,尿布,橙汁 |
最小支持度阈值为 minsup = 0
根据 原始数据集 D , 创造 1 项集 C1 , 然后对 C1 执行 数据集扫描函数 , 找到其中的 频繁 1 项集 L1
C1 1项集
item | sup |
---|---|
{奶粉} | 0.8 |
{莴苣} | 0.8 |
{尿布} | 0.8 |
{啤酒} | 0.6 |
{甜菜} | 0.2 |
{橙汁} | 0.4 |
所以 L1 频繁 1 项集如下:
item | sup |
---|---|
{奶粉} | 0.8 |
{莴苣} | 0.8 |
{尿布} | 0.8 |
{啤酒} | 0.6 |
根据 频繁 1 项集 L1 , 创造 2 项集 C2 , 然后对 C2 执行 数据集扫描函数 , 找到其中的 频繁 2 项集 L2
C2 2 项集
Item | Sup |
---|---|
{奶粉,莴苣} | 0.6 |
{奶粉,尿布} | 0.6 |
{奶粉,啤酒} | 0.4 |
{莴苣,尿布} | 0.6 |
{莴苣,啤酒} | 0.4 |
{尿布,啤酒} | 0.6 |
所以 L2 频繁 2 项集
Item | Sup |
---|---|
{奶粉,莴苣} | 0.6 |
{奶粉,尿布} | 0.6 |
{莴苣,尿布} | 0.6 |
{尿布,啤酒} | 0.6 |
根据 频繁 2 项集 L2 , 创造 3 项集 C3 , 然后对 C3 执行 数据集扫描函数 , 找到其中的 频繁 3 项集 L3
C3 3 项集
Item | Sup |
---|---|
{奶粉,莴苣,尿布} | 0.4 |
{奶粉,莴苣,啤酒} | 0.2 |
{奶粉,尿布,啤酒} | 0.2 |
{啤酒,莴苣,尿布} | 0.4 |
所以 3 项集中没有频繁项集 ;
算法结束,频繁集为
Item | Sup |
---|---|
{奶粉,莴苣} | 0.6 |
{奶粉,尿布} | 0.6 |
{莴苣,尿布} | 0.6 |
{尿布,啤酒} | 0.6 |
假定频繁集为{尿布,啤酒} ,则非空真子集为{尿布},{啤酒}
关联规则则为:{尿布}=>{啤酒}
计算置信度,若大于最小置信度,则输出规则。
挖掘关联规则
给定k个项,一共 有2 k -1个项集(指数级增长)
书P155
- 这里L2变C3,少了{Cola、Diaper、Ham}{Cola、Beer、Ham},是因为Apriori性质,频繁项集的所有子集都必须是频繁的,但是这里{Diaper、Ham}{Beer、Ham}不是,所以不可能是频繁项集,所以不用再继续求解。
- 对于频繁2项集,如果第一项相同,则合并组合生成候选3项集
强关联规则
大于最小支持度阈值和最小置信度阈值的关联规则称为强关联规则。
算置信度和支持度即可
若题目这里给出最小支持度阈值和最小置信度阈值,若s和c都大于给出数值,则Diaper->Beer为强关联规则
->这里的剪头不是指因果关系,而是指共存关系
5.3 关联规则评估
关联规则的评估通常有 2 种方式:
- 一种通过统计论据来评估, 支持度、置信度、 提升度;
- 另一种通过主观论据来评估。
统计论据评估:
- 支持度:反映了关联规则是否具有普遍性。支持度高说明这条规则可能适用于数 据集中的大部分事务。
- 置信度:反映了关联规则的可靠性。置信度高说明如果满足了关联规则的前件, 同时满足后件的可能性也非常大。
- 存在问题:支持度过高会导致一些潜在的有价值的关联规则被删去,置信度有时 也不能正确反映前件和后件之间的关联。
- 提升度:反映规则前后件的相关性,若提升度小于 1 表示前后件存在负相关关 系,否则正相关。
主观评价:
- 可视化:领域专家解释和检验被发现的模式,与数据挖掘系统交互。
- 基于模板的方法:允许用户限制挖掘算法提取的模式类型,只把满足用户指定的模板的规则提供给用户,而不是报告提取所有模式。
- 主观兴趣度度量:通过主观度量如概念分层,商品利润等,使用这些度量来过滤那些没有价值的模式
6. 离群点挖掘
离群点挖掘问题由两个子问题构成:
- 定义在一个数据集中什么数据是离群的数据
- 找出所定义的离群点的有效挖掘方法
离群点挖掘问题可以概括为:
- 如何度量数据偏离的程度
- 如何有效发现离群点
- 离群点与众不同,具有相对性
- 通过离群因子
- 离群点的数量
6.1 离群点含义
离群点是在数据集中**偏离大部分数据的数据**,使人怀疑这些数据的偏离并非由随机因素产生。离群点是与数据集中其余部分不服从相同统计模型的数据。
许多数据挖掘研究,集中于发现适用于大部分数据的常规模式;在许多应用领域中,离群点通常作为噪音而忽略, 许多数据挖掘算法试图降低或消除离群点的影响
而在有些应用领域,识别离群点是许多工作的基础和前提; 如在欺诈检测中,离群点可能意味欺诈行为的发生,在入侵检测中离群点可能意味入侵行为的发生。
- 电信、保险、银行中的欺诈检测与风险分析
- 医学研究中发现医疗方案或药品所产生的异常反应
- 灾害气象预报
- 税务局分析交所得税的记录,发现异常模型和趋势
- 海关报关中的价格隐瞒
- 营销定制:分析花费较小和较高顾客的消费行为
- 计算机中的入侵检测
- …
6.2 离群点产生
- 原因:
- 测量、输入错误或系统运行错误所致
- 数据内在特性所决定
- 客体的异常行为所致
由于离群点产生的机制是不确定的,离群点挖掘算法检测出的**“离群点”是否真正对应实际的异常行为**,不是由离群点挖掘算法来解释,只能由领域专家来解释;离群点挖掘算法只能为用户提供可疑的数据,以便用户引起特别的注意,并最后确定是否真正的异常
6.3 离群点的分类
- 基于统计的方法
- 基于距离的方法
- 基于密度的方法
- 基于聚类的方法
- 基于偏差的方法
- 基于深度的方法
- 基于小波变换的方法
- 基于神经网络的方法
- …
6.4 基于统计的离群点检测
(不考应该)
假定数据油某个正态分布产生,由输入来学习正态分布的参数( μ,σ )(最大似然估计),通过假设检验的方法,一般认定如果某点距离估计的分布均值超过3 σ ,就被认为是离群点。
优点:
- 离群点检测的统计学方法具有坚实的基础,建立在标准的统计学技术(如分布参数的估计)之上
- 当存在充分的数据和且数据分布已知时,这些检验非常有效
缺点:
- 大部分基于统计的离散点检测方法是针对单个属性的,对于多元数据技术方法较少
- 在许多情况下, 数据分布是未知的
- 这类方法不适合混合类型数据
6.5 基于距离的离群点检测
如果一个对象离大部分其它对象,那么它是离群的
6.5.1基于距离的K近邻算法
一个对象的离群点得分由到它的k-最近邻的距离给定
**离群因子:**基于当前点到其k-最近邻邻域范围内的所有点的距离的平均值来定义。离群因子越大,越可能是离群点。
这里N(x,k)是不包含x的k-最近邻的集合
可能存在有k个点距离相同的情况。
比如前k=2,但是最近的3个点的距离是3,8,8
则OF1=(3+8+8)/ 3
坐标差的平方和开根(欧氏距离)
相加除以点数即得离群点得分
评价
优点:
基于距离的离群点检测方案简单
缺点:
- 检测结果对参数k的选择较敏感
- 时间复杂度为 ,难以用于大规模数据集,这里 n为数据集的规模
- 因其使用全局阈值,不能处理不同密度区域的数据集
6.6 基于密度的离群点检测
当数据集含有多种分布或数据集由不同密度子集混合而成时,使用每个对象到第k个最近邻的距离大小来度量密度
基于相对密度的离群点检测方法,通过比较对象的密度 与它的邻域中的对象平均密度来检测离群点
类内靠近核心点的对象的相对密度接近于1,而处于类的 边缘或是类的外面的对象的密度相对较大;定义相对密 度为离群因子
例题
邻域密度:(距离相加除以点数)的倒数
相对密度:(邻域点的邻域密度相加 除以点数 / 根节点邻域密度) 的倒数
离群因子OF2:相对密度
6.7 基于聚类的离群点检测
物以类聚,相似的对象聚合在一起。
特点:
-
先采用特殊的聚类算法处理输入数据而得到聚类再在聚类的基础上来检测离群点
-
只需要扫描数据集若干次,效率较高,适用于大规模数据集。
6.7.1 基于对象离群因子的方法(TOD)
(簇点数/总点数)* 根号下 点与簇心距离的平方和
平均方差:(每个值减去平均值)平方后相加,再除以值的个数
标准差:平均方差开根
6.7.2 基于类的离群因子的方法(CBOD)
通常情况下,相似对象或相同类型的对象会聚集在一起, 或者说正常数据与离群数据会聚集在不同的类中 ,离群数据会偏离大部分数据
两个阶段组成
第一阶段是利用聚类算法对数据集进行聚类
第二阶段是计算每个类的离群因子,并按离群因子对类进行 排序,最终确定离群类,也即确定离群对象
说
6.7.3 基于聚类的动态数据离群点检查
基本思想
在对训练集聚类的基础上,将类按照离群因子进行排序 ,并按一定比例将类标识为”normal”或”outlier”,以 标识的类作为分类模型,计算待判别点与分类模型中最 接近类的距离,判断它是否离群点
模型建立
应用判别
模型更新
6.8 离群点检测评估
可以通过下表所示混淆矩阵来描述离群点挖掘方法的检测性能。在离群点检测问题中,并不关注预测正确的normal类对象,重点关注的是正确预测的outlier类对象
-
检测率(Detection rate)表示被正确检测的离群点记录数占整个离群点记录数的比例;
-
误报率(False positive rate)表示正常记录被检测为离群点记录数占整个正常记录数的比例。
期望离群点挖掘方法对离群数据有高的检测率,对正常数据有低的误报率,但两个指标之间会有一些冲突高的检测率常常会导致高的误报率。也可以采用ROC曲线来显示检测率和误报率之间关系。