机器学习-周志华(3-4章)

第3章 线性模型

3.1 基本形式

问题描述:给定由d个属性描述示例\(x=(x_{1};x_{2};...;x_{d})\),其中\(x_{i}\)是x自第i个属性上的取值,线性模型(Linear model)试图学得一个通过属性的线性组合来进行预测函数,即

函数描述:\(f(x)=w_{1}x_{1}+w_{2}x_{2}+...+w_{d}x_{d}+b\)

向量形式:\(f(x)=w^{T}x+b\),其中\(f(x)=w_{1}x_{1}+w_{2}x_{2}+...+w_{d}x_{d}+b\).w和b学得之后,模型就得以确认。

3.2线性回归

问题描述:给定数据集\(D=\{(x_{1},y_{1}),(x_{2},y_{2}),..,(x_{m},y_{m})\}\),其中\(x_{i}=(x_{i1};x_{i2};...;x_{id}),y_{i}\in \mathbb{R}\).“线性回归”(linear regression)试图学得一个线性模型以尽可能准确地预测实值输出标记,即线性回归试图学习\(f(x_{i})=wx_{i}+b\),使得\(f(x_{i})\approx y_{i}\)

如何确定w和b?

1、一元线性回归

 关键在于如何衡量f(x)与y之间的差别,(均方误差是回归任务最常用的性能度量)。因此可试图让均方误差最小化,从而确定w和b

\[\begin{align} (w^{*},b^{*})=&arg\space min_{(w,b)} \sum_{i=1}^{m}(f(x_{i})-y_{i})^{2} \\ =&arg\space min_{(w,b)} \sum_{i=1}^{m}(y_{i}-wx_{i}-b)^{2} \end{align} \]

argument of the maximum/minimum
arg max f(x): 当f(x)取最大值时,x的取值
arg min f(x):当f(x)取最小值时,x的取值

"最小二乘法":基于均方误差最小化来进行模型求解的方法。即试图找到一条直线,使所有样本到直线上的欧氏距离之和最小。

确定w和b使均方误差最小的过程,称为线性回归模型的最小二乘"参数估计"(parameter estimation).

即通过对w,b求导确定最优解

\[ 对w求导:\frac{\partial{E_{(w,b)}}}{\partial{w}}=2(w\sum_{i=1}^{m}x_{i}^{2}-\sum_{i=1}^{m}(y_{i}-b)x_{i}) \\ 对b求导:\frac{\partial{E_{(w,b)}}}{\partial{b}}=2(mb-\sum_{i}^{m}(y_{i}-wx_{i})) \\ 导数为0得到最优解: \\ \begin{align} w=&\frac{\sum_{i}^{m}y_{i}(x_{i}-\overline{x})}{\sum_{i=1}^{m}x_{i}^{2}-\frac{1}{m}(\sum_{i=1}^{m}x_{i})^{2}}, \\ b=&\frac{1}{m}\sum_{i=1}^{m}(y_{i}-wx_{i}) \\ 其中\overline{x}是x的均值 \end{align} \]

1.png

最小二乘法的参数估计推导:

2、多元线性回归

关系式:\(f(x_{i})=w^{T}x_{i}+b\)

目标函数:


目标函数求解:


代码实践:https://github.com/Gievance/Python-MachineLearning/blob/master/Machine Learning note/多元线性回归.ipynb

高维问题可以使用梯度反向传播法,见3.7

3、对数线性回归

将模型预测值逼近y的衍生物,便有“对数线性回归”:

\[ lny=w^{T}w+b \\ y=e^{w^{T}w+b} \]

拓展:

更一般地,考虑单调可微函数g(·),令\(y=g^{-1}(w^{T}w+b)\),便得到“广义线性模型”
对数线性回归时广义模型在g(·)=ln(·)时的特例

3.3、对数几率回归(逻辑回归)

问题描述:
1、分类问题:将x的取值映射到固定的y空间内
2、线性模型进行的回归学习,对样本做了预测,但对分类问题而言,需要将预测值与真实标记联系起来。
3、通过广义线性模型,用一个单调可微的联系函数将预测值y做个转换,映射到标记空间。

实例:二分类任务

