《机器学习》(周志华)西瓜书读书笔记

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 第1章 绪论
  • 第2章 模型评估与选择
  • 第3章 线性模型
  • 第4章 决策树
  • 第5章 神经网络
  • 第6章 神经网络
  • 第7章 贝叶斯分类
  • 第8章 集成学习


前言

随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文是《机器学习》(周志华)西瓜书读书笔记。


以下是本篇文章正文内容

第1章 绪论

对于一个学习算法a,若它在某问题上比学习算法b好,则必然存在另一些问题,在那里b比a好.即"没有免费的午餐"定理(No Free Lunch Theorem,NFL).因此要谈论算法的相对优劣,必须要针对具体的学习问题

第2章 模型评估与选择

  1. m次n折交叉验证实际上进行了m*n次训练和测试
  2. 可以用F1度量的一般形式 F β F_\beta Fβ来表达对查准率/查全率的偏好:
    F β = ( 1 + β 2 ) × P × R ( β 2 × P ) + R F_\beta=\frac{(1+\beta^2)\times P\times R}{(\beta^2\times P)+R} Fβ=(β2×P)+R(1+β2)×P×R
  3. 偏差度量了学习算法的期望预测与真实结果的偏离程度,即学习算法本身的拟合能力,方差度量了同样大小的训练集的变动所导致的学习性能的变化,即数据扰动造成的影响.噪声表达了当前任务上任何学习算法所能达到的期望泛化误差的下界,即学习问题本身的难度.

第3章 线性模型

  • 线性判别分析(LDA)是一种经典的监督线性降维方法:设法将训练样例投影到一条直线上,使同类样例的投影点尽可能接近,异类样例的投影点尽可能远离.对新样本分类时根据投影点的位置来确定类别.
  • 多分类学习的分类器一般有以下三种策略:
    1.一对一(OvO),N个类别产生N * (N - 1) / 2种分类器
    2.一对多(OvR或称OvA),N个类别产生N - 1种分类器
    3.多对多(MvM),如纠错输出码技术
  • 解决类别不平衡问题的三种方法:
    1.过采样法,增加正例使正负例数目接近,如SMOTE:思想是合成新的少数类样本,合成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本.
    2.欠采样法,减少负例使正负例数目接近,如EasyEnsemble:每次从大多数类中抽取和少数类数目差不多的重新组合,总共构成n个新的训练集,基于每个训练集训练出一个AdaBoost分类器(带阈值),最后结合之前训练分类器结果加权求和减去阈值确定最终分类类别.
    3.再缩放法

第4章 决策树

  • ID3决策树选择信息增益最大的属性来划分:
  1. 信息熵:
    E n t ( D ) = − ∑ k = 1 ∣ y ∣ p k log ⁡ 2 p k Ent(D)=-\sum_{k=1}^{\lvert y \rvert} p_k\log_2{p_k} Ent(D)=k=1ypklog2pk
  2. 信息增益:
    G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^V \frac{\left| D^v \right|}{\left| D \right|}Ent(D^v) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)
  • C4.5决策树选择增益率大的属性来划分,因为信息增益准则对可取值数目较多的属性有所偏好.但增益率会偏好于可取值数目较少的属性,因此C4.5算法先找出信息增益高于平均水平的属性,再从中选择增益率最高的.另外,C4.5决策树采用二分法对连续值进行处理,使用时将划分阈值t作为参数,选择使信息增益最大的t划分属性.采用样本权值对缺失值进行处理,含有缺失值的样本同时划入所有结点中,但相应调整权重.
  1. 增益率:
    G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)} Gain_ratio(D,a)=IV(a)Gain(D,a)
  2. a的固有值: I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ log ⁡ 2 ∣ D v ∣ ∣ D ∣ IV(a)=-\sum_{v=1}^V \frac{\left| D^v \right|}{\left| D \right|} \log_2\frac{\left| D^v \right|}{\left| D \right|} IV(a)=v=1VDDvlog2DDv
  • CART决策树则选择基尼指数最小的属性来划分,基尼系数反映了从数据集中随机抽取的两个样本类别不一致的概率,注意CART是二叉树,其余两种都为多叉树.
  1. 基尼值衡量的纯度: G a i n ( D ) = 1 − ∑ k = 1 ∣ y ∣ p k 2 Gain(D)=1-\sum_{k=1}^{\left| y \right|} p_k^2 Gain(D)=1k=1ypk2
  2. 基尼指数: G i n i _ i n d e x ( D , a ) = ∑ v = 1 V ∣ D v ∣ ∣ D ∣ G i n i ( D v ) Gini\_index(D,a)=\sum_{v=1}^V \frac{\left| D^v\right|}{\left| D\right|} Gini(D^v) Gini_index(D,a)=v=1VDDvGini(Dv)
  • 剪枝是决策树对付过拟合的主要手段,分为预剪枝和后剪枝.
  1. 预剪枝对每个结点在划分前先进行估计,若该结点的划分不能带来决策树泛化性能提升,则停止划分.预剪枝基于"贪心"本质,所以有欠拟合的风险.
  2. 后剪枝是先生成一棵完整的决策树,然后自底向上对非叶结点考察,若该结点替换为叶结点能带来决策树泛化性能提升,则将子树替换为叶结点.缺点是时间开销大.
  • 决策树所形成的分类边界是轴平行的,多变量决策树(斜决策树)的每一个非叶结点都是一个线性分类器,因此可以产生斜的划分边界.

