机器学习与数据挖掘

第一章 引言

0. 什么是数据挖掘

数据挖掘是从大量数据中挖掘出有趣模式和知识的过程或方法,其中涉及机器学习、统计数据和数据库系统交叉处的方法。

1. 数据中的知识发现包括哪几个步骤

  • business understanding(业务理解)
  • data understanding(数据理解)
  • data preparation(数据准备)
  • modeling(建模)
  • evaluation(评估)
  • development(部署)

2. 数据挖掘的应用

商务智能、Web搜索、生物信息学、卫生保健信息学、金融、数字图书馆和数字政府等。

第二章 学习的可行性

1. Hoeffding’s Inequality(霍夫汀不等式)

P ( ∣ v − μ ∣ > ϵ ) ≤ 2 e − 2 ϵ 2 N P(| v- \mu | > \epsilon) \leq 2 e^{-2 \epsilon^2 N} P(vμ>ϵ)2e2ϵ2N

霍夫丁不等式说明,抽样比例 v v v与总体比例 μ \mu μ的差距大于某个边距值 ϵ \epsilon ϵ的概率,小于等于一个由 ϵ \epsilon ϵ和样本大小 N N N得到的关系式的值。

2. 用霍夫汀不等式说明学习的可行性

在统计学中我们通过霍夫丁不等式来限定抽样集与总体集中的频率与概率关系。通过将其推广到机器学习中,可以得到类似的单个hypothesis的 E i n E_{in} Ein E o u t E_{out} Eout差距限定不等式。然而当考虑到一组hypothesis数量多的假设集时,即使对单个hypothesis遇到bad data使其 E i n E_{in} Ein E o u t E_{out} Eout差别比较大的概率十分低,但总体而言其中有一个或几个hypothesis遇到bad data使其 E i n E_{in} Ein E o u t E_{out} Eout差别较大。我们将假设集中假设的数量 M M M通过union bound引入不等式中,最终得到 P D ( B A D D ) ≤ 2 M e − 2 ϵ 2 N P_D(BAD D) \leq 2M e^{-2 \epsilon^2 N} PD(BADD)2Me2ϵ2N。在有限的假设数量时,只要样本数量 N N N足够,我们依然能让这组data保证取到的hypothesis的 E i n E_{in} Ein E o u t E_{out} Eout差距不大,从而可以挑选 E i n E_{in} Ein最小的hypothesis,也即 E o u t E_{out} Eout最小的hypothesis,作为结果。

第三章 数据和数据预处理

1. 属性类型和可进行的操作