关系函数: $$ 最理想:单位阶跃函数:y=\begin{cases}0,z<0\\0.5,z=0\\1,z>0\end{cases} \\ 近似代替:对数几率函数(sigmoid):y=\frac{1}{1+e^{-z}} $$

单位阶跃函数不连续,对数几率函数单调可微故可做联系函数

函数形式:

\[ y=\frac{1}{1+e^{-(w^{T}w+b)}}\\ ln\frac{y}{1-y}=w^{T}w+b \]

几率:\(\frac{y}{1-y}\),y视为样本的正例可能性,1-y视为样本的反例可能性
对数几率:\(ln\frac{y}{1-y}\)

在对数几率回归模型下,如何确定w和b?

极大似然估计法

小结:
 1、利用线性回归模型的预测结果去逼近真实标记的对数几率,其对应的模型称为“对数几率回归”
 2、logistic回归是一个分类算法,它可以处理二元分类以及多元分类。首先逻辑回归构造广义的线性回归函数,然后使用sigmoid函数将回归值映射到离散类别。

3.4 线性判别分析

LDA=Linear Discriminant Analysis=Fisher判别分析

基本思想:

想让同类样本点的投影点尽可能接近,不同类样本点投影之间尽可能远,即:让各类的协方差之和尽可能小,不用类之间中心的距离尽可能大。基于这样的考虑,LDA定义了两个散度矩阵。

  • 类内散度矩阵(within-class scatter matrix)

15.png

  • 类间散度矩阵(between-class scaltter matrix)

16.png

因此得到了LDA的最大化目标:“广义瑞利商”(generalized Rayleigh quotient)。

17.png

从而分类问题转化为最优化求解w的问题,当求解出w后,对新的样本进行分类时,只需将该样本点投影到这条直线上,根据与各个类别的中心值进行比较,从而判定出新样本与哪个类别距离最近。求解w的方法如下所示,使用的方法为λ乘子。

18.png

若将w看做一个投影矩阵,类似PCA的思想,则LDA可将样本投影到N-1维空间(N为类簇数),投影的过程使用了类别信息(标记信息),因此LDA也常被视为一种经典的监督降维技术。

3.5多分类学习

基本思路:“拆解法”将多分类任务拆为若干个二分类任务求解。具体来说,先对问题进行拆分,然后为拆出的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的分类结果。

经典的拆分策略:
1、OvO(一对一:one vs one)

OvO给定数据集\(D={(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n}),}, y_{i}=\{ C_{1},C_{2},...,C_{N} \}\) ;OvO将这N个类别两两配对,从而产生N(N-1)/2个二分类任务。

2、OvR(一对其余:one vs rest)

OvR每次将一个类的样例作为正例,所有其他类的样例作为反例来训练N个分类器;在测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。

3、MvM(多对多:Many vs Many)

MvM每次将若干个类作为正类,若干个其他类作为反类。OvO和OvR是MvM的特例。MvM的正、反例构造必须有特殊的设计(比如:“纠错输出码”,(Error Correcting Output Codes:ECOC))

ECOC将编码的思想引入类别拆分,并尽可能在解码过程中具有容错性。

  • 编码:对N个类别做M次划分,每次划分将一部分类别划为正类,一部分划分为反类,从而形成一个二分类训练集;这样一共产生M个训练集,可训练出M个分类器
  • 解码:M个分类器分别对测试样本进行预测,这些预测标记组成了一个编码。将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小额类别作为最终预测结果。
  • 类别划分:通过“编码矩阵”指定,常见的主要有二元码和三元码。

手稿阐述二元码、三元码:

3.6 类别不平衡

类别不平衡(class-imbalance)
问题描述:分类任务中不同类别的训练样例差别很大的情况。