第5章 神经网络

  • 误差逆传播算法(BP算法)是迄今为止最成功的神经网络学习算法.关键点在于通过计算误差不断逆向调整隐层神经元的连接权和阈值.标准BP算法每次仅针对一个训练样例更新,累积BP算法则根据训练集上的累积误差更新.
    《机器学习》(周志华)西瓜书读书笔记_第1张图片
  • 缓解BP神经网络过拟合有两种常见策略:
    1.早停:若训练集误差降低但验证集误差升高则停止训练.
    2.正则化:在误差目标函数中增加一个描述网络复杂度的部分(较小的连接权和阈值将使神经网络较为平滑).
  • 跳出局部最小,寻找全局最小的常用方法:
    1.以多组不同参数初始化多个神经网络,选择最接近全局最小的
    2.模拟退火
    3.随机梯度下降
  • 典型的深度学习模型就是很深层的神经网络.但是多隐层神经网络难以直接用经典算法进行训练,因为误差在多隐层内逆传播时往往会发散.无监督逐层训练(如深层信念网络,DBN)和权共享(如卷积神经网络,CNN)是常用的节省训练开销的策略.

第6章 神经网络

  • 支持向量机中的原始样本空间不一定存在符合条件的超平面,但是如果原始空间是有限维,则总存在一个高维特征空间使样本线性可分.核函数就是用来简化计算高维特征空间中的内积的一种方法.核函数选择是支持向量机的最大变数.常用的核函数有线性核,多项式核,高斯核(RBF核),拉普拉斯核,Sigmoid核.对文本数据常用线性核,情况不明时可先尝试高斯核.
  • 软间隔是缓解支持向量机过拟合的主要手段,软间隔允许某些样本不满足约束.
  • 支持向量回归可以容忍预测输出 f ( x ) f(x) f(x)和真实输出 y y y之间存在 ϵ \epsilon ϵ的偏差,仅当偏差绝对值大于 ϵ \epsilon ϵ时才计算损失.
  • 支持向量机中许多规划问题都使用拉格朗日对偶算法求解,原因在于改变了算法复杂度.原问题的算法复杂度与样本维度有关,对偶问题的样本复杂度与样本数量有关.如果使用了升维的方法,则此时样本维度会远大于样本数量,在对偶问题下求解会更好.

