技术层面
从大量数据中,提取潜在有用的信息和知识的过程。
商业层面
是一种商业信息处理技术,主要特点是对大量业务数据进行抽取、转换、分析和建模处理,提取辅助商业决策的关键数据
根据其他属性的值预测特定属性的值
分类
分析数据为类别做出准确描述或建立分析模型或挖掘分类规则,然后对其他数据进行分类
回归
确定两种或两种以上变数间相互依赖的定量关系的一种分析方法
离群点检测
发现与众不同的数据
寻找概括数据中潜在联系的模式
聚类分析
找出数据中的共性和差异,将具有共性的对象聚合在相应的类中
关联分析
通常是从给定数据集中发现频繁出现的模式知识(又称为关联规则)
商业角度上看,数据挖掘可分为三个阶段:
填写空缺数据,去除噪声,识别离群点,纠正数据不一致值
集成多个数据库,数据立方体或文件
平滑:去除数据中的噪声数据
聚集:汇总,数据立方体的构建
数据概化:沿概念分层高上汇总
规范化:将数据按比例缩放,使之落入一个小的
特定区间(消除量纲的影响)
特征构造:由一个或多个原始特征共同构造新的特征
从记录和维度两个方面减少数据量
基本概念
信息熵:熵(entropy,也称信息熵)用来度量一个属性的信息量。
E n t r o p y ( S ) = E n t r o p y ( p 1 , P 2 , … , p m ) = − ∑ i = 1 m p i log 2 p i Entropy(S) = Entropy(p_1,P_2,\dots,p_m) = - \sum_{i=1}^m p_i \log_2 p_i Entropy(S)=Entropy(p1,P2,…,pm)=−i=1∑mpilog2pi
信息增益是划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
G a i n ( S , A ) = E n t r o p y ( S ) − E n t r o p y A ( S ) Gain(S,A) = Entropy(S)-Entropy_A(S) Gain(S,A)=Entropy(S)−EntropyA(S)
E n t r o p y A ( S ) = ∑ i = 1 k ∣ S i ∣ ∣ S ∣ E n t r o p y ( S i ) Entropy_A(S) = \sum_{i=1}^k \frac{|S_i|}{|S|} Entropy(S_i) EntropyA(S)=i=1∑k∣S∣∣Si∣Entropy(Si)
if 样本S全部属于同一个类别C then
创建一个叶节点,并标记类标号为C;
return;
else
计算属性集F中每一个属性的信息增益,假定增益最大的属性为A;
创建结点,取属性A为该结点的决策属性;
for 结点属性A的每个可能的取值V do
为该结点添加一个新的分支,假设Sv为属性A取值为V的样本子集;
if 样本Sv全部属于同一个类别C then
为该分支添加一个叶节点,并标记类标号为C;
else
递归调用DT{Sv, F-{A}},为该分支创建子树;
end if
end for
end if
优点:
理论清晰,方法简单,学习能力较强。
缺点:
(1)算法只能处理分类属性数据,无法处理连续型数据;
(2)算法对测试属性的每个取值相应产生一个分支,且划分相应的数据样本集,这样的划分会导致产生许多小的子集。
(3)ID3算法中使用信息增益作为决策树节点属性选择的标准,由于信息增益在类别值多的属性上计算结果大于类别值少的属性上计算结果,这将导致决策树算法偏向选择具有较多分枝的属性,因而可能导致过度拟合。
C4.5通过引入属性的分裂信息来调节信息增益,分裂信息定义为
S p l i t E ( A ) = − ∑ i = 1 k ∣ S i ∣ ∣ S ∣ log 2 ∣ S i ∣ ∣ S ∣ SplitE(A) = - \sum_{i=1}^k \frac{|S_i|}{|S|} \log_2 \frac{|S_i|}{|S|} SplitE(A)=−i=1∑k∣S∣∣Si∣log2∣S∣∣Si∣
信息增益率定义为
G a i n R a t i o ( A ) = G a i n ( A ) S p l i t E ( A ) GainRatio(A) = \frac {Gain(A)}{SplitE(A)} GainRatio(A)=SplitE(A)Gain(A)
CART算法使用Gini系数来度量对某个属性变量测试输出的两组取值的差异性
设t为一个节点,ξ为该节点的一个属性分支条件,该分支条件将节点t中样本分别分到左分支SL和右分SR中,称:
△ G ( ξ , t ) = G ( t ) − ∣ S R ∣ ∣ S L ∣ + ∣ S R ∣ G ( t R ) − ∣ S L ∣ ∣ S L ∣ + ∣ S R ∣ G ( t L ) \vartriangle G(\xi,t) = G(t)-\frac{|S_R|}{|S_L|+|S_R|}G(t_R)-\frac{|S_L|}{|S_L|+|S_R|}G(t_L) △G(ξ,t)=G(t)−∣SL∣+∣SR∣∣SR∣G(tR)−∣SL∣+∣SR∣∣SL∣G(tL)
为在分枝条件ξ下节点t的差异性损失。其中,G(t)为划分前测试输出的Gini系数,|SR|和|SL|分别表示划分后左右分枝的样本个数。为使节点t尽可能的纯,我们需选择某个属性分枝条件ξ使该节点的差异性损失尽可能大。用ξ(t)表示所考虑的分枝条件ξ的全体,则选择分枝条件应为:
ξ m a x = a r g m a x △ G ( ξ , t ) \xi_{max} = argmax\vartriangle G(\xi,t) ξmax=argmax△G(ξ,t)
朴素贝叶斯分类算法利用贝叶斯定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。
for j = i to m
计算X属于每一个类别Cj的概率P(X|Cj);
计算训练集中每个类别Cj的概率P(Cj);
计算概率值;
end for
选择计算概率值最大的Ci最为类别输出
P ( X ∣ p l a y = y e s ) ∗ P ( p l a y = y e s ) = P ( x 1 ∣ p l a y = y e s ) ∗ P ( x 2 ∣ p l a y = y e s ) ∗ P ( x 3 ∣ p l a y = y e s ) ∗ P ( x 4 ∣ p l a y = y e s ) ∗ P ( p l a y = y e s ) P(X|play=yes)*P(play=yes) \\ =P(x_1|play=yes) * P(x_2|play=yes) * P(x_3|play=yes) * P(x_4|play=yes) * P(play=yes) P(X∣play=yes)∗P(play=yes)=P(x1∣play=yes)∗P(x2∣play=yes)∗P(x3∣play=yes)∗P(x4∣play=yes)∗P(play=yes)
条件概率为零时,一般采用Laplace估计来解决这个问题,Laplace估计定义如下:
P ( X i ∣ Y j ) = n c + l ∗ p n + l P(X_i|Y_j) = \frac {n_c+l*p}{n+l} P(Xi∣Yj)=n+lnc+l∗p
其中n是类Yj中的实例总数,nc是类Yj的训练样例中取值为Xi的样例数,l是称为等价样本大小的参数,而p是用户指定的参数。
K-最近邻分类算法是一种基于实例的学习算法,它不需要先使用训练样本进行分类器的设计,而是直接用训练集对数据样本进行分类,确定其类别标号。
for 每个测试样本z = (x',y')∈Z do
计算z和每个训练样本(x,y)∈D 之间的距离d(x',x)
选择离z最近的k最近邻集合Dz包含于D
返回Dz中样本的多数类的类标号
end for
实际\预测 | + | - |
---|---|---|
+ | 正确的正例TP | 错误的负例FN |
- | 错误的正例FP | 正确的负例TN |
查准率
P r e c i s i o n = T P T P + F P Precision= \frac{TP}{TP+FP} Precision=TP+FPTP
查全率
R e c a l l = T P T P + F N Recall=\frac{TP}{TP+FN} Recall=TP+FNTP
从数据集D中任意选择k个对象作为簇中心;
repeat
for 数据集D总每个对象P do
计算对象P到k个簇中心的距离
将对象P指派到与其最近的簇;
end for
计算每个簇中对象的均值,作为新的簇中心;
until k个簇中心不再发生变化
K-means算法采用
k-means算法描述容易、实现简单、快速
但存在不足:
对象p,q为分类属性
d i f ( p i , q i ) { 1 , i f = 0 , i f ≠ dif(p_i,q_i) \begin{cases} 1, & if = \\ 0, & if \neq \end{cases} dif(pi,qi){1,0,if=if=
对象间距离
d ( p i , q i ) = ( ∑ i = 1 m d i f ( p i , q i ) x ) 1 / x d(p_i,q_i) = { \left( \sum{i=1}^m dif(p_i,q_i)^x \right) }^{1/x} d(pi,qi)=(∑i=1mdif(pi,qi)x)1/x
对象p与簇C间距离
d ( p , C ) = ( ∑ i = 1 m d i f ( p , C i ) x ) 1 / x d(p,C) = { \left( \sum{i=1}^m dif(p,C_i)^x \right) }^{1/x} d(p,C)=(∑i=1mdif(p,Ci)x)1/x
d i f ( p i , C i ) { 1 − F r e q C ∣ D i ( P i ) ∣ C ∣ , i f 分 类 属 性 ∣ p i , C i ∣ , i f 数 值 属 性 dif(p_i,C_i) \begin{cases} 1 - \frac{ Freq_{C|D_i} (P_i) } { |C| } , & if 分类属性 \\ |p_i,C_i|, & if 数值属性 \end{cases} dif(pi,Ci){1−∣C∣FreqC∣Di(Pi),∣pi,Ci∣,if分类属性if数值属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKMXV7mP-1656253996836)(:/8151e9138a3c4b2492c7b4b2b73683cb)]
从数据集D中任意选择k个对象,并创建k个簇的摘要信息CSI;
repeat
for 数据集D中每个对象P do
计算对象P到k个簇中心的距离
将对象P指派到与其最近的簇
end for
更新簇的摘要信息CSI;
until k个簇的摘要信息不再变化
描述
基于最小距离原则的聚类算法CABMDP采用摘要信息CSI表示一个簇,将数据集分割为半径几乎相同的超球体(簇)。具体过程如下:
① 初始时,簇集合为空,读入新对象;
② 以这个对象构造一个新的簇;
③ 若已到数据库末尾,则转(6),否则读入新对象,计算它与每个已有簇间的距离,并选择最小的距离;
④ 若最小距离超过给定的半径阈值r,转(2);
⑤ 否则将该对象并入具有最小距离的簇中并更新该簇的各分类属性值的统计频度及数值属性的质心,转(3);
⑥ 结束。
优点:高效,参数选择简单,对噪声不敏感
缺点:不能用于发现非凸形状的簇,或具有各种不同大小的簇。
根据点的密度将点分为三类:
给定一个对象集合D,对象之间的距离函数为distance(,),邻域半径为Eps。
数据集中特定点的密度通过该点的Eps半径之内包含的点数(包括点本身)来估计。
Eps邻域:给定对象半径Eps内的邻域称为该对象的Eps邻域。我们用Neps§ 表示点p的Eps-半径内的点的集合,即
MinPts:给定邻域Neps§ 包含的点的最小数目,用以决定点p是簇的核心部分还是边界点或噪声。
核心对象:如果对象的Eps邻域包含至少MinPts个的对象,则称该对象为核心对象。
边界点:边界点不是核心点,但落在某个核心点的邻域内。
噪音点:既不是核心点,也不是边界点的任何点。
首先将数据集D中所有对象标记为未处理状态
for 数据集D中的每个对象p do
if p已归入某个簇或标记为噪声 then
continue;
else
检查对象p的Eps领域 Neps(p);
if N 包含的对象小于MinPts then
标记对象p为边界点或噪声点
else
标记对象p为核心点,并建立新簇C;
for N中所有尚未被处理的对象q do
检查其Eps领域N,若N包含至少MinPts个对象,则将N中未归入任何一个簇的对象加入C
end for
end if
end if
end for
(1) 对于大规模数据集,聚类时效性和准确性难以满足要求;
(2) 难以直接处理混合属性的数据;
(3) 聚类结果依赖于参数,而参数的选择主要靠经验,没有简单通用的方法。
数据集D:事务的集合
事务T:是项的集合
项的集合:数据库D中全部项的集合
项集:零或多个项的集合
k-项集:包含k个项的项集
支持度计数:给定项集的出现次数:整个交易数据集中包含给定项集的事务数;
支持度:覆盖给定项集的事务数占所有事务数的比例
频繁项集:支持度大于等于给定阈值 minsup 的项集
关联规则:形式为 X → \rightarrow →Y 的蕴含表达式,其中X和Y是项集
S u p p o r t ( X → Y ) = P ( X , Y ) P ( I ) Support(X \rightarrow Y) = \frac{P(X,Y)}{P(I)} Support(X→Y)=P(I)P(X,Y)
I是总事务集
衡量关联规则有两个标准,支持度和置信度。如果两个都高于阈值,那么叫做强关联规则
L i f ( X → Y ) = C o n ( X → Y ) S u p ( Y ) Lif(X \rightarrow Y) = \frac{Con(X \rightarrow Y)}{Sup(Y)} Lif(X→Y)=Sup(Y)Con(X→Y)
设定k=1
扫描事务数据库一次,生成频繁的1-项集
如果存在两个或以上频繁k-项集,重复下面过程:
[候选产生] 由长度为k的频繁项集生成k+1的候选项集
[候选前剪枝] 对每个候选项集,若其具有非频繁的长度为k的子集,则删除
[支持度计算] 扫描事务数据库一次,统计每个余下的候选项集的支持度
[候选后剪枝] 删除非频繁的候选项集,保留频繁的(k+1)-项集
设定k = k+1
FP算法使用一种称作FP树的紧凑数据结构组织数据,并直接从该结构中提取频繁项集。
FP树是一种输入数据的压缩表示,它通过逐个读入事务,并把每个事务映射到FP树中的一条路径来构造。
假定所给定的数据集存在一个分布或概率模型(例如,正态分布或泊松分布),然后将与模型不一致(即分布不符合)的数据标识为离群数据。
定义 设属性x 取自具有均值0 和标准差1 的高斯
分布。如果属性值x 满足:P(|x|≥c)=α,其中c 是一个选定的常量,则x以概率1-α为离群点。
第一种策略是采用给定邻域半径,依据点的邻域中包含的对象多少来判定离群点
如果一个点的邻域内包含的对象少于整个数据集的一定比例则标识它为离群点,也就是将没有足够邻居的对象看成是基于距离的离群点。
利用k最近邻距离的大小来判定离群
使用k-最近邻的距离度量一个对象是否远离大部分点,一个对象的离群程度由到它的k-最近邻的距离给定
这种方法对k的取值比较敏感。k太小(例如1),则少量的邻近离群点,可能导致较低的离群程度。k太大,则点数少于k的簇中所有的对象可能都成了离群点。
O F 1 ( x , k ) = ∑ y N ( x , k ) d i s t a n c e ( s , y ) ∣ N ( x , k ) ∣ OF1(x,k) = \frac{ \sum_{y N(x,k) } distance(s,y)}{|N(x,k)|} OF1(x,k)=∣N(x,k)∣∑yN(x,k)distance(s,y)
for all 对象x do
确定x的k-最近邻集合N(x,k)
确定x的离群因子OF1(x,k)
end for
对OF1(x,k)降序排列,确定离群因子大的若干对象
return
d e n s i t y ( x , k ) = ( ∑ y N ( x , k ) d i s t a n c e ( s , y ) ∣ N ( x , k ) ∣ ) − 1 density(x,k) = \left( \frac{ \sum_{y N(x,k) } distance(s,y)}{|N(x,k)|} \right) ^{-1} density(x,k)=(∣N(x,k)∣∑yN(x,k)distance(s,y))−1
r e l a t i v e d e n s i t y ( x , k ) = ∑ y N ( x , k ) d i s t a n c e ( x , y ) ÷ ∣ N ( x , k ) ∣ d e n s i t y ( x , k ) ? ? relativedensity(x,k) = \frac{{ \sum_{y N(x,k) } distance(x,y)} \div {|N(x,k)|} }{density(x,k)} ?? relativedensity(x,k)=density(x,k)∑yN(x,k)distance(x,y)÷∣N(x,k)∣??
{k是最近邻个数}
for all 对象x do
确定x的k-最近邻N(x,k)
使用x的最近邻(即N(x,k)中的对象),
确定x的密度density(x,k)。
end for
for all 对象x do
确定x的相对密度relative density(x,k),并赋值给OF2(x,k)。
end for
对OF2(x,k)降序排列,确定离群点得分高的若干对象