类别不平衡的基本处理方法:
1、当正、反例可能性相同时(即阈值为0.5的情况),分类器的决策规则为:\(\frac{y}{1-y} (3.46)\)则预测为正例。
2、当训练集是样本总体的无偏采样时,m+代表正例数量,m-代表负例数量,观测几率=\(\frac{m^{+}}{m^{-}}\),分类器的决策规则为\(\frac{y}{1-y}>\frac{m^{+}}{m^{-}}(3.47)\)则预测为正例
当分类器决策时基于形式(3.46),可以通过“再缩放”策略,使其基于式(3.46)决策,实际是执行(3.47)
"再缩放":\(\frac{y^{'}}{1-y^{'}}=\frac{y}{1-y}×\frac{m^{-}}{m^{+}} (3.48)\)
3、上面假设不成立时,则无法基于训练集类别进行推断真实几率,但也有三种处理方法

  • 欠采样(undersampling):去除一些反例,从而使正、反例数目接近。
  • 过采样(oversampling):增加一些正例,使得正、反例数目接近
  • 阈值移动(threshold-moving):直接基于原始数据集进行学习,但在训练好的分类器进行预测时,将式(3.48)嵌入到决策过程。

上篇主要介绍和讨论了线性模型。首先从最简单的最小二乘法开始,讨论输入属性有一个和多个的情形,接着通过广义线性模型延伸开来,将预测连续值的回归问题转化为分类问题,从而引入了对数几率回归,最后线性判别分析LDA将样本点进行投影,多分类问题实质上通过划分的方法转化为多个二分类问题进行求解。本篇将讨论另一种被广泛使用的分类算法--决策树(Decision Tree)。

第4章 决策树

4.1基本流程

一棵决策树包含一个根节点、若干个内部节点和若干叶节点;叶节点对应于决策结果,其他每个节点对应与一个属性测试;

决策树的目的是为了产生一棵泛化能力强,即处理未见示例能力强的决策树。

决策树的构造
决策树的构造是一个递归的过程,有三种情形会导致递归返回:

  • (1) 当前结点包含的样本全属于同一类别,这时直接将该节点标记为叶节点,并设为相应的类别;
  • (2) 当前属性集为空,或是所有样本在所有属性上取值相同,无法划分,这时将该节点标记为叶节点,并将其类别设为该节点所含样本最多的类别;
  • (3) 当前结点包含的样本集合为空,不能划分,这时也将该节点标记为叶节点,并将其类别设为父节点中所含样本最多的类别。

算法的基本流程如下图所示:

2.png

可以看出:决策树学习的关键在于如何选择划分属性,不同的划分属性得出不同的分支结构,从而影响整颗决策树的性能。属性划分的目标是让各个划分出来的子节点尽可能地“纯”,即属于同一类别。因此下面便是介绍量化纯度的具体方法,决策树最常用的算法有三种:ID3,C4.5和CART。

4.2 划分选择

问题描述:如何选择最优划分属性.一般而言,随着划分过程的进行,我们希望决策树的分支节点所包含的样本尽可能属于同一类别.

1、信息增益(决策树ID3训练算法)

1、信息与熵的概念和度量

熵:一种事件的不确定性称为熵。比如刮刮乐,没刮之前不知道结果,熵最大;
信息:消除不确定性的物理量。消除方法有:调整概率、排除干扰、确定情况
噪声:不能消除某人对某事件不确定的实物
数据:噪声+信息

2、信息熵(information entropy)如何度量?

等概率分布:\(n=log_{2}^{m}\)
 8个等概率的不确定情况,相当于抛3个硬币,熵为3bit
 4个等概率的不确定情况,相当于抛2个硬币,熵为2bit
 假设有m种等概率的不同情况,m=2^k,那么\(n=log_{2}^m=k(bit)\)

非等概率分布(一般分布):\(Ent(D)=-\sum_{k=1}^{|y|}p_{k}log_{2}^{p_{k}},其中|y|表示类别数\)

3、信息如何量化?

得知信息前后,熵的差额,就是信息的量。
比如:ABCD 四个选项,一开始的熵为2bit,当得知C有一半正确时,A(1/6),B(1/6),C(1/2),D(1/6) 此时的熵为:1.79,则信息为0.21bit

4、信息增益

信息增益表示了属性a对样本集D划分所获得的纯度越大(尽可能归属同一类别)。ID3决策树算法就是以信息增益为准则来选择划分属性。

\[ Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}Ent(D^{v}) \\解释:Gain(D,a):通过属性a对样本集D进行划分的信息增益 \\V:属性a的取值个数,D^{v}:属性值v的样本集 \]

5、西瓜数据集2.0案例,演示ID3算法

步骤:

2、增益率(C4.5算法)

