人智导(十一):有指导学习(Ⅰ)

人智导(十一):有指导学习(Ⅰ)

有指导学习

  • AI本质上,如何发现算法:
    问题示例(作为输入)/目标示例(作为输出) ⇒ \Rightarrow 学习系统 ⇒ \Rightarrow (构建模型)自动生成算法或程序 ⇒ \Rightarrow (模型应用)实际问题
  • 还可以用于分类任务
    训练数据样本 ⇒ \Rightarrow 训练器 ⇒ \Rightarrow 分类模型
  • 学习算法的种类(根据学习模型的表示)
    • 树结构表示:决策树方法
    • 规则表示:基于规则的方法
    • 函数表示:线性非线性回归方法
    • 概率形式表示:贝叶斯方法
    • 网络结构表示:神经网络方法

决策树归纳方法

一个例子

给定数据(Cheat为类标记),生成相应的决策树
在这里插入图片描述

在这里插入图片描述
基于同样的训练数据,可以生成不同的决策树
在这里插入图片描述

决策树归纳算法

  • ID3算法
    • 对样例表中特征属性值离散化(连续值转换为离散值)
    • 根据贪心策略,初始选择最重要的特征属性作为根节点,基于其值来分割样例表
    • 一个迭代的过程,同样策略扩展树的后继节点
    • 满足一定约束条件即通知继续分割样例表(叶节点)
      • 所有的样例都属于同一类别或不再进行属性选择继续分割(多数表决来决定属于哪类)
    • 算法的关键:如何度量特征属性的重要性(信息增益方法)

决策树模型的构建

在这里插入图片描述
以购买计算机的训练集为例

  • 信息增益法:选择最重要(相关)的属性
  • 有两个类:P(买计算机)N(不买计算机)
    • 训练集 D = ( p , n ) D=(p,n) D=(p,n)中14个顾客 p = 9 , n = 5 p=9, n=5 p=9,n=5(分别为买与不买)
    • 这14个顾客分类提供的信息量(信息熵)计算: E ( D = ( p , n ) ) = − p p + n l o g 2 p p + n − n p + n l o g 2 n p + n = 0.94 E(D=(p,n))=-\frac{p}{p+n}log_2\frac{p}{p+n}-\frac{n}{p+n}log_2\frac{n}{p+n}=0.94 E(D=(p,n))=p+nplog2p+npp+nnlog2p+nn=0.94
  • 信息量一般形式: I ( x ) = − l o g 2 p ( x ) , x ∈ X I(x)=-log_2p(x), x\in X I(x)=log2p(x),xX x x x事件发生越不确定,信息量就越大
  • 信息熵(entropy): E ( X ) = − Σ x ∈ X p ( x ) l o g 2 p ( x ) E(X)=-\Sigma_{x\in X}p(x)log_2p(x) E(X)=ΣxXp(x)log2p(x) x x x事件越不可预测,熵值越大
  • 例如抛硬币, p ( X = h e a d ) = p ( X = t a i l ) = 1 2 ,   E ( X ) = − 1 2 l o g 2 1 2 − 1 2 l o g 2 1 2 = 1 p(X=head)=p(X=tail)=\frac{1}{2},~E(X)=-\frac{1}{2}log_2\frac{1}{2}-\frac{1}{2}log_2\frac{1}{2}=1 p(X=head)=p(X=tail)=21, E(X)=21log22121log221=1
    比如在购买计算机的数据集中,计算年龄的信息增益:
age p i p_i pi n i n_i ni E ( p i , n i ) E(p_i, n_i) E(pi,ni)
≤ 30 \le 30 30230.971
30 … 40 30\dots 40 3040400
> 40 >40 >40320.971

E ( D = ( p , n ) ∣ A ) = Σ i = 1 v p i + n i p + n E ( D i = ( p i , n i ) ) E(D=(p,n)|A)=\Sigma^v_{i=1}\frac{p_i+n_i}{p+n}E(D_i=(p_i,n_i)) E(D=(p,n)A)=Σi=1vp+npi+niE(Di=(pi,ni))
E ( D ∣ a g e ) = 5 14 E ( 2 , 3 ) + 4 14 E ( 4 , 0 ) + 5 14 E ( 3 , 2 ) = 0.694 E(D|age)=\frac{5}{14}E(2,3)+\frac{4}{14}E(4,0)+\frac{5}{14}E(3,2)=0.694 E(Dage)=145E(2,3)+144E(4,0)+145E(3,2)=0.694
属性信息增益(Gain)为 G a i n ( A ) = E ( D ) − E ( D ∣ A ) Gain(A)=E(D)-E(D|A) Gain(A)=E(D)E(DA)
信息增益越大,属性就越重要(相关)

