数据挖掘模型总揽(一)

数据挖掘模型算法是一种从大量数据中寻找有用信息的方法。这些算法包括分类、聚类、关联规则、序列模式和预测等多种类型。它们可以帮助我们理解数据的内在结构和模式,从而为决策提供有价值的洞察。数据挖掘模型算法在许多领域都有应用,包括金融、生物信息学、电子商务和社交媒体等。通过使用这些算法,我们可以解决各种实际问题,如客户分层、商品推荐、欺诈检测和市场细分等。

树类模型

树类模型是一种常见的数据挖掘算法。它们主要包括决策树和随机森林等算法。这些算法以树形结构表示数据的决策逻辑,使得结果易于理解。树类模型可以处理分类和回归两种类型的问题,适用于各种场景。

1. 决策树

决策树是一种基于树结构进行决策的流程模型,每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种决策结果。构建决策树的主要步骤包括:选择最优属性、根据最优属性的值划分数据集、创建决策节点、递归生成树。在实际操作中,如何确定划分的属性以及划分的标准,通常是根据某种度量方法,如信息增益、增益率或基尼指数等。至于分裂,决策树在每个非叶子节点都会进行分裂,根据属性的不同值,将数据集分裂为几个更小的数据集,然后在这些更小的数据集上递归地生成子树。

(1)衡量标准(最优属性选取方法)

  • 信息熵

决策树模型是一种if-else型的模型,通过对数据集的学习,生成树模型的内部节点,内部节点表示对一个属性的判断。

从定义上讲,信息熵用来衡量不确定性,不确定性越强,则信息熵越大,不确定性越弱,则信息熵越小。其公式如下所示。

H ( X ) = − ∑ i = 1 n P ( X = i ) l o g 2 P ( X = i ) H(X)=-\sum_{i=1}^nP(X=i)log_2P(X=i) H(X)=i=1nP(X=i)log2P(X=i)

条件熵,定义是在给定随机变量Y的条件下,随机变量X的不确定性。用通俗的话讲就是,施加一个条件后(如 r < 0.5 r<0.5 r<0.5),在这一条件下的信息熵。
H ( X ∣ Y = v ) = − ∑ i = 1 n P ( X = i ∣ Y = v ) l o g 2 P ( X = i ∣ Y = v ) H(X|Y=v)=-\sum_{i=1}^nP(X=i|Y=v)log_2P(X=i|Y=v) H(XY=v)=i=1nP(X=iY=v)log2P(X=iY=v)

  • 信息增益(代表例子ID3树)

信息增益,信息增益则是用于衡量给定条件后,信息的不确定性减少了多少。即加了个条件后,信息熵的变化。
I ( X , Y ) = H ( X ) − H ( X ∣ Y ) I(X,Y)=H(X)-H(X|Y) I(X,Y)=H(X)H(XY)

在这里插入图片描述
G a i n ( D K , D V ) = − p ( k ) l o g ( p ( k ) ) + ∑ v V ∑ k K p ( v , k ) l o g ( p ( k ∣ v ) ) Gain(D^K, D^V)=-p(k)log(p(k))+\sum^V_v\sum^K_kp(v,k)log(p(k|v)) Gain(DK,DV)=p(k)log(p(k))+vVkKp(v,k)log(p(kv))

  • 信息增益率(代表例子C4.5树)
    Gain_ratio ( D K , D V ) = Gain ( D K , D V ) Ent ( D V ) \text{Gain\_ratio}\left(D^K, D^V\right) = \frac{\text{Gain}\left(D^K, D^V\right)}{\text{Ent}\left(D^V\right)} Gain_ratio(DK,DV)=Ent(DV)Gain(DK,DV)

  • GINI系数(代表例子CART树)

基尼值与熵一样,基尼系数表征的也是事件的不确定性,将熵定义式中的 − l o g p i -logp_i logpi替换为 1 − p i 1-p_i 1pi就是基尼值。
Gini ( D K ) = ∑ k p k ( 1 − p k ) = ∑ k p k − ∑ k p k 2 = 1 − ∑ k p k 2 \text{Gini}(D^K) = \sum_{k} p_k(1 - p_k) = \sum_{k} p_k - \sum_{k} p_k^2 = 1 - \sum_{k} p_k^2 Gini(DK)=kpk(1pk)=kpkkpk2=1kpk2