属性类型 描述 操作 举例
标称属性(nominal) 仅仅是不同的名字,用于区分属性( = , ≠ =, \neq =,= 众数,熵,列联相关, χ 2 \chi^2 χ2检验 邮政编码,员工ID,性别
序数属性(ordinal) 序数属性的值可以确定对象的序( < , > <, > <,> 中值,百分位 矿石硬度(好,较好,最好)
区间属性(interval) 值之间的差是有意义的( + , − +, - +, 均值,标准差,皮尔逊相关 日历日期,摄氏温度
比率属性(ratio) 差和比率都有意义( × , ÷ \times, \div ×,÷ 几何平均,调和平均,百分比变差 质量,长度,绝对温度

标称属性和序数属性统称为分类的或定性的属性,区间属性和比率属性统称为定量的或数值属性。

2. 非对称属性

属性只有两个类别或状态,用0和1编码。如果他的两种状态具有同等的价值并且有相同的权重,则称为对称的二元属性,比如男女性别。如果其状态的结果不是同样重要的,其中更关注1编码的结果(通常是稀疏的),称其为非对称的二元属性,比如covid-19核酸检测的阴阳性结果。

3. 相似性和相异性度量

3.1 数据对象之间的相异度

  • 欧几里得距离 d = Σ k = 1 n ( p k − q k ) 2 d=\sqrt {\Sigma_{k=1}^{n}(p_k-q_k)^2} d=Σk=1n(pkqk)2

  • 闵可夫斯基距离 d = ⟮ Σ k = 1 n ∣ ( p k − q k ) ∣ r ⟯ 1 r d=\lgroup \Sigma_{k=1}^{n}|(p_k-q_k)|^r\rgroup^{\frac{1}{r}} d=Σk=1n(pkqk)rr1是欧氏距离的推广。当 r = 1 r=1 r=1时,称为曼哈顿距离( L 1 L_1 L1范数);当 r = 2 r=2 r=2时,称为欧几里得距离( L 2 L_2 L2范数);当 r = ∞ r=\infty r=时,称为切比雪夫距离(上确界距离, L m a x L_{max} Lmax范数, L ∞ L_\infty L范数),它是对象属性间的最大距离。

  • 马氏距离 d m ( x ) = ( x − μ ) Σ − 1 ( x − μ ) T d_m(x) = \sqrt{(x-\mu) \Sigma^{-1} (x-\mu)^T} dm(x)=(xμ)Σ1(xμ)T ,其中 x x x是一个均值为 μ \mu μ的协方差矩阵为 Σ \Sigma Σ的多变量矢量。对两个服从统一分布并且协方差矩阵为 Σ \Sigma Σ的变量(样本) p p p q q q来说,其差异程度可以由马氏距离表示为 d m ( p , q ) = ( p − q ) Σ − 1 ( p − q ) T d_m(p,q)= \sqrt{(p-q) \Sigma^{-1} (p-q)^T} dm(p,q)=(pq)Σ1(pq)T 。马氏距离排除了变量之间的相关性的干扰,且尺度无关(不受量纲影响)。

3.2 二元数据的相似性度量

  • 简单匹配系数(SMC): S M C = f 11 + f 00 f 00 + f 10 + f 01 + f 11 SMC = \frac{f_{11}+f_{00}}{f_{00}+f_{10}+f_{01}+f_{11}} SMC=f00+f10+f01+f11f11+f00

  • Jaccard系数: J = f 11 f 10 + f 01 + f 11 J = \frac{f_{11}}{f_{10}+f_{01}+f_{11}} J=f10+f01+f11f11

  • 广义Jaccard系数(Tinamoto系数): E J ( p , q ) = p ⋅ q ∥ p ∥ 2 + ∥ q ∥ 2 − p ⋅ q EJ(p,q) = \frac{p \cdot q}{\parallel p \parallel ^2 + \parallel q \parallel ^2 - p \cdot q} EJ(p,q)=p2+q2pqpq

  • 余弦相似度: c o s ( x , y ) = x ⋅ y ∥ x ∥ × ∥ y ∥ cos(x,y) = \frac{x \cdot y}{\parallel x \parallel \times \parallel y \parallel} cos(x,y)=x×yxy

  • 相关系数: r ( X , Y ) = Cov ⁡ ( X , Y ) Var ⁡ [ X ] Var ⁡ [ Y ] r(X, Y)=\frac{\operatorname{Cov}(X, Y)}{\sqrt{\operatorname{Var}[X] \operatorname{Var}[Y]}} r(X,Y)=Var[X]Var[Y] Cov(X,Y) r ( X , Y ) = Cov ⁡ ( X , Y ) σ X σ Y r(X, Y)=\frac{\operatorname{Cov}(X, Y)}{{\sigma_X \sigma_Y}} r(X,Y)=σXσYCov(X,Y)

3.3 组合异种属性的相似度

  • 在第 k k k个属性上,计算相似度 s k ( p , q ) s_k(p,q) sk(p,q),在区间 [ 0 , 1 ] [0,1] [0,1]中。

  • 对于第 k k k个属性,定义一个指示变量 δ k \delta_k δk,如果第 k k k个属性是非对称属性,并且两个对象在该属性的值都是0,或者如果有一个对象的第 k k k个属性具有缺失值,则 δ k = 0 \delta_k = 0 δk=0,否则 δ k = 1 \delta_k = 1 δk=1

  • 总相似度为 s i m i l a r i t y ( p , q ) = Σ k = 1 n δ k s k ( p , q ) Σ k = 1 n δ k similarity(p,q) = \frac{\Sigma_{k=1}^{n}\delta_k s_k (p,q)}{\Sigma_{k=1}^{n}\delta_k} similarity(p,q)=Σk=1nδkΣk=1nδksk(p,q)

  • 当某些属性更重要时,可以使用不同权值对不同属性的相似度进行加权,则上式变为 s i m i l a r i t y ( p , q ) = Σ k = 1 n w k δ k s k ( p , q ) Σ k = 1 n δ k similarity(p,q) = \frac{\Sigma_{k=1}^{n} w_k \delta_k s_k (p,q)}{\Sigma_{k=1}^{n}\delta_k} similarity(p,q)=Σk=1nδkΣk=1nwkδksk(p,q)

4. 数据预处理

主要任务:数据清理(data cleaning)、数据集成(data integration)、数据规约(data reduction)、数据变换(data transformation)、数据离散化(data discretization)。

4.1 数据清理

4.1.1 填充缺失值(missing data)

  • 忽略元组
  • 人工填写缺失值
  • 使用一个全局常量填充缺失值
  • 使用属性的中心度量(如均值和中位数)填充缺失值
  • 使用与给定元组属同一类的所有样本的属性均值或中位数填充缺失值
  • 使用最可能的值填充缺失值

4.1.2 光滑噪声(noise)

  • 分箱(binning)

    • 等宽分箱:将变量的取值范围分为 k k k个等宽的区间,每个区间当作一个分箱。
    • 等频(深)分箱:分为 k k k个区间,每个区间中的样本数大体相同。
    • 分箱之后,可以使用箱均值平滑,箱中位数平滑,箱边界平滑(箱中的每一个值取离它最近的边界值,即最大值或最小值,与最小值的差小则取最小值,与最大值的差小则取最大值)。
  • 回归(regression)

    • 用一个函数拟合数据来光滑数据

4.1.3 识别离群点(outlier)

  • 聚类(cluster)

    • 落在簇之外的值为离群点
  • 曲线拟合

  • 给定模型上的假设检验

4.1.4 纠正数据中的不一致

4.2 数据集成

数据集成将多个数据源的数据合并,存放在一个一致的数据存储中,如数据仓库中。

4.2.1 实体识别问题

数据分析者或计算机如何才能确信一个数据库中的某个属性与另一个数据库中的某个属性指的是相同的属性。

4.2.2 冗余和相关分析

一个属性如果可以由另一个或另一组属性导出,则这个属性可能就是冗余的。有些冗余可以被相关分析检测到。对于分类的属性,使用 χ 2 \chi ^2 χ2(卡方)检验。对于数值属性(numerical),使用相关系数和协方差。

  • χ 2 检 验 \chi ^2检验 χ2

    • 假设对两个属性 A A A B B B A A A c c c个不同的值, B B B r r r个不同的值,可以得到一个 c × r c \times r c×r的列联表。令 ( A i , B j ) (A_i,B_j) (Ai,Bj)表示属性 A A A取值 a i a_i ai、属性 B B B取值 b j b_j bj的联合事件, χ 2 \chi ^2 χ2值可以通过公式计算
    • χ 2 = Σ i = 1 c Σ j = 1 r ( o i j − e i j ) 2 e i j \chi ^2 = \Sigma_{i=1}^{c} \Sigma_{j=1}^{r} \frac{(o_{ij} - e_{ij})^2}{e_{ij}} χ2=Σi=1cΣj=1reij(oijeij)2。其中, o i j o_{ij} oij是联合事件 ( A i , B j ) (A_i,B_j) (Ai,Bj)的观测频度(即实际计数), e i j e_{ij} eij ( A i , B j ) (A_i,B_j) (Ai,Bj)的期望频度。
    • e i j e_{ij} eij的计算公式为 e i j = c o u n t ( A = a i ) × c o u n t ( B = b j ) n e_{ij} = \frac{count(A=a_i) \times count(B=b_j)}{n} eij=ncount(A=ai)×count(B=bj)。其中, n n n是元组的个数, c o u n t ( A = a i ) count(A=a_i) count(A=ai) A A A上具有值 a i a_i ai的元组个数, c o u n t ( B = b j ) count(B=b_j) count(B=bj) B B B上具有值 b i b_i bi的元组个数。
    • 对卡方值贡献最大的单元是实际计数和期望计数很不相同的单元。
    • 卡方检验假设 A A A B B B是独立的,检测基于显著水平,具有自由度 ( c − 1 ) × ( r − 1 ) (c-1) \times (r-1) (c1)×(r1)
  • 协方差

    • c o v ( A , B ) = E ( ( A − A ‾ ) ( B − B ‾ ) ) = Σ i = 1 n ( a i − A ‾ ) ( ( b i − B ‾ ) n = E ( A ⋅ B ) − A ‾ B ‾ cov(A,B) = E((A-\overline{A})(B-\overline{B})) = \frac{\Sigma_{i=1}^{n} (a_i - \overline{A}) ((b_i - \overline{B})}{n} = E(A \cdot B) - \overline{A} \overline{B} cov(A,B)=E((AA)(BB))=nΣi=1n(aiA)((biB)=E(AB)AB
  • 相关系数(皮尔森相关系数)

    • 公式为 r A , B = Σ i = 1 n ( a i − A ‾ ) ( ( b i − B ‾ ) n σ A σ B = Σ i = 1 n ( a i b i ) − n A ‾ B ‾ n σ A σ B r_{A,B} = \frac{\Sigma_{i=1}^{n} (a_i - \overline{A}) ((b_i - \overline{B})}{n \sigma_A \sigma_B}=\frac{\Sigma_{i=1}^{n} (a_i b_i) - n \overline{A} \overline{B}}{n \sigma_A \sigma_B} rA,B=nσAσBΣi=1n(aiA)((biB)=nσAσBΣi=1n(aibi)nAB
    • 通过协方差的定义,相关系数公式还可以写为 r A , B = Cov ⁡ ( A , B ) σ A σ B r_{A,B}=\frac{\operatorname{Cov}(A, B)}{{\sigma_A \sigma_B}} rA,B=σAσBCov(A,B)
    • r A , B ∈ [ − 1 , + 1 ] r_{A,B} \in [-1,+1] rA,B[1,+1]。如果 r A , B > 0 r_{A,B}>0 rA,B>0,则 A A A B B B是正相关的,该值越大,相关性越强。如果 r A , B = 0 r_{A,B}=0 rA,B=0,则 A A A B B B是不相关的。
    • 独立可推出不相关,但不相关并不能推出独立。不相关是指两个随机变量没有近似的线性关系,而独立是指两个变量没有任何关系。

4.3 数据归约

数据归约可以得到数据集的简约表示,它小得多,在规约后的数据集上挖掘将产生相同或几近相同的分析结果。

可以使用的策略:数据聚合(data aggregation)、数据压缩(data compression)、数量规约(numerosity reduction)、维归约(dimensionality reduction)、离散化和概念层次生成(Discretization and concept hierarchy generation)等。

4.3.1 数据聚合

把两个或者多个属性组合成单个属性。

4.3.2 数据压缩

使用变换得到原数据的规约表示或压缩表示。如果原数据可以从压缩后的数据中重构而不损失信息则称该数据归约是无损的,如果只能近似的重构原数据,则该数据归约称为有损的。

4.3.3 数量规约

用替代的、较小的数据表示替换原数据,分为参数化方法和非参数化方法。参数方法使用模型估计数据,因此只需要存放模型参数(离群点可能也需要存放),回归模型就是一个例子。非参数化方法包括直方图(histograms)、聚类(clustering)、抽样(sampling)等。

4.3.4 维归约

特征选择的方法:

  • 嵌入法:与具体算法有关,不讨论。
  • 过滤法:使用某种独立于数据挖掘任务的方法,在数据挖掘算法运行前进行特征选择。
  • 包裹法:从初始特征集合中不断的选择特征子集,训练学习器,根据学习器的性能来对子集进行评价,直到选择出最佳的子集。

过滤法(Filters):

  • 优点

    • 执行快(没有在数据集上进行迭代计算)
    • 可以泛化(由于过滤器评估数据的内在属性,而不是评估它们与特定分类器的交互作用,所以它们的结果表现出更一般性)
  • 缺点

    • 倾向于选择较大的子集(由于过滤法的目标函数通常是单调的,过滤法倾向于选择全特征集作为最优解)
    • 这使得用户随意选择特征的数量

包裹法(Wrappers):

  • 优点

    • 准确性:包装法通常比过滤法获得更好的识别率,因为它们根据分类器和数据集之间的特定交互进行调整
    • 泛化能力:包装法有一种避免过度拟合的机制,因为它们通常使用预测精度的交叉验证度量
  • 缺点

    • 执行缓慢:由于包装法必须为每个特征子集训练一个分类器(如果使用交叉验证,则为多个分类器),因此对于计算密集型方法,该方法可能变得不可行
    • 缺乏通用性:解决方案缺乏通用性,因为它与评估函数中使用的分类器的偏差有关。“最优”特征子集将特定于所考虑的分类器

五种不同的特征选择方法:

  • 顺序前向选择(SFS)

    • 从一个空集合开始,逐渐加入属性(适合属性少的例子);不能删除已加入的属性
  • 顺序后向选择(SBS)

    • 从一个包含全部属性的集合开始,逐渐删除无用的特征;删除后无法还原(不可逆性)
  • 双向搜索

    • 同时使用SFS和SBS,每一次使用SFS添加一个最好的特征,使用SBS删除一个最差的特征,直至二者相遇。为了防止双向搜索不相遇的问题,则要求SFS填入的属性不属于SBS删除的属性
  • 顺序浮动前向选择

    • 可以删除以前添加的属性
  • 顺序浮动后向选择

    • 可以增加以前删除的属性

4.4 数据变换与数据离散化

数据变换策略包括:光滑(smoothing)、属性构造、聚集、规范化、离散化等。数据预处理任务之间存在着重叠,因此这一部分只讨论规范化和离散化。

4.4.1 规范化

规范化可以避免对度量单位选择的依赖性。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性和具有较小初始值域的属性相比权重过大。

  • 最小-最大规范化

    • 假设 m i n A min_A minA m a x A max_A maxA是属性 A A A的最小值和最大值,要将属性 A A A规范化到区间 [ n e w _ m i n A , n e w _ m a x A ] [new \_ min_A, new \_ max_A] [new_minA,new_maxA]中, a i a_i ai的规范后结果为
    • a i ′ = a i − m i n A m a x A − m i n A × ( n e w _ m a x A − n e w _ m i n A ) + n e w _ m i n A a_i \prime = \frac{a_i - min_A}{max_A - min_A} \times (new \_ max_A - new \_ min_A) + new \_ min_A ai=maxAminAaiminA×(new_maxAnew_minA)+new_minA
  • z − s c o r e z-score zscore规范化

    • a i ′ = a i − A ‾ σ A a_i \prime = \frac{a_i - \overline{A}}{\sigma_A} ai=σAaiA
  • 小数定标规范化

    • a i ′ = a i 1 0 j a_i \prime = \frac{a_i}{10^j} ai=10jai,其中 j j j是使得 m a x ( ∣ a i ′ ∣ ) < 1 max(|a_i \prime |)<1 max(ai)<1的最小整数。

4.4.2 离散化

对数值数据进行离散化,根据不同的标准可以划分为监督的和非监督的、自顶向下的和自底向上的(分裂的和合并的)。

常用的方法有:

  • 直方图分析(自顶向下的,分裂的,非监督的)
  • 聚类分析(自顶向下的或自底向上的、分裂的或合并的,非监督的)
  • 基于熵的离散化(自顶向下的,分裂的,监督的)
  • 通过 χ 2 \chi ^2 χ2分析合并区间(自底向上的,合并的,监督的)
  • 自然分割(自顶向下的,分裂的,非监督的)
    • 3-4-5规则可以用于将数值数据划分成相对一致、“自然的”区间。一般地,该规则根据最重要的数字上(比如数字的最高位)的值区域,递归地、逐层地将给定的数据区域划分为3、4 或5 个等长的区间。
    • 以最高位数字举例来说,如果在所有数字的最高位覆盖3, 6, 7或9个不同的值,则将数据分成3段;如果在所有数字的最高位覆盖2, 4, 8个不同的值,则将数据分成4段;如果在所有数字的最高位覆盖1, 5, 10个不同的值,则将数据分成5段。

第四章 决策树学习

1. 决策树学习的基本思想

决策树是一个树结构,其每一个非叶节点表示一个属性上的测试,每个分支代表该测试的一个输出,每个叶节点存放一个类别。决策树学习的基本思想是对所有的属性进行评估,选择一个最好的属性作为树的根节点,然后为该属性的每个可能值创建划分节点,并将数据集按取值划分到不同的节点上,然后用与每个子结点相关联的训练实例重复整个过程,以选择树中该点处要测试的最佳属性。

2. 如何选择最佳划分

为了决定一个最佳划分,需要对节点进行不纯性度量,理想的情况是每个分区应当是纯的(落在一个给定分区的所有元组都属于相同的类)。

不纯性度量包括基尼(Gini Index)指数、熵(Entropy)和分类错误率(Misclassification error)等。

  • 基尼指数

    • 一个节点的基尼指数定义为 G i n i ( n o d e ) = 1 − Σ i = 1 n p i 2 Gini(node) = 1 - \Sigma_{i=1}^{n} p_i^2 Gini(node)=1Σi=1npi2,其中 p i p_i pi n o d e node node中元组属于 C l a s s i Class_i Classi类的概率。
    • 如果将一个节点 D D D分裂成了 k k k个部分(子节点),对这个划分来说, D D D的基尼指数为 G i n i s p l i t ( D ) = Σ i = 1 k n i n G i n i ( i ) Gini_{split}(D) = \Sigma_{i=1}^{k} \frac{n_i}{n}Gini(i) Ginisplit(D)=Σi=1knniGini(i),其中 n i n_i ni是属于某一个子节点的元组的个数, n n n是属于节点 D D D的元组数。
    • 对于离散属性来说,选择分裂后的基尼指数小于未分裂的基尼指数且基尼指数最小的划分。
    • 对于连续属性来说,对属性的可能取值进行排序,然后将每对相邻值的中点作为可能的分裂点,如果是二元划分,则选择产生最小基尼指数的点作为该属性的分裂点。对于分裂点 s p l i t _ p o i n t split \_ point split_point来说,它产生的两个数据子集是 ≤ s p l i t _ p o i n t \leq split \_ point split_point > s p l i t _ p o i n t > split \_ point >split_point
    • 基尼指数应用于CART(Classification and Regression Trees)算法中。
    • E n t r o p y ( n o d e ) = − Σ i = 1 n p i l o g 2 ( p i ) Entropy(node) = - \Sigma_{i=1}^{n} p_i log_2(p_i) Entropy(node)=Σi=1npilog2(pi),其中 p i p_i pi n o d e node node中元组属于 C l a s s i Class_i Classi类的概率。
    • 熵越大表示区分类别需要的信息越多,则节点内的纯度越低。
    • 信息增益: G a i n s p l i t ( A ) = E n t r o p y ( n o d e ) − ( Σ i = 1 k n i n E n t r o p y ( i ) ) Gain_{split}(A) = Entropy(node) - (\Sigma_{i=1}^k \frac{n_i}{n} Entropy(i)) Gainsplit(A)=Entropy(node)(Σi=1knniEntropy(i)),表示将一个节点按属性 A A A分为 k k k个部分后得到的信息增益,选择具有最大信息增益的属性进行划分。信息增益应用于ID3算法中。(倾向于产生大量的分区,使每一个值有一个分区,这样每一个分区都是纯的,但这种划分没用。)
    • 信息增益率: G a i n R a t e ( A ) = G a i n ( A ) S p l i t I n f o A ( D ) GainRate(A) = \frac{Gain(A)}{SplitInfo_A(D)} GainRate(A)=SplitInfoA(D)Gain(A),其中 S p l i t I n f o A ( D ) = − Σ i = 1 k n i n l o g 2 ( n i n ) SplitInfo_A(D) = -\Sigma_{i=1}^k \frac{n_i}{n} log_2(\frac{n_i}{n}) SplitInfoA(D)=Σi=1knnilog2(nni)。信息增益率应用于C4.5算法中。
  • 分类错误率

    • E r r o r = 1 − m a x ( p i ) Error = 1 - max(p_i) Error=1max(pi),其中 p i p_i pi n o d e node node中元组属于 C l a s s i Class_i Classi类的概率。

3. 过拟合和欠拟合

  • 过拟合

    • 过拟合是指模型把数据学习的太彻底,以至于把噪声或没有代表性的数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好的识别数据,即不能正确的分类,模型的泛化能力差。
    • 引起过拟合的原因包括数据集中有噪声数据或训练样例太少以至于不能产生目标函数的有代表性的采样。
    • 解决决策树学习中过拟合的方法:预剪枝(及早停止树增长)和后剪枝(允许树过度拟合数据,之后对树进行修剪)。
  • 欠拟合

    • 欠拟合是指模型的拟合程度不高,模型没有很好地捕捉到数据特征,不能够很好地拟合数据。

4. 缺失值对决策树的影响

  • 在选择分裂属性的时候,训练样本存在缺失值。(计算分裂损失减少值时,忽略特征缺失的样本,最终计算的值乘以比例(实际参与计算的样本数除以总的样本数))
  • 分类属性选择完成,对训练样本分类,发现样本存在属性缺失。(将该样本分配到所有子节点中,权重由1变为具有属性a的样本被划分成的子集样本个数的相对比率,计算错误率的时候,需要考虑到样本权重)
  • 训练完成,给测试集样本分类,存在缺失值。(分类时,如果待分类样本有缺失变量,而决策树决策过程中没有用到这些变量,则决策过程和没有缺失的数据一样;否则,如果决策要用到缺失变量,决策树也可以在当前节点做多数投票来决定(选择样本数最多的特征值方向)。)

5. 混淆矩阵(confusion matrix)

简记Actual Class为AC,Predicted Class为PC

  • TP: (true positive) AC=yes, PC=yes
  • FN: (false negative) AC=yes, PC=no
  • FP: (fasle positive) AC=no, PC=yes
  • TN: (true negative) AC=no, PC=no

准确率: A c c u r a c y = T P + T N T P + F N + F P + T N Accuracy = \frac{TP+TN}{TP+FN+FP+TN} Accuracy=TP+FN+FP+TNTP+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

F 1 F_1 F1分数: F 1 = 2 × P r e c i s i o n × R e c a l l P r e c i s i o n + R e c a l l F_1 = 2 \times \frac{Precision \times Recall}{Precision + Recall} F1=2×Precision+RecallPrecision×Recall

6. 评估分类器性能的方法

  • 保持方法(holdout),将数据集按比例划分为不相交的训练集和验证集
  • 随机二次抽样(random subsampling),多次重复保持方法
  • 交叉验证(cross validation)
    • k k k折交叉验证,把数据集分为大小相同的 k k k份,在每次运行时,选择其中的一份作为验证集,而其余的全作为训练集,该过程重复 k k k次,使得每份数据都用于验证恰好一次。
    • 多次 k k k折交叉验证,将 k k k折交叉验证重复多次,比如十次十折交叉验证。
    • 留一法(leave-one-out),令 k k k为数据集的大小,验证集中只有一个记录。优点是使用尽可能多的训练数据并且有效的覆盖了整个数据集;缺点是整个过程重复数据集大小次数,计算开销大,而且由于验证集中只有一个记录,所以性能估计的方差较大。
  • 分层抽样(stratified sampling)
  • 自助法(bootstrap)

ROC曲线,横坐标为假阳率 F P R = F P N FPR = \frac{FP}{N} FPR=NFP,纵坐标为真阳率 T P R = T P P TPR = \frac{TP}{P} TPR=PTP。AUC面积是ROC曲线下的面积,ROC曲线一般位于 y = x y=x y=x之上,所以AUC取值一般在 0.5 ∼ 1 0.5 \sim 1 0.51之间,值越大说明模型的性能越好。

第五章 神经网络

1. 神经网络如何学习

神经网络通过调整权值进行学习,从而能够正确的对训练数据进行分类,然后在测试阶段对未知数据进行分类。

特点:

  • 神经网络需要很长时间的训练。
  • 神经网络对噪声数据和不完整数据有很高的容忍度。
  • 神经网络的可解释性较差。

2. 梯度下降算法


  • 初始化每个 w i w_i wi为某个小的随机值
  • 遇到终止条件之前做以下操作
    • 初始化每个 Δ w i \Delta w_i Δwi为0
    • 对于每个训练样例 ( x ⃗ , t ) (\vec{x}, t) (x ,t),做
      • 把实例 x ⃗ \vec{x} x 输入到此单元,计算输出 o o o
      • 对于线性单元的每个权 w i w_i wi做: Δ w i ← Δ w i + η ( t − o ) x i \Delta w_i \leftarrow \Delta w_i + \eta(t-o) x_i ΔwiΔwi+η(to)xi
    • 对于线性单元的每个权 w i w_i wi,做 w i ← w i + Δ w i w_i \leftarrow w_i + \Delta w_i wiwi+Δwi

批量梯度下降(BGD):在每一次迭代时计算完所有的样本后进行梯度的更新。

随机梯度下降(SGD):在每一次迭代时每计算完一个样本后都进行梯度的更新。

3. 反向传播算法(BP算法)

逐层求出目标函数对各神经元权值的偏导数,构成目标函数对权值向量的梯度,作为修改权值的依据,网络的学习在权值修改过程中完成。误差达到所期望值时,网络学习结束。

第六章 贝叶斯分类方法

1. 根据贝叶斯理论,如何计算一个假设h成立的后验概率?

P ( h ∣ D ) = P ( D ∣ h ) P ( h ) P ( D ) P(h|D) = \frac{P(D|h)P(h)}{P(D)} P(hD)=P(D)P(Dh)P(h)

  • P ( h ) P(h) P(h) P ( D ) P(D) P(D)是先验概率, P ( h ) P(h) P(h)表示假设 h h h是一个正确假设的概率, P ( D ) P(D) P(D)表示在没有确定某一假设成立时 D D D的概率。
  • P ( D ∣ h ) P(D|h) P(Dh)表示假设 h h h成立的情况下,观察到数据 D D D的概率。
  • P ( h ∣ D ) P(h|D) P(hD)是要求的后验概率,即给定数据集 D D D上, h h h成立的概率。

2. 极大后验假设和极大似然假设

  • 极大后验假设(MAP)

    • 在假设集 H H H中寻找给定数据集 D D D时,最可能的假设 h h h,这样具有最大可能性的假设称为极大后验假设, h M A P = arg ⁡ max ⁡ h ∈ H P ( D ∣ h ) P ( h ) h_{MAP} = \underset{h \in H}{\arg \max } P(D \mid h) P(h) hMAP=hHargmaxP(Dh)P(h)
  • 极大似然假设(ML)

    • 假定 H H H中每个假设具有相同的先验概率,使 P ( D ∣ h ) P(D \mid h) P(Dh)最大的假设称为极大似然假设, h M L = arg ⁡ max ⁡ h ∈ H P ( D ∣ h ) h_{ML} = \underset{h \in H}{\arg \max } P(D \mid h) hML=hHargmaxP(Dh)

3. 最小描述长度的基本思想

为随机传送的消息设计一个编码,其中遇到消息 i i i的概率为 p i p_i pi,为了传输随机消息所需的传送位数最小,需要为可能性较大的消息赋予较短的编码。用最小描述长度解释极大后验假设就是使假设描述长度和给定假设下数据描述长度之和最小化的假设。 h m a x = arg ⁡ min ⁡ h ∈ H L C H ( h ) + L C D ∣ h ( h ) h_{max} = \underset{h \in H}{\arg \min } L_{C_H}(h) + L_{C_{D \mid h}}(h) hmax=hHargminLCH(h)+LCDh(h),其中 C H C_H CH C D ∣ h C_{D \mid h} CDh H H H的最优编码和给定 h h h D D D的最优编码。

4. 贝叶斯最优分类器

新实例的最可能分类可通过合并所有假设的预测得到,用后验概率加权。如果新实例的可能分类可取集合 V V V中的任一值 v j v_j vj,那么概率 P ( v j ∣ D ) P(v_j \mid D) P(vjD)表示新实例的正确分类为 v j v_j vj的概率: P ( v j ∣ D ) = Σ h i ∈ H P ( v j ∣ h i ) P ( h i ∣ D ) P(v_j \mid D) = \Sigma_{h_i \in H} P(v_j \mid h_i)P(h_i \mid D) P(vjD)=ΣhiHP(vjhi)P(hiD)。新实例的最优分类为使 P ( v j ∣ D ) P(v_j \mid D) P(vjD)最大的 v j v_j vj值,即 arg ⁡ max ⁡ v j ∈ V Σ h i ∈ H P ( v j ∣ h i ) P ( h i ∣ D ) \underset{v_j \in V}{\arg \max } \Sigma_{h_i \in H} P(v_j \mid h_i)P(h_i \mid D) vjVargmaxΣhiHP(vjhi)P(hiD)

贝叶斯最优分类器开销很大,需要计算每个假设的后验概率,一个可替代的、非最优的方法是Gibbs算法:按照当前的后验概率分布使用一随机抽取的假设。Gibbs算法的误分类率的期望值最多为贝叶斯最优分类器的两倍。

5. 朴素贝叶斯分类器

贝叶斯方法的新实例的分类目标是在给定描述实例的属性值 < a 1 , a 2 , . . . , a n > <a1,a2,...,an>下,得到最可能的目标值 v M A P = arg ⁡ max ⁡ v j ∈ V P ( v j ∣ a 1 , a 2 , . . . , a n ) v_{MAP} = \underset{v_j \in V}{\arg \max } P(v_j \mid a_1,a_2,...,a_n) vMAP=vjVargmaxP(vja1,a2,...,an),利用贝叶斯公式可以重写为 v M A P = arg ⁡ max ⁡ v j ∈ V P ( a 1 , a 2 , . . . , a n ∣ v j ) P ( v j ) P ( a 1 , a 2 , . . . , a n ) = arg ⁡ max ⁡ v j ∈ V P ( a 1 , a 2 , . . . , a n ∣ v j ) P ( v j ) v_{MAP} = \underset{v_j \in V}{\arg \max } \frac{P(a_1,a_2,...,a_n \mid v_j)P(v_j)}{P(a_1,a_2,...,a_n)}=\underset{v_j \in V}{\arg \max } P(a_1,a_2,...,a_n \mid v_j)P(v_j) vMAP=vjVargmaxP(a1,a2,...,an)P(a1,a2,...,anvj)P(vj)=vjVargmaxP(a1,a2,...,anvj)P(vj)

朴素贝叶斯方法就是假设给定目标值时属性值之间相互条件独立,即 P ( a 1 , a 2 , . . . , a n ∣ v j ) = ∏ i = 1 n P ( a i ∣ v j ) P(a_1,a_2,...,a_n \mid v_j) = \prod_{i=1}^n P(a_i \mid v_j) P(a1,a2,...,anvj)=i=1nP(aivj)。朴素贝叶斯使用的方法即为 v N B = arg ⁡ max ⁡ v j ∈ V ∏ i = 1 n P ( a i ∣ v j ) P ( v j ) v_{NB} = \underset{v_j \in V}{\arg \max } \prod_{i=1}^n P(a_i \mid v_j) P(v_j) vNB=vjVargmaxi=1nP(aivj)P(vj)

6. 贝叶斯信念网络的预测与诊断

7. 偏差-方差分析

第七章 基于实例的学习

1. k近邻学习算法

假定所有的实例对应于n维空间 R n R^n Rn中的点,一个实例的最近邻是根据标准欧式距离定义的。在最近邻学习中,目标函数值可以是离散值也可以是实值。


训练算法:

  • 对于每个训练样例 < x , f ( x ) > <x,f(x)>,把这个样例加入列表 t r a i n i n g _ e x a m p l e s training \_ examples training_examples

分类算法:

  • 给定一个要分类的查询实例 x q x_q xq
    • t r a i n i n g _ e x a m p l e s training \_ examples training_examples中选出最靠近 x q x_q xq k k k个实例,并用 x 1 , x 2 , . . . , x k x_1,x_2,...,x_k x1,x2,...,xk表示
    • 返回 f ^ ( x q ) ← arg ⁡ max ⁡ v ∈ V Σ i = 1 k δ ( v , f ( x i ) ) \hat{f}(x_q) \leftarrow \underset{v \in V}{\arg \max } \Sigma_{i=1}^{k} \delta(v,f(x_i)) f^(xq)vVargmaxΣi=1kδ(v,f(xi))

其中,如果a=b,那么 δ ( a , b ) = 1 \delta(a,b) = 1 δ(a,b)=1,否则 δ ( a , b ) = 0 \delta(a,b) = 0 δ(a,b)=0。在实值目标函数中将公式变为 f ^ ( x q ) ← Σ i = 1 k f ( x i ) k \hat{f}(x_q) \leftarrow \frac{\Sigma_{i=1}^{k} f(x_i)}{k} f^(xq)kΣi=1kf(xi)


距离加权最近邻算法:将较大的权值赋给较近的近邻。

  • f ^ ( x q ) ← arg ⁡ max ⁡ v ∈ V Σ i = 1 k w i δ ( v , f ( x i ) ) \hat{f}(x_q) \leftarrow \underset{v \in V}{\arg \max } \Sigma_{i=1}^{k} w_i \delta(v,f(x_i)) f^(xq)vVargmaxΣi=1kwiδ(v,f(xi))
  • f ^ ( x q ) ← Σ i = 1 k w i f ( x i ) Σ i = 1 k w i \hat{f}(x_q) \leftarrow \frac{\Sigma_{i=1}^{k} w_i f(x_i)}{\Sigma_{i=1}^{k} w_i} f^(xq)Σi=1kwiΣi=1kwif(xi)

2. k近邻学习时为什么距离要归一化

如果各个维度的量纲差距很大,那么在计算距离时模长大的维度会支配模长小的维度,造成距离失去意义。

3. 局部加权线性回归

给定一个新的查询实例 x q x_q xq,局部加权回归的一般做法是建立一个逼近 f ^ \hat{f} f^,使 f ^ \hat{f} f^拟合环绕 x q x_q xq的邻域内的训练样例。然后用这个逼近来计算 f ^ ( x q ) \hat{f} (x_q) f^(xq)的值,也就是为查询实例估计的目标值输出。

  • 误差函数为 E ( x q ) = 1 2 ∑ ( f ( x ) − f ^ ( x ) ) 2 K ( d ( x q , x ) ) E(x_{q}) = \frac{1}{2} \sum (f(x)-\hat{f}(x))^{2} K(d(x_{q}, x)) E(xq)=21(f(x)f^(x))2K(d(xq,x)),其中 x x x x q x_q xq k k k个近邻, K ( d ( x q , x ) ) K(d(x_{q}, x)) K(d(xq,x))是权值,是关于相距 x q x_q xq距离的某个递减函数 K K K
  • 训练法则为 Δ w i = η ∑ K ( d ( x q , x ) ) ( f ( x ) − f ^ ( x ) ) a j ( x ) \Delta w_{i}=\eta \sum K(d(x_{q}, x))(f(x)-\hat{f}(x)) a_{j}(x) Δwi=ηK(d(xq,x))(f(x)f^(x))aj(x),其中 x x x x q x_q xq k k k个近邻, a j ( x ) a_j(x) aj(x) x x x的第 j j j个属性。

4. 基于案例的推理(CBR)与k-NN的异同

同:

  • 都是懒惰学习的方法,把在训练数据之外的泛化推迟到遇到一个新的查询实例进行。
  • 通过分析相似的实例来分类新的查询实例,忽略与查询极其不同的实例。

异:

  • CBR不把实例表示为n维空间中的实数点,而是采用更丰富的符号描述。
  • CBR检索相似实例的方法更加复杂。
  • CBR合并多个检索到的案例的过程与k-NN有很大的不同,它依赖于知识推理而不是统计方法。

5. 懒惰学习与积极学习的区别

懒惰(消极)学习:延迟了如何从训练数据中泛化的决策,直到遇到一个新的查询实例时才进行泛化。懒惰学习可以通过很多局部逼近的组合表示目标函数(局部逼近或全局逼近)。懒惰学习在训练时需要较少的计算,但在预测新查询的目标值时需要较多的计算时间。

积极学习:在见到新的查询之前就做好了泛化的工作。积极学习必须在训练时提交单个的全局逼近(必须全局逼近)。积极学习在训练时需要较多的时间,在预测新查询的目标值时需要较少的时间。

第八章 集成学习

1. 集成学习的定义

集成学习是指将许多弱学习器组合起来以获得一个强学习器的技术。

2. 集成学习的两个主要问题

  • 如何产生基学习器(基学习器要尽量准确并且多样)
  • 如何合并基学习器
    • 加权投票(Weighted voteing)
    • 加权平均(Weighted averaging)
    • 学习组合器(learning combiner)
      • Stacking(Wolpert)
      • RegionBoost(Maclin)

同质(homogeneous)集成:所有的个体学习器都是同一个种类的。

异质(heterogeneous)集成:所有的个体学习器不全是一个种类的。

3. Stacking基本思想和伪代码

Stacking算法分为两层,第一层是用不同的算法(因此Stacking一般是异质集成)形成多个弱分类器,然后将其输出用于训练第二层的元分类器,使用元分类器对第一层分类器进行组合。

伪代码


Input:

DataSet D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) D = {(x_1,y_1),(x_2,y_2),...,(x_m,y_m)} D=(x1,y1),(x2,y2),...,(xm,ym)

First-level learning algorithm L 1 , L 2 , . . . , L T L_1, L_2,...,L_T L1,L2,...,LT

second-level learning algorithm L L L

Process:

for t = 1 , . . . , T t = 1,...,T t=1,...,T:

     h t = L t ( D ) h_t = L_t(D) ht=Lt(D)   %在数据集D上使用不同的学习算法训练第一层的分类器

end;

D ′ = ∅ D \prime = \emptyset D=  %创建一个新的数据集用来训练元分类器

for i = 1 , . . . , m i=1,...,m i=1,...,m:

    for t = 1 , . . . , T t = 1,...,T t=1,...,T:

         z i t = h t ( x i ) z_{it}=h_t(x_i) zit=ht(xi)  %用 h t h_t ht对实例 x i x_i xi进行分类

    end;

     D ′ = D ′ ⋃ { ( ( z i 1 , z i 2 , . . . , z i t ) , y i ) } D \prime = D \prime \bigcup \lbrace ((z_{i1},z_{i2},...,z_{it}),y_i) \rbrace D=D{((zi1,zi2,...,zit),yi)}

end;

h ′ = L ( D ′ ) h \prime = L(D \prime) h=L(D)   %在数据集 D ′ D \prime D上使用算法 L L L训练元分类器 h ′ h \prime h

Output:

H ( x ) = h ′ ( h 1 ( x ) , h 2 ( x ) , . . . , h T ( x ) ) H(x) = h \prime (h_1(x), h_2(x), ..., h_T(x)) H(x)=h(h1(x),h2(x),...,hT(x))


4. Bagging基本思想和伪代码

对训练样本随机抽样,让基学习器在不同的训练集进行训练而得到不同的弱分类器,最后通过投票的方式或平均的方式进行集成。(同质集成)

伪代码


Getting L L L samples by bootstrap sampling

From whice we derive:

     L L L classifiers ∈ { − 1 , 1 } : c 1 , c 2 , . . . , c L \in \lbrace -1, 1 \rbrace:c^1,c^2,...,c^L {1,1}:c1,c2,...,cL or

     L L L Estimated probabilites ∈ [ − 1 , 1 ] : p 1 , p 2 , . . . , p L \in \lbrack -1, 1 \rbrack:p^1,p^2,...,p^L [1,1]:p1,p2,...,pL

The aggregate classifier becomes

c b a g = s i g n ( 1 L Σ b = 1 L c b ( x ) ) c_{bag} = sign(\frac{1}{L} \Sigma_{b=1}^L c^b(x)) cbag=sign(L1Σb=1Lcb(x)) or c b a g = 1 L Σ b = 1 L p b ( x ) c_{bag} = \frac{1}{L} \Sigma_{b=1}^L p^b(x) cbag=L1Σb=1Lpb(x)


5. Boosting基本思想和伪代码

首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T。对于训练好的弱分类器,如果是分类任务按照权重进行投票,而对于回归任务进行加权,得到最终的强学习器。(同质集成)

伪代码


Input:

Instance distribution D D D

Base learning algorithm L L L

Number of learning round T T T

Process:

D 1 = D D_1 = D D1=D   %初始化分布

for t = 1 , 2 , . . . , T t=1,2,...,T t=1,2,...,T

     h t = L ( D t ) h_t=L(D_t) ht=L(Dt)   %在分布 D t D_t Dt上训练弱分类器 h t h_t ht

     ϵ t = Pr ⁡ x ∼ D t , y I [ h t ( x ) ≠ y ] \epsilon_{t}=\operatorname{Pr}_{x \sim D_{t}, y} I\left[h_{t}(x) \neq y\right] ϵt=PrxDt,yI[ht(x)=y]   %计算 h t h_t ht的错误

     D t + 1 = A d j u s t _ D i s t r i b u t i o n ( D t , ϵ t ) D_{t+1}=Adjust \_ Distribution\left(D_{t}, \epsilon_{t}\right) Dt+1=Adjust_Distribution(Dt,ϵt)   %调整分布,对分类错误的数据加大权重

end;

Output:

H ( x ) = C o m b i n e _ O u t p u t s ( { h t ( x ) } ) H(x)= Combine \_ Outputs \left(\left\{h_{t}(x)\right\}\right) H(x)=Combine_Outputs({ht(x)})


6. 为什么集成学习有效

  • 统计上:当假设空间对于可用数据量来说太大时,数据上有许多相同精度的假设,学习算法只能够选择其中一个,这样有可能导致所选假设在未见数据上的准确性很差,把多个可能假设集合起来可以降低这种风险。

  • 计算上:许多学习算法是通过执行某种形式的局部搜索来工作的,这些搜索可能会陷入局部最优。通过从多个不同的起始点运行局部搜索构造的集成比任何单个分类器都能更好的逼近真实的目标函数。

  • 表示上:在大多数机器学习的应用场合中实际目标假设并不在假设空间之中,如果假设空间在某种集成运算下不封闭,那么我们通过把假设空间中的一系列假设集成起来就有可能表示出不在假设空间中的目标假设。

第九章 分类技术

1. 基于规则的分类器

基于规则的分类器是使用一组“if…then…”规则来对记录进行分类的技术。规则的左边称为规则前件或前提,规则右边称为规则后件。一般用覆盖率(coverage)和准确率(accuracy)度量规则的质量。

1.1 规则质量评估

  • 覆盖率: c o v e r a g e = ∣ A ∣ ∣ D ∣ coverage = \frac{|A|}{|D|} coverage=DA,即满足规则前件的记录所占的比例。
  • 准确率: a c c u r a c y = ∣ A ⋂ y ∣ ∣ A ∣ accuracy = \frac{|A \bigcap y|}{|A|} accuracy=AAy,即同时满足规则前件和后件的记录在满足规则前件的记录中所占的比例。

1.2 优点

像决策树一样具有高度的表达能力;易于解释,易于生成;可以快速分类新实例,性能可与决策树相媲美。

1.3 需要解决的问题

  • 一个记录可能触发多条规则(不满足互斥规则)

    • 对于有序规则集:基于规则的排序方案、基于类的排序方案
    • 对于无序规则集:采用投票的方式
  • 一条记录可能不会触发任何规则(不满足穷举规则)

    • 使用缺省类(通常被指定为没有被现存规则覆盖的训练记录的多数类)

1.4 规则建立的方法

规则的建立可以使用直接方法和间接方法。直接方法直接从数据中提取分类规则,如RIPPER,CN2;间接方法从其他分类模型(如决策树和神经网络)中提取分类规则,如C4.5rules。

2. 顺序覆盖算法

直接从数据中提取规则,规则基于某种评估度量以贪心的方式增长。该算法从包含多个类的数据集中一次提取一个类的规则。

算法开始时决策表(规则集)为空,接下来用Learn-One-Rule函数提取类C的覆盖当前训练记录集的最佳规则。如果一个规则覆盖大多数的类C训练记录,没有或仅覆盖极少的其他类训练记录(这样的规则具有高准确率,不必是高覆盖率的,因为每个类可以有多个规则),那么该规则是可取的。一旦找到这样的规则,就删掉它所覆盖的训练记录,并把新规则追加到决策表中。重复这个过程,直至满足终止条件。

3. 支持向量机

第十章 聚类分析

1. 聚类的定义

聚类分析,简称聚类,是一个把数据对象划分成子集的过程。每个子集是一个簇,使得簇中的对象彼此相似,但与其他簇中的对象不相似。(非监督的)

2. 聚类(clustering)的类型

  • 层次的与划分的

    • 层次聚类:允许簇有子簇
    • 划分聚类:简单的将数据对象划分为不重叠的子集(簇)
  • 互斥的、重叠的与模糊的

    • 互斥的:每个对象都指派到单个簇
    • 重叠的:一个对象同时属于不同的簇
    • 模糊聚类:每个对象以一个0(绝对不属于)和1(绝对属于)之间的隶属权值属于每个簇
  • 完全的与部分的

    • 完全聚类:将每个对象都指派到一个簇
    • 部分聚类:一些噪声、离群点等不被指派到任何一个簇

3. 簇(cluster)的类型

  • 明显分离的。每个点到同簇中任意点的距离比到不同簇中所有点的距离更近。
  • 基于中心的。每个点到其簇中心的距离比到任何其他簇中心的距离更近。
  • 基于邻近的。每个点到该簇中至少一个点的距离比到不同簇中任意点的距离更近。
  • 基于密度的。簇是被低密度区域分开的高密度区域。
  • 概念簇。簇中的点具有由整个点集导出的某种一般共同性质。

4. 层次聚类

4.1 层次聚类的两种主要类型

  • 凝聚的:从点作为个体簇开始,每一步合并两个最接近的簇。需要定义簇的邻近性的概念。
  • 分裂的:从包含所有点的某个簇开始,每一步分裂一个簇,直到只剩下单点簇。需要确定每一步分裂哪个簇,以及如何分裂。

4.2 定义簇之间的邻近性

  • 单链(MIN):两个簇的邻近度定义为两个不同簇中任意两点之间的最短距离(最大相似度)。

  • 全链(MAX):两个簇的邻近度定义为两个不同簇中任意两点之间的最长距离(最小相似度)。

  • 组平均:两个簇的邻近度定义为不同簇的所有点对邻近度的平均值。

    • p r o x i m i t y ( C i , C j ) = Σ x ∈ C i y ∈ C j p r o x i m i t y ( x , y ) m i × m j proximity(C_i,C_j)=\frac{\Sigma_{x \in C_i y \in C_j} proximity(x,y)}{m_i \times m_j} proximity(Ci,Cj)=mi×mjΣxCiyCjproximity(x,y)
  • Ward方法:两个簇合并时导致的平方误差的增量。

    • Δ ( A , B ) = ∑ i ∈ A ∪ B ∥ x ⃗ i − m ⃗ A ∪ B ∥ 2 − ∑ i ∈ A ∥ x ⃗ i − m ⃗ A ∥ 2 − ∑ i ∈ B ∥ x ⃗ i − m ⃗ B ∥ 2 \Delta(A, B)=\sum_{i \in A \cup B}\left\|\vec{x}_{i}-\vec{m}_{A \cup B}\right\|^{2}-\sum_{i \in A}\left\|\vec{x}_{i}-\vec{m}_{A}\right\|^{2}-\sum_{i \in B}\left\|\vec{x}_{i}-\vec{m}_{B}\right\|^{2} Δ(A,B)=iABx im AB2iAx im A2iBx im B2 = n A n B n A + n B ∥ m ⃗ A − m ⃗ B ∥ 2 =\frac{n_{A} n_{B}}{n_{A}+n_{B}}\left\|\vec{m}_{A}-\vec{m}_{B}\right\|^{2} =nA+nBnAnBm Am B2

单链擅长处理非椭圆形的簇,但对噪声和离群点很敏感。全链对噪声和离群点不太敏感,但是它可能使大的簇破裂,并偏好球形。

4.3 层次聚类的缺点

  • 一旦决定合并两个簇,就不能撤销
  • 没有直接最小化目标函数
  • 不同的方案存在以下一个或多个问题
    • 对噪声和异常值的敏感性
    • 难以处理不同大小的簇和凸形状
    • 破坏大型的簇

5. k均值和k中心点算法

5.1 k-means 算法

首先,选择k个初始质心,其中k是用户指定的参数,即所期望的簇的个数。每个点指派到最近的质心,而指派到一个质心的点集为一个簇。然后,根据指派到簇的点,更新每个簇的质心。重复指派和更新步骤,直到质心不再发生变化。


选择k个点作为初始质心

repeat

    将每个点指派到最近的质心,形成k个簇

    重新计算每个簇的质心

until

    质心不再发生变化


考虑邻近度度量为欧几里得距离的数据,使用误差的平方和(SSE)作为度量聚类质量的目标函数。假设簇划分为 C 1 , C 2 , . . . , C k C_1,C_2,...,C_k C1,C2,...,Ck,则目标函数为 S S E = ∑ i = 1 k ∑ x ∈ C i d i s t 2 ( c i , x ) SSE=\sum_{i=1}^{k} \sum_{x \in C_{i}} d i s t^{2}\left(c_{i}, x\right) SSE=i=1kxCidist2(ci,x),其中 c i c_i ci表示第 i i i个簇的质心(均值),计算公式为 c i = 1 m i ∑ x ∈ C i x c_i=\frac{1}{m_i} \sum_{x \in C_i} x ci=mi1xCix,例如3个二维点 ( 1 , 1 ) , ( 2 , 3 ) , ( 6 , 2 ) (1,1),(2,3),(6,2) (1,1),(2,3),(6,2)的质心是 ( ( 1 + 2 + 6 ) / 3 , ( 1 + 3 + 2 ) / 3 ) = ( 3 , 2 ) ((1+2+6)/3, (1+3+2)/3)=(3,2) ((1+2+6)/3,(1+3+2)/3)=(3,2)。公式中 x x x是一个点, C i C_i Ci是第 i i i个簇, c i c_i ci是簇 C i C_i Ci的质心, m i m_i mi是第 i i i个簇中点的个数。

k-means算法的结果依赖于初始簇中心的随机选择,实践中为了得到好的结果,通常以不同的初始簇中心多次运行k-means算法,然后选取具有最小SSE的簇集。

用后处理降低SSE:

总SSE只不过是每个簇SSE的和,通过在簇上进行诸如分裂和合并的操作,可以改变总SSE。

  • 通过增加簇的个数来降低总SSE的策略

    • 分裂一个簇,通常选择具有最大SSE的簇
    • 引进一个新的质心,通常选择离所有簇质心最远的点
  • 通过减少簇的个数来降低总SSE的策略

    • 拆散一个簇,删除簇的对应质心
    • 合并两个簇,通常选择质心最接近的两个簇

k-means算法的缺点:

  • 通常停止在局部最优
  • 并不适合所有的数据类型(仅限于具有中心概念的数据)
  • 不能处理非球形簇、不同尺寸和不同密度的簇
  • 不能处理噪声和离群点

5.2 k-medoids 算法

k-means算法的改进,降低它对离群点的敏感性。不采用簇中对象的均值作为参照点,而是挑选实际对象来代表簇,每个簇使用一个代表对象,其余的每个对象被分配到与其最为相似的代表性对象所在的簇中。

该算法的一个实现是围绕中心点(PAM)算法。随机选择代表对象,然后考虑用一个非代表对象替换一个代表对象是否能够提高聚类质量。尝试所有可能的替换,直到结果聚类的质量不可能被任何替换提高。

6. DBSCAN 算法

DBSCAN is a Density Based Spatial Clustering of Applications with Noise.具有噪声应用的基于密度的空间聚类。

根据基于中心的密度进行点分类:

  • 核心点(core point):这些点在基于密度的簇内部。点的邻域由距离函数和用户指定的距离参数 E p s Eps Eps 决定。核心点的定义是,如果该点的给定邻域内的点的个数超过给定的阈值 M i n P t s MinPts MinPts , 其中 M i n P t s MinPts MinPts 也是一个用户指定的参数。
  • 边界点(border point):边界点不是核心点,但它落在某个核心点的邻域内。边界点可能落在多个核心点的邻域内。
  • 噪声点(noise point):噪声点是既非核心点也非边界点的任何点。

repeat:

从数据库中抽出一个未处理的点;

IF 抽出的点是核心点 THEN 找出所有从该点 密度可达 的对象,形成一个簇;

ELSE 抽出的点是边缘点(非核心对象),跳出本次循环,寻找下一个点;

UNTIL 所有的点都被处理。


优点:

  • 可以对抗噪声
  • 能够处理任意形状和大小的簇

缺点:

  • 密度变化太大时不能处理
  • 对于高维数据也不能很好的工作

7. 聚类评估

用于评估簇的各方面的评估度量或指标一般分成如下三类:

  • 非监督的。聚类结构的优良性度量,不考虑外部信息。例如,SSE。簇的有效性的非监督度量常常可以进一步分成两类: 簇的凝聚性(cluster cohesion)度量,确定簇中对象如何密切相关;簇的分离性(cluster separation)度量确定某个簇不同于其他簇的地方。非监督度量通常称为内部指标(internal index),因为它们仅使用出现在数据集中的信息。
  • 监督的:度量聚类算法发现的聚类结构与某种外部结构的匹配程度。例如,监督指标的熵,它度量簇标号与外部提供的标号的匹配程度。监督度量通常称为外部指标(external index),因为它们使用了不在数据集中出现的信息。
  • 相对的:比较不同的聚类或簇。相对簇评估度量是用于比较的监督或非监督评估度量,因此它不是一种单独的簇评估独立类型,而是度量的一种具体使用。

第十一章 关联分析

关联规则挖掘任务分解为两个主要的子任务:频繁项集的产生和规则的产生。

1. 概念

项集:设 I = { i 1 , i 2 , . . . , i d } I=\lbrace i_1, i_2, ... , i_d \rbrace I={i1,i2,...,id}是所有项的集合,在关联分析中,包含一个或多个项的集合被称为项集。如果一个项集包含 k k k个项,则称它为 k − k- k项集。

频繁项集:支持度大于等于最小支持度阈值的项集。

关联规则:形如 X → Y X \rightarrow Y XY的蕴含表达式,其中 X X X Y Y Y是不相交的项集。

支持度计数( σ \sigma σ):包含特定项集的事务个数。

支持度(s):关联规则包含的项集出现的次数在总事务数中的比例。 s ( X → Y ) = σ ( X ⋃ Y ) N s(X \rightarrow Y) = \frac{\sigma (X \bigcup Y)}{N} s(XY)=Nσ(XY)

置信度(c): Y Y Y在包含 X X X的事务中出现的频繁程度。 c ( X → Y ) = σ ( X ⋃ Y ) σ ( X ) c(X \rightarrow Y) = \frac{\sigma (X \bigcup Y)}{\sigma (X)} c(XY)=σ(X)σ(XY)

极大频繁项集:极大频繁项集是这样的频繁项集,它的直接超集都不是频繁的。

闭项集:项集是闭的,如果它的直接超集都不具有和它相同的支持度计数。

闭频繁项集:如果一个项集是闭项集,并且它的支持度大于等于最小支持度阈值。

注:极大频繁项集一定是闭频繁项集,因为任何极大频繁项集都不可能和它的直接超集有相同的支持度计数。

2. Apriori 算法

2.1 先验原理

穷举所有的规则是困难的,因此可以使用频繁项集的方法减少规则的产生。产生频繁项集时可以使用支持度度量。帮助减小频繁项集产生时所需要探查的候选项集的个数。该方法基于先验原理:如果一个项集是频繁的,那么它的所有子集一定是频繁的。相反的,如果一个项集是非频繁的,那么它的所有超集也一定是非频繁的。这种剪枝策略依赖于支持度的一个性质,即一个项集的支持度不会超过它的子集的支持度。(支持度度量的反单调性)

2.2 Apriori 算法的频繁项集的产生

  • 通过单遍扫描数据集得到每个项的支持度,然后产生频繁1-项集
  • 重复下面的操作,直到没有新的频繁项集产生
    • 使用上一次迭代发现的频繁k-项集,产生新的候选(k+1)-项集
    • 再次扫描一遍数据集,对每一个候选集计算支持度
    • 删去支持度小于最小支持度阈值的候选项集

该算法需要的总迭代次数是 k m a x + 1 k_{max} + 1 kmax+1 k m a x k_{max} kmax是频繁项集的最大长度。

在产生新的候选k-项集时,可以使用以下方法:

  • 暴力法:把所有的k-项集看成是可能的候选
  • F k − 1 × F 1 F_{k-1} \times F_1 Fk1×F1法:用频繁1-项集拓展频繁(k-1)-项集
  • F k − 1 × F k − 1 F_{k-1} \times F_{k-1} Fk1×Fk1法:合并两个频繁(k-1)-项集,只有当这两个项集的前(k-2)项相同时

2.3 Apriori 算法的规则的产生

定理:如果规则 X → Y − X X \rightarrow Y - X XYX不满足置信度阈值,则形如 X ′ → Y − X ′ X \prime \rightarrow Y - X \prime XYX的规则也一定不满足置信度阈值。比如 c ( A B C → D ) ≥ c ( A B → C D ) ≥ c ( A → B C D ) c(ABC \rightarrow D) \geq c(AB \rightarrow CD) \geq c(A \rightarrow BCD) c(ABCD)c(ABCD)c(ABCD),即如果 A B C → D ABC \rightarrow D ABCD具有低置信度,则可以丢弃后件包含 D D D的所有规则。

3. FP 增长算法

3.1 FP 树表示法

FP树是通过每次读取数据集的一个事务并将每个事务映射到FP树中的路径来构造的。由于不同的事务会有若干个相同的项,因此它们的路径会有部分重叠。路径的重叠的部分越多,使用FP树获得的压缩的效果越好。

树根节点用null标记,最开始找到频繁1-项集并按支持度递减的顺序排序。然后根据事务拓展FP树,每个节点上标记覆盖的次数。

3.2 FP 增长算法的频繁项集产生

4. 关联模式评估

  • 客观兴趣度度量

    • 支持度: s ( X → Y ) = σ ( X ⋃ Y ) N s(X \rightarrow Y) = \frac{\sigma (X \bigcup Y)}{N} s(XY)=Nσ(XY)
    • 置信度: c ( X → Y ) = σ ( X ⋃ Y ) σ ( X ) c(X \rightarrow Y) = \frac{\sigma (X \bigcup Y)}{\sigma (X)} c(XY)=σ(X)σ(XY)
    • 提升度: L i f t ( X → Y ) = c ( X → Y ) s ( Y ) Lift(X \rightarrow Y) = \frac{c(X \rightarrow Y)}{s(Y)} Lift(XY)=s(Y)c(XY),小于1表示负相关,等于1表示统计独立,大于1表示正相关
    • 兴趣因子: I ( X , Y ) = s ( X , Y ) s ( X ) s ( Y ) I(X,Y) = \frac{s(X, Y)}{s(X)s(Y)} I(X,Y)=s(X)s(Y)s(X,Y),对于二元变量,兴趣因子与提升度等价
    • ϕ \phi ϕ系数: ϕ = f 11 f 00 − f 10 f 01 f 1 + f + 1 f 0 + f + 0 \phi = \frac{f_{11}f_{00} - f_{10}f_{01}}{\sqrt{f_{1+}f_{+1}f_{0+}f_{+0}}} ϕ=f1+f+1f0+f+0 f11f00f10f01,相关度从-1(完全负相关)到+1(完全正相关),如果变量是统计独立的,则 ϕ = 0 \phi = 0 ϕ=0
    • ……
  • 主观兴趣度度量

    • 对料想不到的模式感兴趣

其他

1. 协方差矩阵的计算

对于一组数据,比如 x 1 ( 1 , 2 ) , x 2 ( 2 , 6 ) , x 3 ( 4 , 2 ) , x 4 ( 5 , 2 ) x_1(1,2), x_2(2,6), x_3(4,2), x_4(5,2) x1(1,2),x2(2,6),x3(4,2),x4(5,2),因为数据是二维的(即两列),所以协方差矩阵是一个 2 × 2 2 \times 2 2×2的矩阵。协方差矩阵的元素 ( i , j ) = (i,j)= (i,j)=(第 i i i维的所有元素-第 i i i维的均值) ⋅ \cdot (第 j j j维的所有元素-第 j j j维的均值) / / / 行数 − 1 -1 1(即样本数 − 1 -1 1)。

  • 协方差矩阵是一个对称矩阵
  • 对角线元素 ( i , i ) (i,i) (i,i)为第 i i i维数据的方差
  • 非对角线元素 ( i , j ) (i,j) (i,j)为第 i i i维和第 j j j维的协方差

2. 标准差

总体标准差: σ = Σ i = 1 n ( x i − x ‾ ) 2 n \sigma = \sqrt{\frac{\Sigma_{i=1}^{n}(x_i-\overline{x})^2}{n}} σ=nΣi=1n(xix)2

样本标准差: σ = Σ i = 1 n ( x i − x ‾ ) 2 n − 1 \sigma = \sqrt{\frac{\Sigma_{i=1}^{n}(x_i-\overline{x})^2}{n-1}} σ=n1Σi=1n(xix)2

Reference

由霍夫丁不等式论证机器学习的可行性

你可能感兴趣的:(机器学习,数据挖掘,复习笔记)