attrGain
age0.246
income0.029
student0.151
credit_rating0.048

构建后的决策树如下图:
在这里插入图片描述
转化为规则集:

  • I F   a g e = " ≤ 30 "   A N D   s t u d e n t = " n o "   T H E N   b u y s _ c o m p u t e r = " n o " IF~age="\le 30"~AND~student="no"~THEN~buys\_computer="no" IF age="30" AND student="no" THEN buys_computer="no"
  • I F   a g e = " ≤ 30 "   A N D   s t u d e n t = " y e s "   T H E N   b u y s _ c o m p u t e r = " y e s " IF~age="\le 30"~AND~student="yes"~THEN~buys\_computer="yes" IF age="30" AND student="yes" THEN buys_computer="yes"
  • I F   a g e = " 31 … 40 "   T H E N   b u y s _ c o m p u t e r = " y e s " IF~age="31\dots 40"~THEN~buys\_computer="yes" IF age="3140" THEN buys_computer="yes"
  • I F   a g e = " > 40 "   A N D   c r e d i t _ r a t i n g = " e x c e l l e n t "   T H E N   b u y s _ c o m p u t e r = " y e s " IF~age=">40"~AND~credit\_rating="excellent"~THEN~buys\_computer="yes" IF age=">40" AND credit_rating="excellent" THEN buys_computer="yes"
  • I F   a g e = " > 40 "   A N D   c r e d i t _ r a t i n g = " f a i r "   T H E N   b u y s _ c o m p u t e r = " n o " IF~age=">40"~AND~credit\_rating="fair"~THEN~buys\_computer="no" IF age=">40" AND credit_rating="fair" THEN buys_computer="no"

决策树的生成

  • 贪心策略+分治策略
  • 树生成过程中的典型问题
    • 迭代分割过程中样例数据趋少,导致生成的决策树过于拟合训练样例
    • 过拟合:低偏差,高方差
  • 树剪枝:避免过拟合,提高泛化能力

泛化误差与剪枝

  • 剪枝:树构建过程中裁剪分支
    • 异常阈值(exception threshold):样例数目小于阈值,返回类分布
    • 分类阈值:当属于某一类的样例所占比例超过给定阈值,划分即停止
    • 计算泛化误差进行剪枝
  • 训练误差:训练集产生的偏差 e ( t ) e(t) e(t)
  • 泛化误差:测试集产生的偏差 e ′ ( t ) e'(t) e(t)
  • 泛化误差评估方法: e ′ ( t ) = e ( t ) + N × 0.5 e'(t)=e(t)+N\times 0.5 e(t)=e(t)+N×0.5 N:叶节点数目
    • 对于一个决策树,有30个叶节点且在训练集中1000个样例中有10个错误的分类,则
    • 训练误差: 10 1000 = 1 % \frac{10}{1000}=1\% 100010=1%
    • 泛化误差: ( 10 + 30 × 0.5 ) / 1000 = 2.5 % (10+30\times 0.5)/1000=2.5\% (10+30×0.5)/1000=2.5%

决策树归纳算法的变体

  • 允许处理连续值的属性、处理遗失属性值的情况
  • 特征属性组合、重构
  • 特征选择的其它度量方法
    • 增益率(Gain Ratio),基尼系数(Gini Index)等等
  • 变体版本:
    • ID3, C4.5, C5.0
    • Hunt’s Algorithm, CART
    • SLIQ, SPRINT

集成学习方法

集成学习方法(Ensemble Approach)

  • 通过训练数据构建一组模型
  • 通过构建的多个模型(基分类器),组合为未分类的数据进行分类
  • 改善预测效果的通用性技术(提高准确度,降低方差)
  • 两种类型方法:Bagging 和 Boosting