(2)决策树算法

  • ID3算法
    在这里插入图片描述
    现在开始选择第一个特征,如果第一个特征选色泽,则根据前面介绍的方法,计算出的信息增益为0.109,即Gain(D,色泽)=0.109。同理,如果选择其他特征,则信息增益如下
    Gain ( D , 根茎 ) = 0.143 ; Gain ( D , 敲声 ) = 0.141 ; Gain ( D , 纹理 ) = 0.381 ; Gain ( D , 肿部 ) = 0.289 ; Gain ( D , 触感 ) = 0.006. \text{Gain}(D, \text{根茎}) = 0.143; \quad \text{Gain}(D, \text{敲声}) = 0.141; \\ \text{Gain}(D, \text{纹理}) = 0.381; \quad \text{Gain}(D, \text{肿部}) = 0.289; \\ \text{Gain}(D, \text{触感}) = 0.006. Gain(D,根茎)=0.143;Gain(D,敲声)=0.141;Gain(D,纹理)=0.381;Gain(D,肿部)=0.289;Gain(D,触感)=0.006.
    而该算法的逻辑是每次进行特征选择时,选取最大信息增益的特征。而根据计算结果,纹理是信息增益最大的特征

而该算法的逻辑是每次进行特征选择时,选取最大信息增益的特征。而根据计算结果,纹理是信息增益最大的特征。因此该决策树的第一层就构建完成了,其结构见下图
在这里插入图片描述
用纹理这一特征将树的第一层构建完成之后,继续递归寻找除了纹理之外的特征的信息增益最大的特征。分别对纹理分类后的三个子节点计算增益,以纹理清晰这一子节点为例。继续计算各个特征带来的信息增益,得到如下计算结果。
Gain ( D 1 , 色泽 ) = 0.043 ; Gain ( D 1 , 根茎 ) = 0.458 ; Gain ( D 1 , 敲声 ) = 0.331 ; Gain ( D 1 , 肿部 ) = 0.458 ; Gain ( D 1 , 触感 ) = 0.458. \text{Gain}(D^1, \text{色泽}) = 0.043; \quad \text{Gain}(D^1, \text{根茎}) = 0.458; \\ \text{Gain}(D^1, \text{敲声}) = 0.331; \quad \text{Gain}(D^1, \text{肿部}) = 0.458; \\ \text{Gain}(D^1, \text{触感}) = 0.458. Gain(D1,色泽)=0.043;Gain(D1,根茎)=0.458;Gain(D1,敲声)=0.331;Gain(D1,肿部)=0.458;Gain(D1,触感)=0.458.

发现触感、根蒂、脐部的信息增益最大,三则任选其一即可。对这一层递归完成后,得到下图的树结构。

  • ID3算法流程

在这里总结一下,ID3的决策树算法的流程为:

1.寻找最优特征,即计算信息增益

2.将最优特征的特征值作为有向边,判断子数据集

若子数据集均为同一类,则输出叶子节点;反之,若子数据集中仍有特征,重复1,2过程,若没有更多特征,则将最多的一类输出为叶子节点

3.叶子节点全部输出或无数据集可遍历即结束。

  • 优缺点

(1)只适用于计算特征是离散的

(2)倾向于选择大量值的属性(即特征值多的)

(3)过拟合: ID3容易产生过拟合,特别是在有许多属性时。

  • C4.5树

为了解决特征值数量问题对信息增益计算的影响。该算法使用信息增益率替代信息增益作为寻找最优特征的判据。其计算公式就是信息增益除以子节点的熵。

G a i n R a t i o ( D , A ) = G a i n ⁡ ( D , A ) − ∑ i = 1 n ∣ D i ∣ ∣ D ∣ l o g ⁡ 2 ( ∣ D i ∣ ∣ D ∣ ) GainRatio(D,A)=Gain⁡(D,A)−\sum_{i=1}^n\frac{|D_i|}{|D|}log⁡2(\frac{|D_i|}{|D|}) GainRatio(D,A)=Gain(D,A)i=1nDDilog2(DDi)

针对ID3算法不能处理连续特征的问题,该算法使用二分法做离散化处理,先将连续特征从小到大排序,对N个连续数据进行N-1个二分划分,遍历N-1个划分点,分别计算这些子节点的信息增益,选择信息增益最大的二分结果作为该连续特征的最佳划分点

  • 优缺点

