数据挖掘复习指南
1 引论
1.1 数据挖掘
1.1.1 概念
-
从大量数据中非平凡地提取隐含的、未知的、有潜在价值的有用信息
-
自动化、半自动化地探索、分析大量数据,以求发现有意义的模式
1.1.2 流程
- 数据清洗 ==> 数据集成 ==> 数据挖掘 ==> 模式评估
1.1.2 任务
- 预测(分类、回归、…)
- 描述(聚类、关联规则挖掘、…)
2 数据
2.1 数据
2.1.1 基本概念
-
数据:数据对象和属性的集合
-
属性:对象的某种特质,一组属性可描述一个对象
-
属性值:属性的数值或符号描述
2.1.2 属性类型
-
标称Norminal = !=
-
序数Ordinal > <
-
区间Interval + -
-
比率Ratio * /
-
连续
-
离散
2.1.3 数据集类型
- 记录Record(数据矩阵、文档数据、事务数据)
- 图Graph(万维网、分子结构)
- 有序数据Ordered(空间数据、时间数据、序列数据、基因数据)
2.1.4 数据特征
- 维度Dimensionality
- 稀疏度Sparsity
- 分辨率Resolution
2.1.5 数据质量
- 噪声值Noise
- 离群值Outlier:和大多数数据对象明显不同的值
- 缺失值Missing:需要排除或者合理估计一个值
- 重复值Duplicate
2.2 数据处理
- 集成Aggregation:将多个属性合并到单个属性中,用于减少数据量、增强数据稳定性
- 抽样Sampling
- 降维Dimensionality Reduction
- 特征选择Feature Subset Selection
- 特征创建Feature Creation
- 离散化和二值化Discretization&Binarization
- 属性变换Attribute Transformation
2.3 相似性 & 距离
2.3.1 常见距离
-
曼哈顿距离Manhattan Distance d ( p , q ) = ( ∑ k = 1 n ∣ p k − q k ∣ ) d(p, q) = (\sum_{k=1}^n |p_k - q_k|) d(p,q)=(∑k=1n∣pk−qk∣)
-
欧氏距离Euclidean Distance
-
明氏距离Minkowski Distance d ( p , q ) = ( ∑ k = 1 n ∣ p k − q k ∣ r ) 1 r d(p,q)= (\sum_{k=1}^n |p_k - q_k| ^ r) ^ {\frac1r} d(p,q)=(∑k=1n∣pk−qk∣r)r1
-
马氏距离Mahalanobis Distance d ( p , q ) = ( p − q ) T Σ − 1 ( p − q ) d(p, q) = (p-q)^T \Sigma ^{-1} (p-q) d(p,q)=(p−q)TΣ−1(p−q)
2.3.2 常见相似性
- 余弦相似性 s ( p , q ) = c o s ( p , q ) s(p, q) = cos(p, q) s(p,q)=cos(p,q)
- 相关系数(需要先进行向量归一化) s ( p , q ) = p ′ . q ′ s(p, q) = p' . q' s(p,q)=p′.q′
2.3.3 二进制向量的相似性
- SMC(一致比率) S M C = ( M 11 + M 00 ) / ( M 00 + M 01 + M 10 + M 11 ) SMC = (M_{11} + M_{00}) / (M_{00} + M_{01} + M_{10} + M_{11}) SMC=(M11+M00)/(M00+M01+M10+M11)
- J(去除全0的一致比率) J = ( M 11 ) / ( M 01 + M 10 + M 11 ) J = (M_{11}) / (M_{01} + M_{10} + M_{11}) J=(M11)/(M01+M10+M11)
2.3.2 距离的特性
- 正定性
- 对称性
- 满足三角不等式
3 数据探测
3.1 目的
- 直观了解数据的特点
- 帮助选择数据处理的工具
3.2 数字特性Summary Statistics
- 众数Mode
- 百分位数Percentile: x p x_p xp表示数据集中有 p % p \% p%的数据小于 x p x_p xp
- 均值Mean & 中位数Median : 衡量数据位置Location
- 极差Range & 方差Variance: 衡量数据的散布Spread
- 协方差矩阵Covariance: C o v ( x i , x j ) = 1 / ( m − 1 ) ∗ ∑ k = 1 m ( x i ( k ) − x i ˉ ) ( x j ( k ) − x j ˉ ) Cov(x_i, x_j) = 1 / (m - 1) * \sum_{k=1}^m (x_i^{(k)} - \bar{x_i})(x_j^{(k)} - \bar{x_j}) Cov(xi,xj)=1/(m−1)∗∑k=1m(xi(k)−xiˉ)(xj(k)−xjˉ)
3.3 可视化
- 直方图Histogram
- 可以表现数据的频率分布信息
- 箱图Box Plot
- 可以表现四分百分位数信息
- 散点图Scatter Plot
- 属性值决定点的位置
- 可以通过数据点的大小、形状、颜色表示其他属性
- 等高线图Contour Plot
- 相似的属性值被划分到同一区域,等值线形成了区域边界
- 矩阵图Matrix Plot
- 当数据按照类标签排序后效果比较好
- 常用于可视化距离/相似度矩阵
- 属性值需要规范化
- 平行坐标图Parallel Coordinate
- 常用于展现高维数据
- 横轴各列为属性,纵轴为属性值,一个数据对象表示为一条线
- 星图Star Plot
- 和平行坐标图类似,但是对象线条组成了多边形
4 分类
4.1 决策树
4.1.1 实用构建算法
- Hunt‘s Algorithm
- CART
- ID3, C4.5
- SLIQ, QPRINT
4.1.2 一般构建算法
D t D_t Dt 是抵达决策节点t的数据集合
- 如果 D t D_t Dt包含的数据全部为同一类 y t y_t yt,则将该点作为叶子节点,标注为 y t y_t yt
- 如果 D t D_t Dt为空, 则将该节点作为叶子结点,标注为 y d e f a u l t y_{default} ydefault
- 如果 D t D_t Dt$包含多类数据,则按照某一属性将数据划分为多个子集,对应于多个子节点
4.1.3 属性划分方法
- 标称Norminal、序数Order:将属性值的取值集合划分成多组即可
- 连续Continus:离散化后划分;选取某一阈值进行二分 (A < v) or (A >= v)
4.1.4 属性最佳划分策略
选取使得划分后数据单纯度最高(混乱度最低)的划分策略
- 基尼系数Gini Index
- 节点 G I N I ( t ) = 1 − ∑ j [ p ( j ∣ t ) ] 2 GINI(t) = 1 - \sum_j [p(j | t)]^2 GINI(t)=1−∑j[p(j∣t)]2
- 划分 G I N I S P L I T ( t ) = ∑ i ∈ s o n ( t ) [ n i / n t ∗ G I N I ( i ) ] GINI_{SPLIT}(t) = \sum_{i \in son(t)} [{n_i} / {n_t} * GINI(i)] GINISPLIT(t)=∑i∈son(t)[ni/nt∗GINI(i)]
- 熵Entropy
- 节点 E n t r o p y ( t ) = − ∑ j [ p ( j ∣ t ) ∗ l o g p ( j ∣ t ) ] Entropy(t) = - \sum_j [p(j | t) * log p(j | t)] Entropy(t)=−∑j[p(j∣t)∗logp(j∣t)]
- 划分 E n t r o p y S P L I T ( t ) = ∑ i ∈ s o n ( t ) [ n i / n t ∗ E n t r o p y ( i ) ] Entropy_{SPLIT}(t) = \sum_{i \in son(t)} [{n_i} / {n_t} * Entropy(i)] EntropySPLIT(t)=∑i∈son(t)[ni/nt∗Entropy(i)]
- 误分类误差Misclassification error
- 节点 E r r o r ( t ) = 1 − m a x j p ( j ∣ t ) Error(t) = 1 - max_j p(j | t) Error(t)=1−maxjp(j∣t)
4.1.5 何时停止拓展
- 所有数据都为同一类 ; 所有数据都有着相似的属性
- 提前终止
4.1.6 算法评价
- 优点:构造简单,预测迅速,在属性较少时解释性好
- 缺点:???
4.2 朴素贝叶斯
利用贝叶斯公式 P ( C ∣ X ) = P ( X ∣ C ) ∗ P ( C ) P ( X ) P(C | X) = \frac{P(X|C) * P(C)} {P(X)} P(C∣X)=P(X)P(X∣C)∗P(C), 找出概率最大的C
4.2.1 算法要点
- 在各个类C进行概率比较式, P ( X ) P(X) P(X)都包含在其中,因此可以忽略这一项,只比较分子
- 似然函数的合成 P ( X ∣ C ) = Π j P ( X j ∣ C ) = P ( X 1 ∣ C ) ∗ P ( X 2 ∣ C ) ∗ . . . P(X|C) = \Pi_j P(X_j | C) = P(X_1 | C) * P(X_2 | C) * ... P(X∣C)=ΠjP(Xj∣C)=P(X1∣C)∗P(X2∣C)∗...
-
P
(
X
i
∣
C
)
P(X_i | C)
P(Xi∣C)的计算
- 对于离散数据,可以用频率估计概率
- 对于连续数据,基于高斯分布进行概率计算 P ( X i ∣ C ) = g ( x i , μ C , σ C ) P(X_i | C) = g(x_i, \mu_C, \sigma_C) P(Xi∣C)=g(xi,μC,σC)
4.2.2 算法评价
- 优点:实现简单,效果良好
- 缺点:要求各个属性相互独立
4.3 模型评价
-
混淆矩阵Confusion Matrix
-
代价矩阵Cost Matrix
-
准确率Accuracy = (TP + TN) / (TP + TN + FP + FN) 预测正确的比率
-
精确率Precision = TP / (TP + FP) 找到的正例正确的比率
-
召回率Recall = TP / (TP + FN) 正例被找到的比率
-
F分数 = 2pr / (p + r)
-
学习曲线Learning Curve (Sample Size —> Accuracy)
-
ROC曲线ROC Curve (FPR —> TPR) FPR=FP / (FP + TN), TPR = TP / (TP + FN)
5 聚类
5.1 聚类方法Clustering
- 划分聚类:将数据划分为互不重叠的子集,一个点只属于某一类
- 层次聚类:将嵌套的类簇以层次树的形式构建
5.2 类簇种类Clusters
- 明显分离的Well-Separated
- 基于中心的Center-based
- 基于近邻的Contiguous
- 基于密度的Density-based
- 被目标函数描述的Described by an Objective Function
5.3 K-means
5.3.1 算法流程
-
选择K个点作为初始质心
-
repeat
- 关联每个点和它最邻近的质心以形成K个类簇
- 重新计算每一个类簇的质心
until K个质心不再改变
5.3.2 目标函数 & 效果评估
- 误差平方和 S S E = ∑ k = 1 K ∑ x ∈ C k d i s t ( m k , x ) 2 SSE = \sum_{k=1}^K\sum_{x \in C_k} dist(m_k, x)^2 SSE=∑k=1K∑x∈Ckdist(mk,x)2
- 我们希望在K较小时寻找尽可能小的SSE
5.3.3 算法评价
- 优点:实现简单,运行迅速
- 缺点:
- 需要指定K以及初始化参数
- 初始化的情况对算法结果影响很大
- 异常点对于算法结果影响很大
- 难以处理多尺寸、多密度、非球状的类簇聚类问题
5.3.4 算法改进-二分K-means
-
初始化类簇列表,其中仅有一个包含全部节点的类簇
-
repeat
- 从类簇列表中选择一个类簇
- repeat(iter_num)
- 执行K-means算法基础版本,将选中的类簇二分
- 选择SSE最小的一种二分类簇加入到类簇列表中
until 类簇列表中包含K个类簇
5.4 层次聚类
5.4.1 聚类方法
- 聚集式Agglomerative(从底向上归并)
- 分裂式Divisive (自顶向下切分)
5.4.2 类簇相似性/距离的衡量
- MIN / Single Link (单链)
- 可处理非椭圆类簇
- 对噪声和异常值很敏感
- MAX / Complete Link (全链)
- 倾向于球形类簇
- 会破坏大尺寸类簇
- 对噪声和异常值不太敏感
- Group Average (组平均)
- 倾向于球形类簇
- 对噪声和异常值不太敏感
5.4.3 聚集式-算法流程
-
令每个数据点单独成为一个类簇
-
repeat
- 计算类簇之间的距离矩阵Proximity Matrix
- 归并两个最近的类簇
until 仅剩下一个类簇
5.5 DBSCAN
5.5.1 核心概念
-
密度:该点半径内点的个数
-
核心点(高密度点):在其半径Eps内有多于阈值MinPts个数的点
-
边界点(核心区低密度点):非核心点,且处于某一核心点半径内
-
噪声点(非核心区低密度点):除核心点和边界点之外的点
-
直接密度可达DDR:p点在核心点q的半径内
-
密度可达DR:p点、q点之间存在一个传递链,链上相邻点都直接密度可达
-
密度相连DC:存在中间点o,使得o点与p点和q点都密度可达
5.5.2 算法流程
- 设定参数Eps、MinPts
- 将所有点标记为核心点、边界点、噪声点,并删除噪声点
- 在距离在Eps内的所有核心点之间赋予一条边
- 每组连通的核心点形成一个类簇,将边界点指派到一个与之关联的核心点的类簇中
5.5.3 算法评价
- 优点:
- 对噪声不敏感
- 能处理不同形状、尺寸的类簇
- 缺点:难以处理多密度类簇、高维数据
5.5.4 聚类效果衡量
- 外部指标:用于在有外部类型标签的情况下评估聚类效果
- 内部指标:用于在没有外部信息的情况下评估聚类效果
- 相对指标:用于比较多个聚类方法
6 关联规则挖掘
6.1 目标
- 从给定的一组事务中寻找某些依赖规则,使得可以通过一些项目的出现来预测另外一些项目的出现
- 寻找支持度、置信度大于给定阈值的所有关联规则
6.2 基本概念
- 项集Itemset:包含有多项的集合
- 支持度计数Support count( σ \sigma σ):某一项集的出现次数
- 支持度Support:某一项集的出现次数比例
- 频繁项集Frequent Itemset:支持度大于阈值minsup的某一项集
- 关联规则Association Rule:一个项集到另一个项集的映射 X –> Y
- 关联规则评价标准
- 支持度Support(s):X、Y合并项集的支持度
- 置信度Confidence©:在包含X的事务中包含Y的比例
6.3 挖掘过程
- 设定参数minsup、minconf
- 生成频繁子集:寻找所有支持度大于阈值的项集
- 生成关联规则:从频繁项集中生成高置信度的关联规则,每一个规则都是对应频繁子集的二划分
6.3 寻找频繁子集
6.3.1 寻找过程
- 构建项目Item的子集树
- 利用Apriori算法进行剪枝
- 构造候选项集的哈希树来减少比较次数
6.3.2 Apriori 原理
- 如果一个项集是频繁的,那么它的所有子集都是频繁的。
6.3.3 Apriori 算法
-
令k=1
-
生成1-频繁项集
-
repeat
- 从k-频繁项集生成 (k+1)-候选项集
- 剪掉那些不频繁k-项集的后代项集
- 扫描数据库,计算每个候选项集的支持度
- 将支持度低于阈值的项集滤除
until 没有新的候选项集生成
6.3.3 频繁项集的紧致表示
- 极大项集:直接超集都不频繁的项集
- 闭项集:直接超集的支持度都比它自己小的项集