Bagging方法

并行构建基分类器(如下图)
在这里插入图片描述

  • 带回放采样
  • 通过采样得到的不同的自助样本集(bootstrap),构建各自对应的模型
  • 算法描述:
Let k be the number of bootstrap samples set
For i=1 to k do
	Create a bootstrap sample Di of size N;
	Train a (base) classifier Ci on Di;
End for C*
  • 其中 C ∗ = a r g   m a x y Σ i I ( C i = y ) C*=arg~max_y\Sigma_iI(C_i=y) C=arg maxyΣiI(Ci=y)
  • Bagging:构建一组基分类器-弱分类器,组合进行分类预测
  • 随机森林(random forest):一种特殊的Bagging,采用决策树构建基分类器(small tree);避免基分类模型的高相关性,每次随机选择p个属性中的m个属性构建决策树( m ≈ p m\approx \sqrt{p} mp l o g 2 p log_2p log2p等)

Boosting方法

  • 通过迭代的方法自主变化训练样本数据的分布,更多地集中在之前分类错误的数据
    • 每一个训练样例都被分配一个权重
    • 每一轮boosting后训练样例的权重都可以发生变化:分类错的样例权重增加,分类对的样例权重则降低

在这里插入图片描述
如上图,“4”较难被正确分类,其权重被增加,使其在后续boosting轮选样能再次被选中
boosting过程示意图如下,注意是迭代地生成一组基分类模型(串行过程)
在这里插入图片描述
AdaBoosting算法:
( x j , y j ) (x_j,y_j) (xj,yj)表示:一个包含 N N N个训练样例的数据集 ( j = 1 , … , N ) (j=1, \dots ,N) (j=1,,N)
一个生成的基分类模型 C i C_i Ci,其错误率: ϵ i = 1 N [ Σ j = 1 N w j I ( C i ( x j ) ≠ y i ) ] \epsilon_i=\frac{1}{N}[\Sigma^N_{j=1}w_jI(C_i(x_j)\ne y_i)] ϵi=N1[Σj=1NwjI(Ci(xj)=yi)]
其中如果 p p p为真,则 I ( p ) = 1 I(p)=1 I(p)=1;否则 I ( p ) = 0 I(p)=0 I(p)=0
一个生成的基分类模型 C i C_i Ci其重要程度: α i = 1 2 [ l n ( 1 − ϵ i ϵ i ) ] \alpha_i = \frac{1}{2}[ln(\frac{1-\epsilon_i}{\epsilon_i})] αi=21[ln(ϵi1ϵi)]
w i ( j ) w^{(j)}_i wi(j):表示样例 ( x i , y i ) (x_i, y_i) (xi,yi)在第 j j j轮的权重
样例的权重以如下方式进行修改
w i ( j + 1 ) = W i ( j ) Z j × e − a j   i f   C j ( x i ) = y i w^{(j+1)}_i=\frac{W^{(j)}_i}{Z_j}\times e^{-a_j}~if~C_j(x_i)=y_i wi(j+1)=ZjWi(j)×eaj if Cj(xi)=yi
w i ( j + 1 ) = W i ( j ) X j × e a j   i f   C j ( x i ) ≠ y i w^{(j+1)}_i=\frac{W^{(j)}_i}{X_j}\times e^{a_j}~if~C_j(x_i)\ne y_i wi(j+1)=XjWi(j)×eaj if Cj(xi)=yi
其中 Z j Z_j Zj是规范化因子: Σ i w i ( j + 1 ) = 1 \Sigma_iw^{(j+1)}_i=1 Σiwi(j+1)=1
算法描述:

Initialize the weights for all N examples as equation1
Let k be the number of boosting rounds, D is the set of all examples
For i=1 to k do
	Cretae training set Di by sampling from D according to W
	Train a base classifier Ci on Di
	Apply Ci to all examples in the original set D
	Update the weight of each example
End for C*

C ∗ ( x ) = a r g   m a x y Σ j = 1 K α j I ( C j ( x ) = y ) C*(x)=arg~max_y\Sigma^K_{j=1}\alpha_jI(C_j(x)=y) C(x)=arg maxyΣj=1KαjI(Cj(x)=y)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值