(1)遍历所有连续值,计算复杂度高

(2)尽管有剪枝步骤,但在某些情况下模型仍然可能过拟合

  • CART3树

CART3算法针对分类数,引入了基尼不纯度(又称基尼指数)这一概念,这一概念表示样本集合中在一个随机选中的样本被分错的概率。该指数越小表示该集合的纯度越高,所有样本为同一类时,基尼指数为0。

分类依据和前两种算法不同,其他都大体相似

2. Boosting提升树

在梯度提升树(Gradient Boosting Trees,GBT)中,每一棵树确实是串联的。串联的意思是每一棵树的训练和预测都依赖于前一棵树的输出,具体来说:

串联结构详解

  1. 初始化模型

    • 首先,使用一个简单的模型(通常是常数值)初始化预测。对于回归问题,通常使用目标变量的均值作为初始预测值。
  2. 计算残差

    • 对于每一棵新树,计算当前模型的残差,即实际值与当前模型预测值之间的差异。这些差表示当前模型尚未捕捉到的误差。
  3. 拟合残差

    • 新树的训练目标是拟合这些残差。新树试图预测当前模型的误差,从而在现有模型的基础上进行改进。
  4. 更新模型

    • 新树的预测结果乘以一个学习率(通常是小于1的常数),然后加到当前模型的预测值上。这个学习率控制每一棵树对最终模型的贡献,防止模型过拟合。

    • 公式表示为:其中, y i ( m ) y^i(m) yi(m)是第m次迭代后的预测值, y i ( m − 1 ) y^i(m−1) yi(m1)是前一次迭代后的预测值, η η η是学习率, h m ( x i ) hm(x_i) hm(xi)是第m棵树的预测值。

      y i ( m ) = y i ( m − 1 ) + η ⋅ h m ( x i ) y^i(m)=y^i(m−1)+η⋅hm(x_i) yi(m)=yi(m1)+ηhm(xi)

  5. 迭代训练

    • 重复步骤2到4,训练多棵树。每棵新树都是在前面所有树的基础上进行改进的。
  6. 最终模型

    • 最终的模型是所有树的加权和。通过逐步减少残差,最终模型的预测性能不断提高。

串联结构示意

假设有三棵树 T1, T2, T3:

  • 第一棵树 T1

    • 初始化模型 F0(x) 用目标变量的均值。

      F 1 ( x ) = F 0 ( x ) + η ⋅ T 1 ( x ) F1(x)=F0(x)+η⋅T1(x) F1(x)=F0(x)+ηT1(x)

  • 第二棵树 T2

    • 计算残差 r i = y i − F 1 ( x i ) r_i=y_i−F1(x_i) ri=yiF1(xi)

      F 2 ( x ) = F 1 ( x ) + η ⋅ T 2 ( x ) F2(x)=F1(x)+η⋅T2(x) F2(x)=F1(x)+ηT2(x)

  • 第三棵树 T3

    • 计算残差 r i = y i − F 2 ( x i ) r_i=y_i−F2(x_i) ri=yiF2(xi)

      F 3 ( x ) = F 2 ( x ) + η ⋅ T 3 ( x ) F3(x)=F2(x)+η⋅T3(x) F3(x)=F2(x)+ηT3(x)

最终模型 F(x) 是所有树的加权和:

F ( x ) = F 0 ( x ) + η ⋅ T 1 ( x ) + η ⋅ T 2 ( x ) + η ⋅ T 3 ( x ) F(x)=F0(x)+η⋅T1(x)+η⋅T2(x)+η⋅T3(x) F(x)=F0(x)+ηT1(x)+ηT2(x)+ηT3(x)

优点和影响

  • 优势
    • 通过串联每棵树,梯度提升树可以逐步减少预测误差,提高模型的预测性能。
    • 学习率可以控制每棵树的贡献,防止过拟合。
  • 影响
    • 每棵树的训练依赖于前一棵树的结果,因此训练过程是串行的,不像袋装(Bagging)方法中的并行训练。
    • 这种依赖关系使得梯度提升的训练过程较慢,但可以通过优化算法(如XGBoost的并行计算)来加速。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值