数据挖掘
第一章 数据挖掘概述
1、数据挖掘的定义
数据挖掘就是从大量数据中,提取潜在有用的信息和知识的过程
2、数据挖掘和传统数据分析方法的区别
数据挖掘是在没有明确假设的前提下去挖掘信息、发现知识。
数据挖掘所得到的信息应具有先前未知、有效和实用三个特征。其主要目标就是提高决策能力,能在过去的经验基础上预言未来趋势等
3、数据挖掘对象
关系数据库、数据仓库、事务数据库、空间数据库、时态数据库等
4、数据挖掘任务
1)两个任务
预测任务 | 描述任务 |
---|---|
根据其它属性的值预测特定属性的值,如分类、回归、离群点检测 | 寻找概括数据中潜在联系的模式,如聚类分析、关联分析等 |
2)聚类和分类的区别
分类分析 | 聚类分析 |
---|---|
通过分析示例数据库中的数据为每个类别做出准确的描述或建立分析模型或挖掘出分类规则,然后用此分类规则对其它数据库中的记录进行分类。 | 试图找出数据集中的共性和差异,并将具有共性的对象聚合在相应的类中。聚类可以帮助决定哪些组合更有意义 |
聚类与分类是容易混淆的两个概念,聚类是一种无指导的观察式学习,没有预先定义的类。而分类问题是有指导的示例式学习,预先定义有类。分类是训练样本包含有分类属性值,而聚类则是在训练样本中找到这些分类属性值。
3)其他分析方法
- 回归分析
回归分析是确定两种或两种以上变数间相互依赖的定量关系的一种分析方法。 - 关联分析
关联分析,发现特征之间的相互依赖关系,通常是从给定的数据集中发现频繁出现的模式知识(又称为关联规则)。 - 离群点检测
离群点检测就是发现与众不同的数据。
第二章 数据处理
1、数据统计特性
1)数据中心度量:平均值、加权算术平均值、截断均值。
截断均值:指定0和100间的百分位数p,丢弃高端和低端(p/2)%的数据,然后用常规方法计算均值,所得的结果即是截断均值。
中位数是p=100%时的截断均值,而标准均值是对应于p=0%的截断均值。
2)数据散布程度度量:极差、方差、标准差
2、数据预处理
数据清理:填写空缺数据,平滑噪声数据,识别、删除孤立点,解决不一致性。清洗数据
数据集成: 集成多个数据库,数据立方体或文件。合并数据
数据变换:规范化和特征构造。归一化
数据归约:得到数据集的压缩表示及特征选择。降维
数据离散化:通过概念分层和数据离散化来规约数据,对数值数据特别重要。 还是降维
1)数据清理常用的方法
-
忽略元组:即把缺失太多的对象(行)直接删了
-
忽略列属性:如果该列确实太多把列删了
-
人工填写:人自己看着填
-
自动填充:填充众数、中位数、平均数等;填充一样的值;用可能值来填
-
噪声的平滑:噪声是测量变量的随机错误或偏差。噪声是测量误差的随机部分,包含错误或孤立点值。平滑噪声的方法有分箱、回归和聚类
2)数据变换规范化的方法 -
最大最小规范化
-
Z-score规范化
-
小数定标规范化
3、相似性度量
1)对象相似性度量
2)属性相似性度量
-
连续属性的线性相关系数,值在[-1,1]之间,越接近0越不相关。
-
余弦相似性:
4、数据对象之间的相异度(距离)
- 闵可夫斯基(Minkowski )距离
5、二值属性的相似性度量
例题
第三章 分类
1、分类的任务
分类的任务是对数据集进行学习并构造一个拥有预测功能的分类模型,用于预测未知样本的类标号
2、分类与回归和聚类的区别
1)分类与回归的区别:都有预测的功能,但是分类输出的是离散的属性,而回归预测的是连续的属性值。
2)分类与聚类的区别:分类是有监督的学习方法,而聚类没有事先使用任何类标号信息,是无监督的学习方法。
3、决策树
决策树(Decision Tree)是一种树型结构,包括:决策节点(内部节点)、分支和叶节点三个部分。构建决策树的方法有ID3、C4.5和CART等
3.1 ID3分类算法
它使用信息增益(information gain)作为属性的选择标准。首先检测所有的属性,选择信息增益最大的属性产生决策树结点,由该属性的不同取值建立分支,再对各分支的子集递归调用该方法建立决策树结点的分支,直到所有子集仅包含同一个类别的数据为止。最后得到一棵决策树,它可以用来对新的样本进行分类。
1)信息熵:熵(entropy,也称信息熵)用来度量一个属性的信息量,熵越小表示样本对目标属性的分布越纯,反之熵越大表示样本对目标属性分布越混乱。
其中p是目标属性在样本集中出现的概率。当概率p为1时,E(s) = 0,熵最小;当所有属性的概率一样为m时,E(s) = log2m,熵最大。
2)信息增益: 信息增益是划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
假设划分前样本数据集为S,并用属性A来划分样本集S,则按属性A划分S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后的样本子集的熵:
按属性A划分S后的样本子集的熵定义如下:假定属性A有k个不同的取值,从而将S划分为k个样本子集{S1,S2,…,Sk},则按属性A划分S后的样本子集的信息熵为:
信息增益越大,说明划分S后的样本子集的熵要更小,越有利于分类。
例题
以数据集weather为例,设该数据集为S,假定用属性wind来划分S,求S对属性wind的信息增益(分类属性为play ball)。
解答
首先计算熵,样本总数14,5个不playball,9个play ball,因此信息熵是:
E
n
t
r
o
p
y
(
S
)
=
−
5
14
log
2
5
14
−
9
14
log
2
9
14
Entropy(S)=-\frac{5}{14}\log_{2}{\frac{5}{14}}-\frac{9}{14}\log_{2}{\frac{9}{14} }
Entropy(S)=−145log2145−149log2149
然后按照wind划分子集,列个表先:
wind | No | Yes |
---|---|---|
weak | 2 | 6 |
strong | 3 | 3 |
进而可以计算weak子集和strong子集的Entropy
E
n
t
r
o
p
y
(
S
1
)
=
−
2
8
log
2
2
8
−
6
8
log
2
6
8
Entropy(S_{1})=-\frac{2}{8}\log_{2}{\frac{2}{8} }-\frac{6}{8}\log_{2}{\frac{6}{8} }
Entropy(S1)=−82log282−86log286
E
n
t
r
o
p
y
(
S
2
)
=
−
3
6
log
2
3
6
−
3
6
log
2
3
6
Entropy(S_{2})=-\frac{3}{6}\log_{2}{\frac{3}{6} }-\frac{3}{6}\log_{2}{\frac{3}{6} }
Entropy(S2)=−63log263−63log263
进而可以计算EntropyA(s)
E
n
t
r
o
p
y
A
(
S
)
=
8
14
E
n
t
r
o
p
y
(
S
1
)
+
6
14
E
n
t
r
o
p
y
(
S
2
)
Entropy_{A}(S) = \frac{8}{14}Entropy(S_{}1) + \frac{6}{14}Entropy(S_{2})
EntropyA(S)=148Entropy(S1)+146Entropy(S2)
最后计算信息增益Gain
G
a
i
n
(
S
,
w
i
n
d
)
=
E
n
t
r
o
p
y
(
S
)
−
E
n
t
r
o
p
y
A
(
S
)
Gain(S,wind) = Entropy(S)-Entropy_{A}(S)
Gain(S,wind)=Entropy(S)−EntropyA(S)
使用ID3方法建立决策树的过程就是如上所示,计算所有的属性的信息增益,然后选择最大信息增益的属性的值作为属性的子树对应的边,然后得到在新的子集里不断使用ID3方法。
3.2 C4.5算法
C4.5算法使用信息增益率作为决策树的属性选择标准,能够处理连续数值属性和离散数值属性,还能处理具有缺失值的数据。它是ID3算法的改进版。同样要计算信息熵,划分子集后的信息熵也是如ID3一样的做法。C4.5以信息增益率作为选择标准,不仅考虑信息增益的大小程度,还兼顾为获得信息增益所付出的“代价”
C4.5通过引入属性的分裂信息来调节信息增益,分裂信息定义为
信息增益率定义为
这样如果某个属性有较多的分类取值,则它的信息熵会偏大,但信息增益率由于考虑了分裂信息而降低,进而消除了属性取值数目所带来的影响。
例题
以weather数据集为例,演示C4.5算法对该数据集进行训练,建立一棵决策树的过程,对未知样本进行预测。
解答
以outlook属性为例,如在ID3中一般,首先计算信息熵为
E
n
t
r
o
p
y
(
S
)
=
0.91
Entropy(S) = 0.91
Entropy(S)=0.91
然后用ID3的方法计算按照所有属性计算的信息增益
G
a
i
n
(
S
,
o
u
t
l
o
o
k
)
=
0.246
Gain(S,outlook) = 0.246
Gain(S,outlook)=0.246
然后按照outlook属性的值计算分裂信息,overcast有4个,rain有5个,sunny有5个,则分裂信息
s
p
l
i
t
(
S
,
o
u
t
l
o
o
k
)
=
−
4
14
l
o
g
2
4
14
−
5
14
l
o
g
2
5
14
−
5
14
l
o
g
2
5
14
=
1.576
split(S,outlook) = -\frac{4}{14}log_{2}{\frac{4}{14}} -\frac{5}{14}log_{2}{\frac{5}{14}}-\frac{5}{14}log_{2}{\frac{5}{14}} = 1.576
split(S,outlook)=−144log2144−145log2145−145log2145=1.576
进而计算信息熵增益率
G
a
i
n
R
a
t
i
o
E
n
t
r
o
p
y
=
G
a
i
n
(
S
,
l
o
o
k
)
s
p
l
i
t
(
S
,
o
u
t
l
o
o
k
)
GainRatio_{Entropy} = \frac{Gain(S,look)}{split(S,outlook)}
GainRatioEntropy=split(S,outlook)Gain(S,look)
计算所有的属性的信息熵增益率,选择信息增益率最大的属性作为其子树。
3.3 CART算法
CART决策树采用的是二元递归划分方法,能够处理连续属性数据和标称属性作为预测变量和目标变量下的分类,当输出变量是标称属性数据时,所建立决策树称为分类树(classificationtree),用于分类的预测。当输出变量为数值型变
量时,所建立的决策树称为回归树(regression tree),用于数值的预测。建立的是一棵二叉树。
Gini系数
G
i
n
i
(
S
)
=
1
−
∑
i
=
1
k
p
2
(
i
∣
t
)
Gini(S) = 1-\sum_{i=1}^{k}p^{2}(i|t)
Gini(S)=1−i=1∑kp2(i∣t)
差异性损失
Δ
G
(
ξ
,
t
)
=
G
(
t
)
−
∣
S
R
∣
∣
S
L
∣
+
∣
S
R
∣
G
(
t
R
)
−
∣
S
L
∣
∣
S
L
∣
+
∣
S
R
∣
G
(
t
L
)
\Delta G(\xi, t)=G(t)-\frac{\left|S_{R}\right|}{\left|S_{L}\right|+\left|S_{R}\right|} G\left(t_{R}\right)-\frac{\left|S_{L}\right|}{\left|S_{L}\right|+\left|S_{R}\right|} G\left(t_{L}\right)
ΔG(ξ,t)=G(t)−∣SL∣+∣SR∣∣SR∣G(tR)−∣SL∣+∣SR∣∣SL∣G(tL)
直接例题
以拖欠贷款数据集为例,演示CART算法对该数据集进行训练,建立一棵决策树的过程,对未知样本进行预测。
==解答 ==
首先计算根节点的Gini系数,就是预测属性值。样本总数是10,No是7,Yes是3。
G
i
n
i
(
S
)
=
1
−
(
7
10
)
2
−
(
3
10
)
2
=
0.42
Gini(S) = 1-(\frac{7}{10})^2-(\frac{3}{10})^2 = 0.42
Gini(S)=1−(107)2−(103)2=0.42
然后就打表,假如按照是否有房来划分
是否有房 | 拖欠No | 拖欠Yes |
---|---|---|
Yes | 3 | 0 |
No | 4 | 3 |
计算是否有房Yes和是否有房No的Gini
G
i
n
i
(
S
,
房
Y
e
s
)
=
1
−
(
3
3
)
2
−
(
3
0
)
2
=
0
Gini(S,房Yes)=1-(\frac{3}{3})^2 - (\frac{3}{0})^2 = 0
Gini(S,房Yes)=1−(33)2−(03)2=0
G
i
n
i
(
S
,
房
N
o
)
=
1
−
(
4
7
)
2
−
(
3
7
)
2
=
0.4898
Gini(S,房No)=1-(\frac{4}{7})^2 - (\frac{3}{7})^2 = 0.4898
Gini(S,房No)=1−(74)2−(73)2=0.4898
进而计算差异性损失
Δ
(
是否有房
)
=
0.42
−
3
10
×
0
−
7
10
×
0.4898
=
0.0772
\Delta(是否有房) = 0.42-\frac{3}{10}\times 0-\frac{7}{10}\times0.4898 = 0.0772
Δ(是否有房)=0.42−103×0−107×0.4898=0.0772
假如以婚姻状态来计算只能是二叉树,因此如果值是离散的有三种四种要分类。假如分成{Single}{Married,Divorced},还是打表
婚姻状态 | 拖欠No | 拖欠Yes |
---|---|---|
{Single} | 2 | 2 |
{Married,Divorced} | 5 | 1 |
计算GIni
G
i
n
i
(
S
,
s
i
n
g
l
e
)
=
1
−
(
2
4
)
2
−
(
2
4
)
2
=
0.5
Gini(S,single)=1-(\frac{2}{4})^2 - (\frac{2}{4})^2 = 0.5
Gini(S,single)=1−(42)2−(42)2=0.5
G
i
n
i
(
S
,
M
+
D
)
=
1
−
(
5
6
)
2
−
(
1
6
)
2
=
0.2778
Gini(S,M+D)=1-(\frac{5}{6})^2 - (\frac{1}{6})^2 =0.2778
Gini(S,M+D)=1−(65)2−(61)2=0.2778
计算差异性损失
Δ
(
婚姻状态
)
=
0.42
−
4
10
×
0.5
−
6
10
×
0.2778
=
0.0772
=
0.0533
\Delta(婚姻状态) = 0.42-\frac{4}{10}\times 0.5-\frac{6}{10}\times0.2778 = 0.0772 =0.0533
Δ(婚姻状态)=0.42−104×0.5−106×0.2778=0.0772=0.0533
其他类似。然后选择差异性损失最大的。
4、朴素贝叶斯分类算法
贝叶斯分类方法是一种基于统计的学习方法。
朴素贝叶斯分类算法的概念描述如下:
1)假定朴素贝叶斯分类器将未知样本X分配给类Ci,则:
P
(
C
i
∣
X
)
>
P
(
C
j
∣
X
)
1
≤
j
≤
m
,
j
≠
i
\begin{array}{l} P\left(C_{i} \mid X\right)>P\left(C_{j} \mid X\right) \\ 1 \leq j \leq m, j \neq i \end{array}
P(Ci∣X)>P(Cj∣X)1≤j≤m,j=i
根据贝叶斯定理:
P
(
C
i
∣
X
)
=
P
(
X
∣
C
i
)
P
(
C
i
)
P
(
X
)
P\left(C_{i} \mid X\right)=\frac{P\left(X \mid C_{i}\right) P\left(C_{i}\right)}{P(X)}
P(Ci∣X)=P(X)P(X∣Ci)P(Ci)
由于P(X)对所有类为常数,最大化后验概率P(Ci|X)可转化为最大化先验概率P(X|Ci)P(Ci).类的先验概率P(Ci)可以用si/s来估计,其中si是数据集D中属于类Ci的样本个数,s是数据集D的样本总数.
P
(
X
∣
C
i
)
=
P
(
x
1
,
x
2
,
…
,
x
n
∣
C
i
)
=
∏
k
=
1
n
P
(
x
k
∣
C
i
)
P\left(X \mid C_{i}\right)=P\left(x_{1}, x_{2}, \ldots, x_{n} \mid C_{i}\right)=\prod_{k=1}^{n} P\left(x_{k} \mid C_{i}\right)
P(X∣Ci)=P(x1,x2,…,xn∣Ci)=k=1∏nP(xk∣Ci)
从数据集中求概率
P
(
X
∣
C
i
)
=
P
(
x
1
,
x
2
,
…
,
x
n
∣
C
i
)
=
∏
k
=
1
n
P
(
x
k
∣
C
i
)
P
(
x
1
∣
C
i
)
×
P
(
x
2
∣
C
i
)
×
⋯
×
P
(
x
n
∣
C
i
)
P\left(X \mid C_{i}\right)=P\left(x_{1}, x_{2}, \ldots, x_{n} \mid C_{i}\right)=\prod_{k=1}^{n} P\left(x_{k} \mid C_{i}\right)P\left(x_{1} \mid C_{i}\right) \times P\left(x_{2} \mid C_{i}\right) \times \cdots \times P\left(x_{n} \mid C_{i}\right)
P(X∣Ci)=P(x1,x2,…,xn∣Ci)=k=1∏nP(xk∣Ci)P(x1∣Ci)×P(x2∣Ci)×⋯×P(xn∣Ci)
为对未知样本X分类,对每个类Ci,计算P(X|Ci),样本X被指派到类别Ci中,当且仅当
P
(
X
∣
C
i
)
=
P
(
x
1
,
x
2
,
…
,
x
n
∣
C
i
)
=
∏
k
=
1
n
P
(
x
k
∣
C
i
)
P
(
x
1
∣
C
i
)
×
P
(
x
2
∣
C
i
)
×
⋯
×
P
(
x
n
∣
C
i
)
P
(
X
∣
C
i
)
P
(
C
i
)
>
P
(
X
∣
C
j
)
P
(
C
j
)
P\left(X \mid C_{i}\right)=P\left(x_{1}, x_{2}, \ldots, x_{n} \mid C_{i}\right)=\prod_{k=1}^{n} P\left(x_{k} \mid C_{i}\right)P\left(x_{1} \mid C_{i}\right) \times P\left(x_{2} \mid C_{i}\right) \times \cdots \times P\left(x_{n} \mid C_{i}\right)P\left(X \mid C_{i}\right) P\left(C_{i}\right)>P\left(X \mid C_{j}\right) P\left(C_{j}\right)
P(X∣Ci)=P(x1,x2,…,xn∣Ci)=k=1∏nP(xk∣Ci)P(x1∣Ci)×P(x2∣Ci)×⋯×P(xn∣Ci)P(X∣Ci)P(Ci)>P(X∣Cj)P(Cj)
例题
对 weather 数 据 集 使 用 朴 素 贝 叶 斯 算 法 预 测 未 知 样 本X={rain,hot,normal,false,?}的play ball类标号属性的值。
设playball = yes是事件y1,playball = no是事件y2
则要求P(y1|X)和P(y2|x),根据x条件确定playball是yes和no的概率。
根据贝叶斯定理
P
(
y
1
∣
X
)
=
P
(
X
∣
y
1
)
×
P
(
y
1
)
P
(
X
)
P(y1|X) = \frac{P(X|y1)\times P(y1)}{P(X)}
P(y1∣X)=P(X)P(X∣y1)×P(y1)
P
(
y
2
∣
X
)
=
P
(
X
∣
y
2
)
×
P
(
y
2
)
P
(
X
)
P(y2|X) = \frac{P(X|y2)\times P(y2)}{P(X)}
P(y2∣X)=P(X)P(X∣y2)×P(y2)
要求先验概率,就是求样本中每个属性对应样本的概率。对playball = yes来说,有 9个样本,其中rain有3,hot有2,normal有6,weak有6
P
(
X
∣
y
1
)
=
3
9
×
2
9
×
6
9
×
6
9
P(X|y1)=\frac{3}{9}\times\frac{2}{9}\times\frac{6}{9}\times\frac{6}{9}
P(X∣y1)=93×92×96×96
P
(
y
1
)
=
9
14
P(y1) = \frac{9}{14}
P(y1)=149
故
P
(
y
1
∣
X
)
=
3
9
×
2
9
×
6
9
×
6
9
×
9
14
P
(
X
)
P(y1|X) = \frac{\frac{3}{9}\times\frac{2}{9}\times\frac{6}{9}\times\frac{6}{9}\times\frac{9}{14}}{P(X)}
P(y1∣X)=P(X)93×92×96×96×149
同样的可以计算,对play ball= no来说,有5个样本。其中rain有2,hot有2,normal有1,weak有2,则
P
(
y
2
∣
X
)
=
2
5
×
2
5
×
1
5
×
2
5
×
5
14
P
(
X
)
P(y2|X) = \frac{\frac{2}{5}\times\frac{2}{5}\times\frac{1}{5}\times\frac{2}{5}\times\frac{5}{14}}{P(X)}
P(y2∣X)=P(X)52×52×51×52×145
进而可以比较这两个值,选择概率较大值预测。
5、KNN最近邻分类方法
K-最近邻分类算法是一种基于实例的学习算法,它不需要先使用训练样本进行分类器的设计,而是直接用训练集对数据样本进行分类,确定其类别标号。
就是计算给出的样本和所有样本的距离。对同一属性来说,取值不同距离+1.然后取得距离最小的K个距离对应的样本,以它们中分类的大多数为此样本的选择。
例题
对weather数据集,利用KNN算法,测试样本X=(rain, hot,normal, weak,?)的类标号属性,其中k取3。
解答
首先计算距离(此处是曼哈顿距离)
Distance(X,p1)=2, Distance(X,p2)=3 , Distance(X,p3)=2 ,
Distance(X,p4)=2 , Distance(X,p5)=1 , Distance(X,p6)=2 ,
Distance(X,p7)=3 , Distance(X,p8)=3 , Distance(X,p9)=2 ,
Distance(X,p10)=1,Distance(X,p11)=3,Distance(X,p12)=1,
Distance(X,p13)=1,Distance(X,p14)=3;
然后选择前k的样本,即前三的是p5,p10,p12
最后选择它们的选择。它们都是yes,故此样本预测为yes。
6、回归
回归是Frances Galton提出的一种统计方法。回归分析可以对预测变量和响应变量之间的联系建模。
一元线性回归: 一元线性回归分析涉及到一个响应变量y和一个预测变量x,它是最简单的回归形式,并用x的线性函数对y建模。即:
y
=
b
+
w
x
y=b+wx
y=b+wx
系数通过最小二乘法求解
w
1
=
∑
i
=
1
m
(
x
i
−
x
ˉ
)
(
y
i
−
y
ˉ
)
∑
i
=
1
m
(
x
i
−
x
ˉ
)
2
w_{1}=\frac{\sum_{i=1}^{m}\left(x_{i}-\bar{x}\right)\left(y_{i}-\bar{y}\right)}{\sum_{i=1}^{m}\left(x_{i}-\bar{x}\right)^{2}}
w1=∑i=1m(xi−xˉ)2∑i=1m(xi−xˉ)(yi−yˉ)
w
0
=
y
ˉ
−
w
1
x
ˉ
w_{0}=\bar{y}-w_{1} \bar{x}
w0=yˉ−w1xˉ
第四章 聚类
1、聚类
聚类(Clustering)是将数据集划分为若干相似对象组成的多个组(group)或簇(cluster)的过程,使得同一组中对象间的相似度最大化,不同组中对象间的相似度最小化。
2、基于划分的聚类算法
划分式聚类算法需要预先指定簇数目或簇中心,通过反复
迭代运算,逐步降低目标函数的误差值,当目标函数值收
敛时,得到最终聚类结果。
2.1 K-means算法
(1)首先从数据集D中任意选择k个对象作为初始簇中心;
(2)然后计算每个对象p到簇k的距离d(p,ci),并将其指定到距离最短的簇;
(3)更新簇中的对象的均值,作为新的簇的中心;
(4)回到2,除非所有簇的中心不变。
例题
对表4-1中二维数据,使用k-means算法将其划分为2个簇,假设初始簇中心选为P7(4,5),P10(5,5)。
解答
(1)计算每个对象到簇C1(4,5)和簇C2(5,5)的距离;
(2)然后分配到最近的簇
(3)属于簇C1的样本有:{P7,P1,P2,P4,P5,P8}
属于簇C2的样本有:{P10,P3,P6,P9}
(4)重新计算新的簇的中心,有:C1的中心为(3.5,5.167),C2的中心为(6.75,4.25)
然后不断重复;
2.2 k-summary方法
(1)对象与对象之间的距离
对于相同的属性,它们的差异计算方式为:若是数值型直接作差取绝对值,若是非数值型,不同取1相同取0;
(2)对象与簇之间的距离
是所有的属性的距离之和。对于一个属性,若取值是数值型它们的距离就是差的绝对值,若是非数值型,它们的距离是
d
i
f
(
p
i
,
C
i
)
=
1
−
F
r
e
q
C
∣
D
i
(
p
i
)
∣
C
∣
dif(p_{i},C_{i})=1-\frac{Freq_{C|Di}(p_{i})}{|C|}
dif(pi,Ci)=1−∣C∣FreqC∣Di(pi)
其中,Freq是pi对应的取值在簇C中的出现次数,而|C|是簇c的对象数。
(3)簇与簇之间的距离
假设簇C1有m个对象,C2有n个对象。对于属性Di,在簇C1中的出现次数是F1,在簇C2中出现次数是F2,则就单个属性而言
d
i
f
D
i
(
C
1
,
C
2
)
=
F
1
×
F
2
m
×
n
dif_{D_{i}}(C_{1},C_{2})=\frac{F1\times F2}{m\times n}
difDi(C1,C2)=m×nF1×F2
而总体的距离是
d
i
f
(
C
1
,
C
2
)
=
1
−
∑
i
=
0
k
d
i
f
D
i
(
C
1
,
C
2
)
dif(C_{1},C_{2})=1-\sum_{i=0}^{k}dif_{D_{i}}(C_{1},C_{2})
dif(C1,C2)=1−i=0∑kdifDi(C1,C2)
距离计算例题
学生信息包含性别、籍贯、年龄三个属性
p={男,广州,18} , q={女,深圳,20}
C1={男:25,女:5;广州:20,深圳:6,韶关:4;19}
C2={男:3,女:12;汕头:12,深圳:1,湛江:2;24}
计算p与q的距离,p与C1的距离,C1与C2的距离。
解答
首先要清楚有三个属性,距离就是三个属性的距离之和。
d
(
p
,
q
)
=
1
+
1
+
∣
20
−
18
∣
=
4
d(p,q) = 1+1+|20-18| = 4
d(p,q)=1+1+∣20−18∣=4
d
(
p
,
C
1
)
=
1
−
25
30
+
1
−
20
30
+
∣
18
−
19
∣
=
1.5
d(p,C1)=1-\frac{25}{30}+1-\frac{20}{30}+|18-19|=1.5
d(p,C1)=1−3025+1−3020+∣18−19∣=1.5
d
(
C
1
,
C
2
)
=
1
−
25
×
3
+
5
×
12
30
×
15
+
1
−
6
×
1
30
×
15
+
∣
19
−
24
∣
=
6.69
d(C1,C2) = 1-\frac{25\times 3+5\times 12}{30 \times 15}+1-\frac{6 \times 1}{30 \times 15} + |19-24| = 6.69
d(C1,C2)=1−30×1525×3+5×12+1−30×156×1+∣19−24∣=6.69
k-summary算法与k-mean类似
(1)从数据集D中任意选择k个对象,并创建k个簇的摘要信息CSI;
(2)计算所有对象P到k个簇中心的距离,将对象P指派到与其最近(距离最短)的簇;
(3)更新簇的摘要信息CSI;
(4)回到2,直到所有簇的摘要信息不发生变化。
3、基于密度的聚类算法 DBSCAN
DBSCAN是一种基于高密度连通区域的聚类方法,该算法将具有足够高密度的区域划分为簇,并在具有噪声的空间数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大的集合。
3.1 基本概念
根据点的密度分为核心点、边界点和噪声。
给定邻域半径Eps,邻域内包含的点的最小数目MinPts。
核心点:若一个点的Eps半径内包含的点的数目不小于Minpts(包括自身),则称此点是核心点。
边界点与噪声:若一个点的Eps半径内包含的点的数目小于Minpts(包括自身),则此点候选为噪声。若它在别的核心点的Eps半径内,则它变成边界点。
直接密度可达:若p在q的邻域内,q是核心点,则称q直接密度可达p【前者要是核心点】。
密度可达:若存在一系列的对象链p1p2p3…pn,满足任意两个连续的对象p1p2满足直接密度可达,则称pn是从p1密度可达的。(即经过一堆核心点)。
密度相连:如果存在对象O∈D,使对象p和q都是从O关于Eps和MinPts密度可达的,那么对象p到q是关于Eps和MinPts密度相连。【就是三者的关系,p和q是核心点O的Eps范围内的两个不同点,就是密度相连】
3.2 算法流程
(1)将数据集D中的所有对象标记为未处理状态
(2)任选一个点,若它是边界点则回到(2),否则计算半径Eps内有多少对象,若不小于Minpts则标记它是核心点建立新的簇;否则暂时标记它为噪声。
(3)遍历这个点的半径内的点,看它们的Eps半径内的对象数量。若当前点是核心点,将遍历的点以及它们的边界点加入簇中;否则,遍历到核心点时就以这个核心点为中心建立簇,然后将这核心点所有的边界点加入簇中。
(4)若所有点都标记完结束,否则返回2。
例题
对于表4-3所示二维平面上的数据集,取Eps=3,MinPts=3 来演示DBSCAN算法的聚类过程(使用Mahattan距离公式)。
解答
随机选取点
<1>选取P1,它的Eps半径内有{P1,P2,P3,P13},故它是核心点。以P1为中心建立簇C1,把P2,P3,P13加入其中。依次遍历P2:P2Eps半径内有{P2,P1,P3,P13,P4},将P4加入簇C1中;遍历P3,Eps半径内有{P2,P1,P3,P13,P4};遍历P13,Eps半径内有{P2,P1,P3,P13,P4}.
<2> 选取点P5,其Eps邻域中包含{P5,P6,P7,P8},P5是核心点,其邻域中的点构成簇2的一部分,依次检查P6,P7,P8的Eps邻域,进行扩展,每个点都是核心点,不能扩展;
<3>选取点P9,其Eps邻域中包含{P9},P9为噪声点或边界点;
<4>选取点P10,其Eps邻域中包含{P10,P11},P10为噪声点或边界
点;检查P11,其Eps邻域中包含{P10,P11,P12},P11为核心
点,其邻域中的点构成簇3的一部分;进一步检查,P10、P12为
边界点。
所有点标记完毕,P9没有落在任何核心点的邻域内,为噪声点。
最终识别出三个簇,P9为噪声点。簇1包含{P1,P2,P3,P4,P13},
P4为边界点,其它点为核心点;簇2包含{P5,P6,P7,P8 },其
全部点均为核心点;簇3包含{P10,P11,P12},P10、P12为边
界点,P11为核心点;
4 一趟聚类算法 CABMDP
基于最小距离原则的聚类算法CABMDP (Clustering Algorithm Based on Minimal Distance Principle)采用摘要信息CSI表示一个簇,将数据集分割为半径几乎相同的超球体(簇)。
4.1 算法流程
<1>首先计算阈值,采用抽样的方法从数据集中选择一些对象,然后计算它们之间的距离,依据这些距离来计算平均值EX和标准差DX。选取的阈值r∈[EX-2DX,EX+0.25DX]之间
<2>初始时簇集合为空,然后选取第一个对象,以这个对象中心构造簇,生成簇摘要;
<3>然后依次选取对象,计算它与已有的簇的距离。若与所有簇的距离都大于阈值r,则以它为中心构造新的簇并产生簇摘要;否则将其加入距离最小的簇中,然后更新簇摘要。
<4>所有对象都遍历完毕,结束。
没啥子好说的,就是计算距离。
第五章 关联规则
给定一组事务,寻找预测 “某些项将会随其他项的出现而出现” 的规则。
蕴含符号→表示共现关系而不是因果。
5.1 基本定义
数据集D:是事务的集合;
事务T:是项的集合;
项的集合:数据库D中全部项的集合;
项集: 0个或多个项的集合。 如 {Diaper, Beer}。k-项集是包含k个项的项集。
支持度计数:给定项集的出现次数,即整个数据集中包含给定项集的事务数;
频繁项集:支持度大于等于给定阈值 minsup 的项集;
关联规则:形式为 X →Y 的蕴含表达式,其中X 和Y是项集;
规则评估度量:
支持度:覆盖给定项集的事务数占所有事务数的比例;
置信度:在包含X的事务集合中,包含Y的事务个数占事务总数的比例;
关联规则的挖掘任务是:给定一个事务集合T,关联规则挖掘的目标是寻找所
有满足下面条件的规则
支持度 ≥ minsup(支持度阈值)
置信度 ≥ minconf(置信度阈值)
5.2 频繁项集
定理: 如果一个项集是频繁的,那么它的所有子集都是频繁的。
5.2.1 Apriori算法
流程如下:
首先计算所有1-项集的支持度,然后得到所有的频繁1-项集;
然后从频繁1-项集中组合出所有的2-项集,计算所有的2-项集的支持度,从而得到所有的频繁2-项集。
依次类推,直到得到最终的频繁k-项集。
例子
考虑下面的事务数据库,最小支持度计数阈值=2,计算所有的频繁项集。
首先计算所有的1-项集的支持度计数。
项集 | 支持度 |
---|---|
{Cola} | 3 |
{Egg} | 1 |
{Ham} | 2 |
{Diaper} | 3 |
{Beer} | 3 |
得到频繁1项集,然后根据频繁1-项集组合出2-项集,并计算支持度
项集 | 支持度 |
---|---|
{Cola,Beer} | 2 |
{Cola,Ham} | 2 |
{Cola,Diaper} | 2 |
{Diaper,Beer} | 3 |
{Diaper,Ham} | 1 |
{Beer,Ham} | 1 |
得到频繁2-项集,根据频繁2-项集组合出3-项集,计算支持度
项集 | 支持度 |
---|---|
{Cola,Diaper,Beer} | 2 |
根据频繁2项集只能组合出这一种3-项集。
5.2.2 FP树
FP算法使用一种称作FP树的紧凑数据结构组织数据,并直接从该结构中提取频繁项集。
如何构造FP树
首先得到频繁1-项集,然后按照支持度从高到底排序。
对于此例,频繁1项集和支持度如下
项集 | 支持度 |
---|---|
{Cola} | 3 |
{Diaper} | 3 |
{Beer} | 3 |
{Ham} | 2 |
然后每个事务中的项按照支持度计数排序。【此例中已经默认排序好】
构建空根节点,然后读取第一条事务,从根节点出发按照顺序添加节点,只添加频繁1-项集中的项。最后再加上保留了频繁1-项集的结构头表,再连线就构建完成了。
5.3 关联规则的产生
如果X-S→S是强关联规则,那对S’∈S,有X-S’→S’是强关联规则。反之若前者不是强关联规则那后者一定不是强关联规则。
例如对于频繁项集{A,B,C},若 {A}→{B,C}是强关联规则,其置信度为
c
(
A
→
B
C
)
=
N
(
A
B
C
)
N
(
A
)
c(A→BC) = \frac{N{(ABC)}}{N(A)}
c(A→BC)=N(A)N(ABC)
对 {A,B}→{C}来说,其置信度是
c
(
A
B
→
C
)
=
N
(
A
B
C
)
N
(
A
B
)
c(AB→C) = \frac{N{(ABC)}}{N(AB)}
c(AB→C)=N(AB)N(ABC)
而AB同时出现的项集数一定小于等于A单独出现的项集数,即后者大于等于前者,故一定是强关联规则。反之也可以推导。
5.4 客观兴趣度
关联规则算法倾向于产生大量的规则,很多产生的规则是不感兴趣的或冗余的,兴趣度可以用于对产生的规则进行过滤或排序。
5.4.1 计算客观兴趣度
给定规则 X → Y,计算规则兴趣度的信息可以从以下相依表(contingence table)中获取
兴趣因子,也称提升度
i
n
t
e
r
e
s
t
=
P
(
X
,
Y
)
P
(
X
)
P
(
Y
)
=
N
f
11
f
1
+
f
+
1
interest = \frac{P(X,Y)}{P(X)P(Y)}=\frac{Nf_{11}}{f_{1+}f_{+1}}
interest=P(X)P(Y)P(X,Y)=f1+f+1Nf11
第六章 离群点挖掘
6.1 什么是离群点
离群点是在数据集中偏离大部分数据的数据,使人怀疑这些数据的偏离并非由随机因素
产生,而是产生于完全不同的机制。
6.2 常用的方法
基于统计的检测方法:假设数据集存在一个概率分布模型,与模型不一致的就是离群点。
基于聚类的检测方法:把相似的聚合在一起,不属于任何一个簇的就是离群点。
6.2.1 基于距离的检测方法
一个对象是离群的,如果它远离大部分其它对象。
有两种不同的策略:第一种是是采用给定邻域半径,依据点的邻域中包含的对象多少来判定离群点。第二种是根据k最近邻距离的大小。
使用k-最近邻的距离度量一个对象是否远离大部分点,一个对象的离群程度由到它的k-最近邻的距离给定 。但是这种方法对选定的k值敏感。
K最近邻距离要求在这个距离内除了本身至少还有K个对象。离群因子定义为K-最近邻距离内的其他所有对象到当前对象的距离的平均值。
其中分子是所有最近邻的距离之和,分母是最近邻的数量【不包括本身】。距离越大是利群点的概率越大。
6.2.2 基于密度的检测方法
当数据集含有多种分布或数据集由不同密度子集混合而成时,数据是否离群不仅仅取决于它与周围数据的距离大小,而且与邻域内的密度状况有关。 这里使用每个对象到第k个最近邻的距离大小来度量密度。
定义K-最近邻距离内的局部邻域密度是
其中,分子是当前对象K-最近邻距离内的所有对象的距离之和,而分子是数量。其实也就是基于距离的离群因子的倒数。
相对密度定义为
分子是所有K-最近邻距离内的对象的密度的平均值,分子是当前对象的密度。离群因子定义为
离群因子越大越可能是离群点。