信息增益准则对可取值数目较多的属性有所偏好,为减少这种偏好可能带来的不利影响,著名的C4.5决策树算法不直接使用信息增益,而是使用 “增益率”来选择最优划分属性。

\[ 增益率定义:Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} \\其中:IV(a)=-\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}log_{2}\frac{|D^{v}|}{|D|},称为属性a的固有值. \]

属性a的可能取值数目越多(即V越大),则IV(a)的值通常会越大。

增益率准则对可取值数较少的属性有所偏好,因此C4.5并不是选择增益率最大的候选划分属性,而是使用一个启发式:先从候选划分属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

3、基尼指数(CART算法)

CART算法使用"基尼指数"(Gini index)来选择划分属性。数据集D的纯度用基尼值来度量:

\[ Gini(D)=\sum_{k=1}^{|y|}\sum_{k^{'}\neq k}p_{k}p_{k^{'}}=1-\sum_{k=1}^{|y|}p_{k}^{2} \]

直观来说,Gini(D)反映了从数据集D中随机抽取两个样本,其类别标记不一致的概率.因此Gini(D)越小,则数据集D的纯度越高。

属性a的基尼指数:

\[ Gini\_index(D,a)=\sum_{v=1}^{V}\frac{|D^{v}|}{|D|}Gini(D^{v}) \]

于是,我们在候选属性集合A中,选择哪个使得划分后基尼指数最小的属性作为最优划分属性,\(a_{*}=arg_{a\in A}\space min\space Gini\_index(D,a)\)

CART算法回归树,待定

4.3 剪枝处理

目的:防止过拟合

基于信息增益准则生成的决策树:

训练集与验证集在决策树上的情况

1、预剪枝

自上而下,能减则减

预剪枝分析:

2、后剪枝

自下而上,能不减则不减

3、对剪枝细节的补充

1、每次计算验证集精度时,是考虑了所有验证集的样本,不是某一分支下的样本数。

4.4连续与缺失值

1、连续值处理

C4.5算法下有:二分法

属性a的取值连续,比如从1到100,并分成\(a_{1},a_{2},a_{3},a_{4}\)
根据二分法,则取\(t=\frac{a_{i}+a{j}}{2},i与j相邻\),故此时的信息增益表示为:

\[ Gain(D,a)=max\space Gain(D,a,t),t=1,2,3\\ 其中t_{1}==\frac{a_{1}+a{2}}{2};t_{2}==\frac{a_{2}+a{3}}{2};t_{3}==\frac{a_{3}+a{4}}{2}; \]

2、缺失值处理

C4.5例子

注:
1、思绪梳理:按去除缺失值的样本计算信息增益,再对信息增益放大到整个样本进行权重处理。
2、\(\frac{14}{17}\)有两种解释:1、对缺失值的惩罚;2、样本数减少,信息增益也减少

其他方法:
离散值:众数填充;相关性最高的列填充
连续值:中位数;相关性最高的列做线性回归进行估计

4.5多变量决策树

普通决策树

普通决策树的特点:形成的分类边界有一个明显的特点:轴平行(axis- parallel) ,即它的分类边界由若干个与坐标轴平行的分段组成.
然而真实分类边界比较复杂。"多变量决策树"可以实现斜划分

多变量决策树

在多变量决策树的学习过程中,不是为每个非叶结点寻找一个最优划分属性,而是试图建立一个合适的线性分类器。

4.6阅读资料

决策树有很多算法:
ID3 ; C4.5 ; CART ; C4.5Relu ; 多变量决策树算法OC1(贪心寻找每个属性的最优权值;线性分类器最小二乘法) ;感知机树(决策树的叶节点上嵌入神经网络);

泛化能力影响:
剪枝方法:有实验研究表明,在数据具有噪声的情况下,通过剪枝可提高25%的性能

参考资料

  • 知乎:决策数算法的Python实现-黄耀鹏
  • youtube:StatQuest
  • hands on machine learning 2nd
  • 西瓜书
  • 知乎:Yjango视频
  • A Mathematical Theory of Communication By C.E.SHANNON 1948

上一章:1-2
下一章:5-6

posted @ 2023-10-10 00:16  AlexanderOscar  阅读(42)  评论(0编辑  收藏  举报