数据挖掘期末复习

概述

概念

技术层面
从大量数据中,提取潜在有用的信息和知识的过程。
商业层面
是一种商业信息处理技术,主要特点是对大量业务数据进行抽取、转换、分析和建模处理,提取辅助商业决策的关键数据

作用

任务

预测任务

根据其他属性的值预测特定属性的值

  • 分类
    分析数据为类别做出准确描述或建立分析模型或挖掘分类规则,然后对其他数据进行分类

  • 回归
    确定两种或两种以上变数间相互依赖的定量关系的一种分析方法

  • 离群点检测
    发现与众不同的数据

描述任务

寻找概括数据中潜在联系的模式

  • 聚类分析
    找出数据中的共性和差异将具有共性的对象聚合在相应的类中

  • 关联分析
    通常是从给定数据集中发现频繁出现模式知识(又称为关联规则

组成

知识发现

  • 数据清洗
  • 数据集成
  • 数据转换
  • 数据挖掘
  • 模式评估
  • 知识表示

商业角度上看,数据挖掘可分为三个阶段:

  • 数据收集:数据收集是数据挖掘的基础。收集到的原始数据存在缺失值等问题,需要进行数据预处理。
  • 知识提取:基于经过预处理的数据,使用各种数据挖掘方法(如分类等)进行知识提取,是核心部分。
  • 知识辅助决策:数据挖掘已被广泛应用,其提取出来的知识可以辅助决策者做出决策。

数据预处理

数据清理

填写空缺数据去除噪声识别离群点纠正数据不一致值

数据聚合

集成多个数据库,数据立方体或文件

数据变换

平滑:去除数据中的噪声数据
聚集:汇总,数据立方体的构建
数据概化:沿概念分层高上汇总
规范化:将数据按比例缩放,使之落入一个小的
特定区间(消除量纲的影响)
特征构造:由一个或多个原始特征共同构造新的特征

数据归约

记录维度两个方面减少数据量



分类

决策树

基本概念
信息熵:熵(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=1mpilog2pi

信息增益是划分前样本数据集的不纯程度(熵)和划分后样本数据集的不纯程度(熵)的差值。
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=1kSSiEntropy(Si)

ID3分类算法

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

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=1kSSilog2SSi

信息增益率定义为
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

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+SRSRG(tR)SL+SRSLG(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=argmaxG(ξ,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(Xplay=yes)P(play=yes)=P(x1play=yes)P(x2play=yes)P(x3play=yes)P(x4play=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(XiYj)=n+lnc+lp
其中n是类Yj中的实例总数,nc是类Yj的训练样例中取值为Xi的样例数,l是称为等价样本大小的参数,而p是用户指定的参数。

K-最近邻

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



聚类

指标

  • 可伸缩性
  • 可解释性
  • 高维性
  • 处理不同类型属性的能力
  • 处理噪音和异常数据的能力
  • 用于决定输入参数的领域知识最小化
  • 对于输入记录顺序不敏感
  • 发现任意形状的聚类
  • 基于约束的聚类

k-means

从数据集D中任意选择k个对象作为簇中心;
repeat
	for 数据集D总每个对象P do
		计算对象P到k个簇中心的距离
		将对象P指派到与其最近的簇;
	end for
	计算每个簇中对象的均值,作为新的簇中心;
until k个簇中心不再发生变化

K-means算法采用来表示一个簇

k-means算法描述容易、实现简单、快速

但存在不足:

  1. 簇的个数难确定;
  2. 结果对初始值的选择较敏感;
  3. 容易陷入局部最优值;
  4. 对噪音和异常数据敏感;
  5. 不能用于发现非凸形状的簇,或具有各种不同大小的簇。

扩展

  • 对象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){1CFreqCDi(Pi),pi,Ci,ifif

  • 簇C1与C2间距离

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKMXV7mP-1656253996836)(:/8151e9138a3c4b2492c7b4b2b73683cb)]

k-summary

从数据集D中任意选择k个对象,并创建k个簇的摘要信息CSI;
repeat
	for 数据集D中每个对象P do
		计算对象P到k个簇中心的距离
		将对象P指派到与其最近的簇
	end for
	更新簇的摘要信息CSI;
until k个簇的摘要信息不再变化

一趟聚类cabmdp

描述
基于最小距离原则的聚类算法CABMDP采用摘要信息CSI表示一个簇,将数据集分割为半径几乎相同的超球体(簇)。具体过程如下:

① 初始时,簇集合为空,读入新对象;
② 以这个对象构造一个新的簇;
③ 若已到数据库末尾,则转(6),否则读入新对象,计算它与每个已有簇间的距离,并选择最小的距离;
④ 若最小距离超过给定的半径阈值r,转(2);
⑤ 否则将该对象并入具有最小距离的簇中并更新该簇的各分类属性值的统计频度及数值属性的质心,转(3);
⑥ 结束。

 优点:高效,参数选择简单,对噪声不敏感
 缺点:不能用于发现非凸形状的簇,或具有各种不同大小的簇。

密度dbscan

根据点的密度将点分为三类:

  • 稠密区内部的点 核心点
  • 稠密区边缘上的点 边界点
  • 稀疏区域的点 噪声或背景点

基本概念

给定一个对象集合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) 聚类结果依赖于参数,而参数的选择主要靠经验,没有简单通用的方法。

一探聚类和k-summary的区别


关联分析

概念

数据集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(XY)=P(I)P(X,Y)

I是总事务集

  • 置信度
    C o n f i d e n c e ( X → Y ) = P ( Y ∣ X ) Confidence(X \rightarrow Y) = P(Y|X) Confidence(XY)=P(YX)

衡量关联规则有两个标准,支持度和置信度。如果两个都高于阈值,那么叫做强关联规则

  • 提升度
    提升度表示含有X的条件下,同时含有Y的概率,与只看Y发生的概率之比。提升度反映了关联规则中的X与Y的相关性,提升度>1且越高表明正相关性越高,提升度<1且越低表明负相关性越高,提升度=1表明没有相关性,即相互独立。
    L i f t ( X → Y ) = P ( Y ∣ X ) P ( Y ) Lift(X \rightarrow Y) = \frac{P(Y|X)}{P(Y)} Lift(XY)=P(Y)P(YX)

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(XY)=Sup(Y)Con(XY)

Apriori算法

 设定k=1
 扫描事务数据库一次,生成频繁的1-项集
 如果存在两个或以上频繁k-项集,重复下面过程:
	 [候选产生] 由长度为k的频繁项集生成k+1的候选项集
	 [候选前剪枝] 对每个候选项集,若其具有非频繁的长度为k的子集,则删除
	 [支持度计算] 扫描事务数据库一次,统计每个余下的候选项集的支持度
	 [候选后剪枝] 删除非频繁的候选项集,保留频繁的(k+1)-项集
	 设定k = k+1

FP-Growth

FP算法使用一种称作FP树的紧凑数据结构组织数据,并直接从该结构中提取频繁项集。

FP树是一种输入数据的压缩表示,它通过逐个读入事务,并把每个事务映射到FP树中的一条路径来构造。


离群点挖掘

基于统计的方法

假定所给定的数据集存在一个分布或概率模型(例如,正态分布或泊松分布),然后将与模型不一致(即分布不符合)的数据标识为离群数据

定义 设属性x 取自具有均值0 和标准差1 的高斯
分布。如果属性值x 满足:P(|x|≥c)=α,其中c 是一个选定的常量,则x以概率1-α为离群点。

  • 为了使用该定义,需要指定α值。从不寻常的值(对象)预示来自不同的值的观点来说,α表示我们错误地将来自给定分布的值分类为离群点的概率。从离群点是N(0,1)分布的稀有值的观点来说,α表示稀有程度。
  • 如果(正常对象的)一个感兴趣的属性的分布是具有均值μ和标准差σ的正态分布,即 分布,则可以通过变换z=(x-μ)/σ转换为标准正态分布N(0,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)降序排列,确定离群点得分高的若干对象

你可能感兴趣的:(课程学习,数据挖掘,数据库,人工智能)