第7章 贝叶斯分类

  • 基于贝叶斯公式来估计后验概率的困难在于类条件概率是所有属性上的联合概率,难以从有限的训练样本直接估计而得.因此朴素贝叶斯分类器采用了"属性条件独立性假设"来避开这个障碍.

  • 朴素贝叶斯分类器中为了避免其他属性携带的信息被训练集中未出现的属性值"抹去",在估计概率值时通常要进行**“平滑”,常用拉普拉斯修正**.

  • 属性条件独立性假设在现实中往往很难成立,于是半朴素贝叶斯分类器采用"独依赖估计(ODE)",即假设每个属性在类别之外最多仅依赖于一个其他属性.在此基础上有SPODE,TAN,AODE等算法.

  • 贝叶斯网又称信念网,借助有向无环图来刻画属性之间的依赖关系,并用条件概率表来描述属性的联合概率分布.半朴素贝叶斯分类器是贝叶斯网的一种特例.

  • EM(Expectation-Maximization)算法是常用的估计参数隐变量的方法.基本思想是:若参数 θ \theta θ已知,则可根据训练数据推断出最优隐变量 Z Z Z的值(E);若 Z Z Z的值已知,则可方便地对参数 θ \theta θ做极大似然估计(M).

第8章 集成学习

  • 集成学习先产生一组个体学习器,再用某种策略将它们结合起来.如果集成中只包含同种类型的个体学习器则叫同质集成,其中的个体学习器称为基学习器,相应的学习算法称为基学习算法.如果包含不同类型的个体学习器则叫异质集成,其中的学习器常称为组件学习器.
  • 要获得好的集成,个体学习器应**“好而不同”**.即要有一定的准确性,并且要有多样性.
  • 目前的集成学习方法大致分为两大类:
    1.序列化方法:个体学习器间存在强依赖关系,必须串行生成.
    2.并行化方法:个体学习器间不存在强依赖关系,可同时生成.
  • Boosting先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使做错的训练样本在后续受到更多关注(给予更大的权重或重采样).然后基于调整后的样本分布来训练下一个基学习器;直到基学习器的数目达到指定值T之后,将这T个基学习器加权结合.Boosting主要关注降低偏差,因此能基于泛化性能相当弱的学习器构建出很强的集成.代表算法有AdaBoost.
  • Bagging是并行式集成学习方法最著名的代表.它基于自助采样法,采样出T个含m个训练样本的采样集,基于每个采样集训练出一个基学习器,再将这些基学习器进行简单结合.在对预测输出进行结合时,常对分类任务使用投票法,对回归任务使用平均法.Bagging主要关注降低方差,因此在不剪枝决策树,神经网络等易受样本扰动的学习器上效用更明显.代表算法有随机森林.
  • 随机森林在以决策树为基学习器构建Bagging的基础上,进一步引入了随机属性选择.即先从属性集合(假定有d个属性)中随机选择一个包含k个属性的子集,再从这个子集中选择一个最优属性进行划分.当k=d时,基决策树与传统决策树相同.当k=1时,则随机选择一个属性用于划分.一般推荐 k = log ⁡ 2 d k=\log_2d k=log2d.
  • 学习器结合可能会从三个方面带来好处:
    1.统计:可能有多个假设在训练集上达到同等性能,单学习器可能因误选而导致泛化性能不佳,结合多个学习器会减小这一风险.
    2.计算:通过多次运行之后进行结合,降低陷入糟糕局部极小点的风险.
    3.表示:结合多个学习器,相应的假设空间有所扩大,有可能学得更好的近似.
  • 结合策略:
    1.平均法:对数值型输出,最常见的策略是平均法.一般而言,在个体学习器性能相差较大时使用加权平均法,性能相近时使用简单平均法.权重一般也是从训练数据中学习而得.
    2.投票法:对分类任务来说,最常见的策略是投票法.又可细分为绝对多数投票法,相对多数投票法,加权投票法.绝对多数投票法允许"拒绝预测",若必须提供预测结果则退化为相对多数投票法.若基学习器的类型不同,则类概率值不能直接比较,需要将类概率输出转化为类标记输出后再投票.
    3.学习法:当训练数据很多时,一种更强大的策略是通过另一个学习器来结合.Stacking是学习法的典型代表.我们把个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器.Stacking用初级学习器的输出作为样例输入特征,用初始样本的标记作为样例标记,然后用这个新数据集来训练次级学习器.一般用初级学习器的输出类概率作为次级学习器的输入属性,用多响应线性回归(Multi-response Linear Regression,MLR)作为次级学习算法效果较好.
  • 多样性增强常用的方法有:数据样本扰动,输入属性扰动,输出表示扰动,算法参数扰动.

你可能感兴趣的:(机器学习,西瓜书,机器学习,人工智能,算法)