机器学习学习笔记-西瓜书

#西瓜书笔记

文章目录

    • 模型评估和选择
      • 线性模型
    • 决策树
    • 神经网络
    • 支持向量机
    • 贝叶斯分类
    • 集成学习
    • 聚类
      • 性能度量与距离计算
      • 原型聚类
      • 密度聚类
      • 层次聚类
    • 降维与度量学习
    • 特征选择与稀疏学习
    • 计算学习理论
    • 半监督学习
      • 半监督学习的方法
    • 概率图模型
    • 规则学习
    • 强化学习
    • 误差函数
    • 卷积池化后的图像大小计算
    • 集成学习评估特征的重要性
      • L0,L1和L2范数
    • BN batch normalization
    • EM(最大期望)算法,HMM(隐马尔可夫)算法和CRF(条件随机场)算法的关联

模型评估和选择

一,经验误差与过拟合
学习器在训练集上的误差称为“训练误差”或“经验误差”,在测试集上的误差称为“泛化误差”;
训练误差大,则造成欠拟合,而训练误差小而泛化误差大造成过拟合
二,评估方法
测试集应该尽可能与训练集互斥
“留出法”将数据集D划分为两个互斥的集合,其中一个作为训练集S,另一个作为测试集T。保留类别比例的采样方式通常称为“分层采样”,使用留出法时,一般要采用若干次随机划分、重复进行实验评估后取平均值作为留出法的评估结果,留出法的问题在于不好确定划分训练集合测试集的比例。

“交叉验证法”cross validation,先将数据集D划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性,即从D中通过分层采样得到,然后每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集,这样就可以获得k组训练\测试集,从而进行k次训练和测试,最终返回的是这k个测试结果的均值,交叉验证法评价结果的稳定性和保真性在很大程度上取决于k的取值。假定数据集D中包含m个样本,若另k=m,则得到了交叉验证法的一个特例,留一法(Leave-One-Out,简称LOO),留一法的缺陷在于数据集比较大时,训练m个模型的计算开销可能是难以忍受的。使用较多

“自助法”直接以自助采样法为基础,给定包含m个样本的数据集D,对它采样产生数据集D‘:每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到,重复上述过程m次后,得到了包含m个样本的数据集D’,自助法在数据集较小、难以有效划分训练\测试集时很有用。

一般地,用测试集上的判别效果来估计模型在实际使用时的泛化能力,而把训练数据另外划分为训练集和验证集,基于验证集上的性能来进行模型选择和调参
三.分类器评估标准
结果存在四种:TP(真正),FN(真的判成假的),FP(假的判别成真的),TN。几种常用指标:
精度:precision=TP/(TP+FP)
召回率:recall=TP(TP+FN)
F1:2/F1=1/recall+1/precison
ROC曲线:ROC 空间是一个以伪阳性率(FPR,false positive rate)为 X
轴,真阳性率(TPR, true positive rate)为 Y 轴的二维坐标系所代表的平
面。其中真阳率 TPR = TP / P = recall, 伪阳率 FPR = FP / N
ROC曲线代表的意义:曲线与FPR围成的轴面积**(AUC面积)**越大性能越好。真阳性率大,伪阳性低
四,偏差与方差
期望预测为KaTeX parse error: Expected group after '^' at position 2: f^̲'(x)=E_{D}[f(x)…
使用样本数量相同,不同训练集产生的方差为:KaTeX parse error: Expected group after '^' at position 12: E[(f(x,D)-f^̲'(x,D))^2]
噪声为=E[(y_{D}-y)^2]
期望输出与真实标记的差别为偏差:bias=KaTeX parse error: Expected group after '^' at position 3: (f^̲'-y)^2
泛化误差可分解为偏差、方差与噪声之和。偏差度量了学习算法的期望预测与真实结果的偏离程度,即预测了学习算法本身的拟合能力;方差度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画了数据扰动所造成的影响;噪声则表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界,即刻画了学习问题本身的难度。泛化性能是由学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。

线性模型

一.线性回归 主要解决回归问题
线性函数的一般式: f ( x ) = k 1 x 1 + . . . + k n x n + b f(x)=k_{1}x_{1}+...+k_{n}x_{n}+b f(x)=k1x1+...+knxn+b
其中 x = ( x 1 , x 2 , x 3 , x 4 . . . x d ) x=(x_{1},x_{2},x_{3},x_{4}...x_{d}) x=(x1,x2,x3,x4...xd)是有d个属性的示例,一般用向量形式写成: f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b
注意:在线性模型的基础上引入层级结构或高位映射可以得到许多功能更为强大的非线性模型
思想:通过对样本的学习,在样本所在的空间中找到一条直线满足所有的样本距离直线的欧几里都距离最小,找到最合适的w和b,采用最小二乘法
广义线性模型:
二.对数线性回归

y = g ( w T x i + b ) y=g(w^Tx_{i}+b) y=g(wTxi+b)g()为联系函数,如 l n ( ) ln() ln(),形式虽然是线性回归,实际求出的是输入空间到输出空间的线性映射
**三,逻辑回归 **
也称为对数几率回归, y = 1 / ( 1 + e − z ) y=1/(1+e_{-z}) y=1/(1+ez),其中Z满足线性模型 z = w x + b z=wx+b z=wx+b,将输出投射到0-1,考虑到二分类模型
四,线性判别分析 LDA
在二分类问题上最早由Fisher 提出,称为“Fisher判别分析 ”。思想很朴素:将训练样例集投影到一条直线上,使得同类样本的投影点尽可能接近,而异样样例的投影点尽可能远离;
五,多分类学习的策略
三种:一对一 一对余 多对多
多对多(M V M):每次将若干类作为正类,若干其他类作为反类。多对多的正,反类的构造必须有特殊的设计,不能随机选取。常用的技术:“纠错输出码”,工作过程主要分为两步:编码:对N个类别划分M次,每次划分将一部分划为正,,一部分为负,从而形成一个二分类器,这样一共产生M个训练集,可以训练出M个分类器,类别编码:该类别在每个分类器的类组成的编码
解码:M 个分类器分别对测试样本进行预测,这些预测标记组成一个编码.将这个预测编码与每个类别各自的编码进行比较,返回其中距离最小的类别作为最终预测结果.
六.类别不平衡问题
为实现“再缩放”
1.欠采样,使得正反样本数目相近
2.过采样,增加少的,使得数目相近
3,增加决策权重

决策树

缺失值处理

神经网络

支持向量机

1.推导过程!!!!
目的:在样本空间中获取最佳划分超平面,在样本空间中,划分超平面可通过线性方程来描述: w T x + b = 0 w^Tx+b=0 wTx+b=0,其中 w w w为法向量,决定了平面的方向 b b b为位移项决定了超平面与原点之间的距离。样本空间中任意一点 x x x到超平面 ( w , b ) (w,b) (w,b)的距离为** r = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ r=\frac{|w^Tx+b|}{||w||} r=wwTx+b**
假设超平面能够将训练样本正确分类,即对于 ( x i , y i ) (x_{i},y_{i}) (xi,yi),若 y i = + 1 y_{i}=+1 yi=+1,则有 w T x i + b > 0 w^Tx_{i}+b>0 wTxi+b>0;若 y i = − 1 y_{i}=-1 yi=1,则有 w T x i + b < 0 w^Tx_{i}+b<0 wTxi+b<0.令分类超平面满足
y i = 1 y_{i}=1 yi=1 w T x i + b > = 1 w^Tx_{i}+b>=1 wTxi+b>=1, y i = − 1 y_{i}=-1 yi=1时, w T x i + b < = − 1 w^Tx_{i}+b<=-1 wTxi+b<=1,所以最近的支持向量到超平面的距离和为: γ = 2 ∣ ∣ w ∣ ∣ \gamma=\frac{2}{||w||} γ=w2,它是找最优分类平面的目标函数,同时具有约束函数满足:
y i ( w T x i + b ) > = 1 , i = 1 , 2 , 3 , . . . m y_{i}(w^Tx_{i }+b)>=1,i=1,2,3,...m yi(wTxi+b)>=1i=1,2,3,...m
对偶问题,求解函数
w w w b b b是函数参数,目标函数本身是一个凸二次规划,使用拉格朗日函数法,得到目标函数的对偶问题,则该问题的拉格朗日函数可写为:
L ( w , b , a ) = 1 2 ∣ ∣ w ∣ ∣ 2 + ∑ i = 1 m a i ( 1 − y i ( w T x i + b ) ) L(w,b,a)=\frac{1}{2}||w||^2+\sum_{i=1}^ma_{i}(1-y_{i}(w^Tx_{i}+b)) L(w,b,a)=21w2+i=1mai(1yi(wTxi+b))
其中, a = ( a 1 ; . . . a m ) a=(a_{1};...a_m) a=(a1;...am),令函数 L ( w , b , a ) L(w,b,a) L(w,b,a) w w w b b b求偏导为零可得:
w = ∑ i = 1 m a i y i x i w=\sum_{i=1}^ma_{i}y_{i}x_{i} w=i=1maiyixi
0 = ∑ i = 1 m a i y i 0=\sum_{i=1}^ma_{i }y_{i} 0=i=1maiyi
将两个的结果代入拉格朗日函数,即可消除 w w w b b b,最后的到原始问题的对偶问题:
m a x ∑ i = 1 m a i − 1 2 ∑ i = 1 m ∑ j = 1 m a i a j y i y j x i T x j max\sum_{i=1}^ma_i-\frac{1}{2}\sum_{i=1}^m\sum_{j=1}^ma_ia_jy_iy_jx_{i}^Tx_{j} maxi=1mai21i=1mj=1maiajyiyjxiTxj
s . t . ∑ i = 1 m a i y i = 0 s.t.\sum_{i=1}^ma_{i}y_i=0 s.t.i=1maiyi=0
解出 a a a后,求出 w w w b b b即可得到模型: f ( x ) = w T x + b = ∑ i = 1 m a i y i x i T x + b f(x)=w^Tx+b=\sum_{i=1}^ma_{i}y_ix_i^Tx+b f(x)=wTx+b=i=1maiyixiTx+b
同时满足下面条件:
a i > = 0 a_{i}>=0 ai>=0
y i f ( x i ) − 1 > = 0 y_{i}f(x_{i})-1>=0 yif(xi)1>=0
a i ( y i f ( x i ) − 1 ) = 0 a_{i}(y_{i}f(x_{i})-1)=0 ai(yif(xi)1)=0
那么,如何求解对偶函数,这是一个二次规划问题,使用训练样本求解,但是求解规模和训练样本数正相关。
怎样求解对偶函数:SMO算法
基本思路:先固定 a i a_{i} ai之外的所有参数,然后求 a i a_{i} ai的极值,由于存在约束 ∑ i = 1 m a i y i = 0 \sum_{i=1}^ma_iy_i=0 i=1maiyi=0,先固定 a i a_i ai以外的参数,然后自己可以由其他变量导出。于是SMO每次选择两个变量 a i , a j a_i,a_j ai,aj,并固定其他参数,这样在参数初始化后,SMO不断执行如下两个步骤直至收敛:
常用核函数:解决非线性可分样本的分类问题
线性核
多项式核
高斯核
拉普拉斯核
Sigmoid核
软间隔与正则化
软间隔:允许某些样本不满足标准样本形式,防止过拟合
支持向量回归:SVR
基本思想:传统的回归模型通常直接基于模型的输出与真实输出之间的差别计算损失,与此不通,支持向量回归假设我们能容忍 f ( x ) f(x) f(x) y y y之间最多有 λ \lambda λ的偏差,当误差大于他时才会计算损失
机器学习学习笔记-西瓜书_第1张图片
于是,SVR的问题可形式化为: m i n ( w , b ) 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ( ι f ( x i ) − y i ) min(w,b)\frac{1}{2}||w||^2+C\sum_{i=1}^m(\iota f(x_i)-y_i) min(w,b)21w2+Ci=1m(ιf(xi)yi)
即尽可能的使得样本尽可能的在拟合区域内
其中 ι \iota ι为不敏感损失函数:损失<= λ \lambda λ,值为0,大于则等于 ∣ z ∣ − λ |z|-\lambda zλ
机器学习学习笔记-西瓜书_第2张图片

贝叶斯分类

贝叶斯决策论:是概率框架下实施决策的基本方法。(从样本中的观察概率获得一般概率),最小化总体风险,选择每个样本使得总体化风险最小化的样本类别。

集成学习

构建并合并多个学习器来完成任务,优势也被称为多分类器系统,基于委员会的学习。
同质集成:只包含同类型的决策器。如何获得好的比最好的单一学器更好的性能?“好而不同”即个体的学习器有一定的“准确性”,并且要有“多样性”。
一般的,个分类器很高之后,要增加多样性就需要牺牲准确性,目前的集成学习方法大致分为两大类:1.个体学习器间存在强依赖关系、必须串行生成的序列化方法 代表为boosting2,个体学习器间不存在强依赖关系,可同时生成并行化的方法。代表Bagging和随机森林
Boosting
工作机制:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直至基学习器数目达到事先指定的值 T , 最终将这 T 个基学习器进行加权结合.
该系列最著名的是AdaBoost,只适用于二分类任务.比较容易理解的推导形式即基学习器的加性组合 H ( x ) = ∑ t = 1 T a t h t ( x ) H(x)=\sum_{t=1}^Ta_{t}h_{t}(x) H(x)=t=1Tatht(x)
算法过程:
输入: 训练集,基学习算法 ζ \zeta ζ,训练轮数T(也是基学习器最大个数)

  • δ 1 ( x ) = 1 / m \delta_{1}(x)=1/m δ1(x)=1/m 初始化样本权值分布
  • for t=1,2,…T do
  • h t = ζ ( D , δ t ) h_{t}=\zeta(D,\delta_{t}) ht=ζ(D,δt)
  • ε t = P ( h t ≠ f t ) \varepsilon_{t}=P(h_{t}\neq f_{t}) εt=P(ht=ft)估计预测值误差
  • if ε t > 0.5 \varepsilon_{t}>0.5 εt>0.5then break 没有随机猜测的概率高的话抛弃学习器
  • α t = 1 / 2 l n ( 1 − ε t ε t ) \alpha_{t}=1/2ln(\frac{1-\varepsilon_{t}}{\varepsilon_{t}}) αt=1/2ln(εt1εt) 更新该基模型权重权重
  • δ t + 1 ( x ) = δ t ( x ) e x p ( − α t f ( x ) ) h t ( x ) Z t \delta_{t+1}(x)=\frac{\delta_{t}(x)exp(-\alpha_{t}f(x))h_{t}(x)}{Z_{t}} δt+1(x)=Ztδt(x)exp(αtf(x))ht(x)更新样本分布,其中 z t z_{t} zt是规范化因子,以确保$$是一个分布
  • end for
    输出: H ( x ) = s i g n ( ∑ T t = 1 α t h t ( x ) ) H(x)=sign(\sum_{T}^{t=1}\alpha_{t}h_{t}(x)) H(x)=sign(Tt=1αtht(x))

Bagging 与随机森林
一,Bagging
Bagging + 决策树 = 随机森林
AdaBoost + 决策树 = 提升树
Gradient Boosting + 决策树 = GBDT->XGBoost & LightGBM
是并行式集成学习的代表,它直接基于我们在 2.2.3 节介绍过的自助来样法 (bootstrap sampling).
给定包含 m 个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过 m次随机采样操作,我们得到含 m 个样本的采样集,初始训练集中有的样本在采样集里多次出现,有的则从未出现.由式 (2.1)可知,初始训练集中约有 **63.2%**的样本出现在采样集中.照这样,我们可采样出 T 个含 m 个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合.这就是 Bagging 的基本流程.在对预测输出进行结合时, Bagging 通常对分类任务使用简单投票法?对回归任务使用简单平均法.若分类预测时出现两个类收到同样票数的情形,则最简单的做法是随机选择一个,也可进一步考察学习器投票的置信度来确定最
终胜者。与标准 AdaBoost 只适用于二分类任务不间, Bagging 能不经修改地用于多分类和回归任务
事实上,包外样本27.8%还有许多其他用途.例如当基学习器是决策树时,可使用包外样本来辅助剪枝,或用于估计决策树中各结点的后验概率以辅助对零训练样本结点的处理;当基学马若是是神经网络时?可使用包外样本来辅助早期停止以减小过拟合风险.
从偏差方差分解的角度看, Bagging 主要关注降低方差,因此它在不剪枝决策树、神经网络等易受样本扰动的学习器上效用更为明显.我们以基于信息增益划分的决策树为基学习器
随机森林RF
是Bagging的扩展变体,RF在以决策树为基学习器构建的bagging集成的基础上,进一步在决策树的训练过程中引入随机属性选择。而在
RF 中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含 k个属性的子集,然后再从这个子集 中选择一个最优属性用 于划分. 这里 的参数k 控制了 随机性的引入程度 ;若令 k = d , 则基决策树的构建与 传统决策树相同;若令 k = 1 , 则是随机选择一个属性用 于划分 ; 一般情况下,推荐值 k = l o g 2 d k = log_{2}d k=log2d

boosting tree提升树->Gradient Boosting tree梯度提升树->Gradient Boosting + 决策树 = GBDT(梯度提升决策树)->XGBoost & LightGBM
1.提升树
提升树(boosting tree)是以决策树为基本学习器提升方法,它被认为是统计学习中性能最好的方法之一。对于分类问题,提升树的决策树是二叉决策树,对于回归问题,提升树中的决策是二叉回归树。
提升树采用前向分布算法:

  • 首先确定初始提升树 f 0 ( x ) = 0 f_{0}(x)=0 f0(x)=0
  • 对于m=1,2,…M
  • 计算残差: r m , i = y i − f m − 1 ( x i ) r_{m,i}=y_{i}-f_{m-1}(x_{i}) rm,i=yifm1(xi),构建训练残差: r m = ( x 1 , r m , 1 ) , . . . ( x N , r m , N ) r_{m}={(x_{1},r_{m,1}),...(x_{N},r_{m,N})} rm=(x1,rm,1),...(xN,rm,N)
  • 通过学习一个回归树来拟合残差rm,得到 h m ( x , θ ) h_{m}(x,\theta) hm(x,θ)
  • 第m步模型为: f m ( x ) = f m − 1 ( x ) + h m ( x , θ ) f_{m}(x)=f_{m-1}(x)+h_{m}(x,\theta) fm(x)=fm1(x)+hm(x,θ).其中的 h m ( . ) h_{m}(.) hm(.)为待求的第m个决策树
  • 通过经验极小化确定第m个决策树的参数 θ \theta θ,这里没有引入正则化,而xgboost会引入正则化

二,梯度提升决策树 GBDT(系列模型的起源)
基本概念
机器学习学习笔记-西瓜书_第3张图片

GBDT (Gradient Boosting Decision Tree) 是机器学习中一个长盛不衰的模型,其主要思想是利用弱分类器(分类决策树CART)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点。
最终的决策树加法模型: F ( x ) = ∑ m = 1 M T ( x ; θ m ) F(x)=\sum_{m=1}^MT(x;\theta_m) F(x)=m=1MT(x;θm)
其中, T ( x ; θ m ) T(x;\theta_m) T(x;θm)表示决策树; θ m \theta_m θm为决策树的参数;M为树的个数或者也可以成为训练的次数

GBDT 选择分割点的过程, 如果特征有多个的话也是一样的道理,选择特征和特征值使得误差最小的点,作为分割点。
如何选择特征选择
这个可以暴力求解,首先遍历每个特征,然后遍历每个特征所有可能的切分点,找到最优特征j对应的最优特征m。可以使用平方误差最小的准则求解最优值。
做回归和分类问题上,算法的设计不同

  • 回归树
    模型函数 f ( x ) = ∑ m = 1 M c m I ( x ∈ R m ) f(x)=\sum_{m=1}^Mc_mI(x\in R_m) f(x)=m=1McmI(xRm)
    其中, I I I是输入, c m c_m cm是一个区域的输出 y i y_i yi的平均值,当输入空间划分确定时,可以用平方误差 ∑ ( y i − f ( x i ) ) 2 \sum(y_i-f(x_i))^2 (yif(xi))2来表示预测误差,使得选择的特征和分界点使得回归拟合的损失函数最小。
    2.选择特征和切分点的方法
    寻找最优的切分变量 j j j和最优切分点 s s s,求解下面的函数:
    公式1: m i n j , s [ m i n c 1 ∑ ( y i − c 1 ) 2 + m i n c 2 ∑ ( y i − c 2 ) 2 ] min_{j,s}[min_{c_1}\sum(y_i-c1)^2+min_{c_2}\sum(y_i-c_2)^2] minj,s[minc1(yic1)2+minc2(yic2)2]
    固定输入变量 j j j,可以找到最优切分点 s s s
    公式2: c 1 = a v e ( y i ∣ x i ∈ R 1 ( j , s ) ) c_1=ave(y_i|x_i\in R_1(j,s)) c1=ave(yixiR1(j,s)), c 2 = a v e ( y i ∣ x i ∈ R 2 ( j , s ) ) c_2=ave(y_i|x_i \in R_2(j,s)) c2=ave(yixiR2(j,s))
    3.算法流程 最小二乘回归生成算法
    1)选择最优切分变量 j j j与切分点 s s s,求解公式1,遍历变量 j j j,再对固定的切分变量 j j j扫描切分点 s s s,使得公式解最小。
    2)使用公式2,在确定(j,s)划分区域区域并决定相应的输出值
    3)继续对1,2步骤学习,直至满足停止条件
    4)将输入空间划分为M个区域,生成决策树模型
    4.拟合残差
    假设当前轮的输出为 y ′ y' y,对应标签是 y i y_i yi,下一论拟合的是上一轮随影的残差 y i = y i − y ′ y_i=y_i-y' yi=yiy

  • 分类树

基尼指数和熵的意义一样,表示集合的不确定性,所以基尼系数越小,代表越确定,选择的特征和分界点要使得基尼指数最小。假设有 K K K个类,样本点属于第k类的概率为 p k p_k pk,则概率分布的基尼指数定义为 G i n i ( p ) = ∑ k = 1 k p k ( 1 − p k ) = 1 − ∑ k = 1 k p k 2 Gini(p)=\sum_{k=1}^kp_k(1-p_k)=1-\sum_{k=1}^kp_k^2 Gini(p)=k=1kpk(1pk)=1k=1kpk2,最后的决策树模型使得基尼指数最小
具体的说明,推荐文章:https://zhuanlan.zhihu.com/p/132726342
三,XGBoost
还支持线性分类器,这个时候XGBoost就相当于带L1正则和L2正则项的logistics回归损失函数增加了结构风险最小化
GBDT 和XGBoost的区别:

  • GDBT是机器学习算法,而XGBoost是该算法的工程实现;
  • 在使用CART作为基分类器时,XGBoost显式地加入正则项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力;
    目标函数定义: O b j ( t ) = ∑ i = 1 n L ( ) + Ω ( f ( t ) ) + c o n s t a n t Obj(t)=\sum_{i=1}^nL()+\Omega(f(t))+constant Obj(t)=i=1nL()+Ω(f(t))+constant, c o n s t a a n t constaant constaant为一个常数,正则项 Ω ( f t ) = γ T + 1 / 2 λ ∑ i = 1 T w j 2 \Omega(f_t)=\gamma T+1/2\lambda\sum_{i=1}^Tw_j^2 Ω(ft)=γT+1/2λi=1Twj2其中, T T Tb表示叶子节点数, w j w_j wj表示第 j j j个叶子结点的权重。
  • GDBT在模型训练时只使用了代价函数的一阶导数信息,XGBoost对代价函数进行二阶泰勒展开,可以同时使用一阶和二阶导数。
  • 传统的GBDT采用CART作为基分类器,XGBoost支持多种类型的基分类器,比如线性分类器。
  • 传统的GBDT在每轮迭代时使用全部的数据,XGBoost则采用了与随机森林相似的策略,支持对数据采样
  • 传统的GBDT没有设计对缺失值进行处理,XGBoost能够自动学习出缺失值的处理策略

四,LightGBM(深入了解)

参考文献:https://zhuanlan.zhihu.com/p/99069186

  • 动机
    常用的机器学习算法,例如神经网络等算法,都可以以mini-batch的方式训练,训练数据的大小不会受到内存限制。而GBDT在每一次迭代的时候,都需要遍历整个训练数据多次。如果把整个训练数据装进内存则会限制训练数据的大小;如果不装进内存,反复地读写训练数据又会消耗非常大的时间。尤其面对工业级海量的数据,普通的GBDT算法是不能满足其需求的。(XGBoost也有同样的操作)
    LightGBM提出的主要原因就是为了解决GBDT在海量数据遇到的问题,让GBDT可以更好更快地用于工业实践。

  • XGBoost的缺点及LightGBM的优化
    1)XGBoost的缺点
    它是基于预排序方法的决策树算法。这种构建决策树的算法基本思想是:首先,对所有特征都按照特征的数值进行预排序。其次,在遍历分割点的时候用O(#data)的代价找到一个特征上的最好分割点。最后,在找到一个特征的最好分割点后,将数据分裂成左右子节点。
    这样的预排序算法的优点是能精确地找到分割点。但是缺点也很明显:首先,空间消耗大。这样的算法需要保存数据的特征值,还保存了特征排序的结果(例如,为了后续快速的计算分割点,保存了排序后的索引),这就需要消耗训练数据两倍的内存。其次,时间上也有较大的开销,在遍历每一个分割点的时候,都需要进行分裂增益的计算,消耗的代价大。最后,对cache优化不友好。在预排序后,特征对梯度的访问是一种随机访问,并且不同的特征访问的顺序不一样,无法对cache进行优化。同时,在每一层长树的时候,需要随机访问一个行索引到叶子索引的数组,并且不同特征访问的顺序也不一样,也会造成较大的cache miss。
    2)lightGBM优化

  • 基于直方图的决策树算法
    针对连续的浮点特征值,使用直方图统计化为 k k k个整数,同时构造一个宽度为 k k k的直方图,根据离散值遍历寻找最优的分割点。
    好处:1.内存占用更小

  • 单边梯度采样 Gradient-based One-Side Sampling(GOSS):使用GOSS可以减少大量只具有小梯度的数据实例,这样在计算信息增益的时候只利用剩下的具有高梯度的数据就可以了,相比XGBoost遍历所有特征值节省了不少时间和空间上的开销。

  • 互斥特征捆绑 Exclusive Feature Bundling(EFB):使用EFB可以将许多互斥的特征绑定为一个特征,这样达到了降维的目的

  • 带深度限制的Leaf-wise的叶子生长策略:大多数GBDT工具使用低效的按层生长 (level-wise) 的决策树生长策略,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销。实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。LightGBM使用了带有深度限制的按叶子生长 (leaf-wise) 算法。

  • 直接支持类别特征(Categorical Feature),不用再one-hot编码之类的

  • 支持高效并行

  • Cache命中率优化

聚类

性能度量与距离计算

1,外部指标
数据集D的聚类结果C,外部参考的聚类结果 C ∗ C^* C λ \lambda λ λ ∗ \lambda^* λ为聚类结果对,存在以下数据个数。S表示在同一簇中的样本对,D表示不再同一簇中的样本对。
a = ∣ S S ∣ a=|SS| a=SS
b = ∣ S D ∣ b=|SD| b=SD
c = ∣ D S ∣ c=|DS| c=DS
d = ∣ D D ∣ d=|DD| d=DD
定义以下内部指标:

  1. Jaccard系数 J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca
  2. FM指数 F M I = a a + b ∗ a a + c FMI=\sqrt{\frac{a}{a+b}*\frac{a}{a+c}} FMI=a+baa+ca
  3. Rand指数 R I = 2 ( a + d ) m ( m − 1 ) RI=\frac{2(a+d)}{m(m-1)} RI=m(m1)2(a+d)
    m m m是样本数量,所以 m ( m − 1 ) / 2 m(m-1)/2 m(m1)/2是结果中的样本对个数

上述指标的值均在[0,1]中,值越大越好。
2,内部指标
考虑聚类结果的簇划分 C = C 1 , C 2 , . . . . C k C={C_1,C_2,....C_k} C=C1,C2,....Ck定义:
簇C内样本间的平均距离 a v g ( c ) = 2 ∣ c ∣ ( ∣ c ∣ − 1 ) ∑ 1 < i < j < ∣ c ∣ d i s t ( x i , x j ) avg(c)=\frac{2}{|c|(|c|-1)}\sum_{1avg(c)=c(c1)21<i<j<cdist(xi,xj)
簇C内样本间最远距离: d i a m ( c ) = m a x 1 < i < j < ∣ C ∣ d i s t ( x i , x j ) diam(c)=max_{1diam(c)=max1<i<j<Cdist(xi,xj)
C i C_i Ci与簇 C j C_j Cj的最近样本间距离: d m i n ( C i , C j ) = m i n x i ∈ C i , x j ∈ C j d i s t ( x i , x j ) d_{min}(C_i,C_j)=min_{x_i\in C_i,x_j\in C_j}dist(x_i,x_j) dmin(Ci,Cj)=minxiCi,xjCjdist(xi,xj)
C i C_i Ci与簇 C j C_j Cj的中心点距离: d c e n ( C i , C j ) = d i s t ( u i , u j ) d_{cen}(C_i,C_j)=dist(u_i,u_j) dcen(Ci,Cj)=dist(ui,uj)
不考虑外部参考的结果,内部指标:

  1. DB指数 DBI
    D B I = 1 k ∑ i = 1 k m a x ( a v g ( c i ) + a v g ( c j ) d c e n ( u i , u j ) ) DBI=\frac{1}{k}\sum_{i=1}^kmax(\frac{avg(c_i)+avg(c_j)}{d_{cen}(u_i,u_j)}) DBI=k1i=1kmax(dcen(ui,uj)avg(ci)+avg(cj))
  2. Dunn指数 DI
    D I = m i n 1 < i < k ( m i n ( d m i n ( c i , c j ) m a x 1 < l < k d i a m ( C l ) ) ) DI=min_{1DI=min1<i<k(min(max1<l<kdiam(Cl)dmin(ci,cj)))
    显然DBI(类间)值越小越好,而DI(类内)相反,值越大越好

3.距离计算
最常用的是欧氏距离,改进的有余弦距离马氏距离

一般定义属性分为连续属性离散属性
比如{1,2,3}为连续属性可以使用欧氏距离进行计算,而{马车,飞机,汽车}属性使用VDM距离表示:
m u , a 表 示 属 性 u 上 取 值 为 a 的 样 本 数 , k 为 样 本 簇 数 , 距 离 表 示 属 性 u 上 两 个 离 散 值 a 与 b 之 间 的 距 离 m_{u,a}表示属性u上取值为a的样本数,k为样本簇数,距离表示属性u上两个离散值a与b之间的距离 mu,auakuab
V D M p ( a , b ) = ∑ i = 1 k ∣ m u , a , i m u , a − m u , b , i m u , b ∣ p VDM_p(a,b)=\sum_{i=1}^k|\frac{m_{u,a,i}}{m_{u,a}}-\frac{m_{u,b,i}}{m_{u,b}}|^p VDMp(a,b)=i=1kmu,amu,a,imu,bmu,b,ip

原型聚类

1. k均值聚类
2. 学习向量量化 LVQ
带有类别标记样本,有监督学习聚类。
算法流程:初始化学习率 λ ∈ ( 0 , 1 ) \lambda\in(0,1) λ(0,1)
1,初始化一组原始向量 ( p 1 , p 2 , . . . p q ) (p_1,p_2,...p_q) (p1,p2,...pq);
2,repeat
3, 从样本D中随机选取样本 ( x j , y j ) (x_j,y_j) (xj,yj)
4,计算样本 x j 与 p i 的 距 离 : d i j = ∣ ∣ x j − p i ∣ ∣ 2 x_j与p_i的距离:d_{ij}=||x_j-p_i||_2 xjpidij=xjpi2;
5,找出与 x j x_j xj距离最近的的原型向量 p i ∗ , i ∗ = a r g m i n i ∈ ( 1 , 2 , . . . q ) d j i p_{i^*},i^*=argmin_{i\in(1,2,...q)}d_{ji} pi,i=argmini(1,2,...q)dji
6,if y j = t i ∗ y_j=t_{i^*} yj=ti then p ′ = p i ∗ + λ ∗ ( x j − p i ∗ ) p'=p_{i^*}+\lambda*(x_j-p_{i^*}) p=pi+λ(xjpi)
7,else p ′ = p i ∗ − λ ∗ ( x j − p i ∗ ) p'=p_{i^*}-\lambda*(x_j-p_{i^*}) p=piλ(xjpi)
8,end if
9,将原型向量 p i ∗ p_{i^*} pi,更新为 p ′ p' p
10,util满足停止条件
条件一般是:达到最大迭代次数,或者更新很小甚至不再更新

4. 高斯混合聚类
高斯混合采用概率模型表达聚类原型。
E步:先根据当前参数来计算每个样本属于每个高斯成分的后验概率 γ j i \gamma_{ji} γji
M步:根据公式更新模型参数,每个簇的分布参数 ( α i , u i , ∑ i ( 协 方 差 矩 阵 ) ) (\alpha_i,u_i,\sum_i(协方差矩阵)) (αi,ui,i())
参数更新公式:

  1. u i = ∑ j = 1 m y j i x j ∑ j = 1 m γ j i u_i=\frac{\sum_{j=1}^my_{ji}x_j}{\sum_{j=1}^m\gamma_{ji}} ui=j=1mγjij=1myjixj
  2. 协方差矩阵 ∑ i = ∑ j = 1 m γ j i ( x j − u i ) ( x j − u i ) T ∑ j = 1 m γ j i \sum_i=\frac{\sum_{j=1}^m\gamma_{ji}(x_j-u_i)(x_j-u_i)^T}{\sum_{j=1}^m\gamma_{ji}} i=j=1mγjij=1mγji(xjui)(xjui)T
  3. α i = 1 m ∑ j = 1 m γ j i \alpha_i=\frac{1}{m}\sum_{j=1}^m\gamma_{ji} αi=m1j=1mγji

密度聚类

DBSCAN

层次聚类

AGNES

降维与度量学习

K近邻学习

特征选择与稀疏学习

计算学习理论

半监督学习

什么是半监督学习
生活中存在已标记样本,也存在大量未标记样本,如果,只使用标记样本,会浪费大量的未标记样本。
半监督学习:利用已标记样本建立模型,对未标记样本进行判断出标签,然后添加今天建立新的模型,这样知道将所有的未标记样本添加进来。
让学习器不依赖外界交互、自动地利用未标记样本提升学习性能,就是半监督学习。
半监督学习建立在“相似的样本拥有相似的输出”的聚类假设或流形假设。也分为纯半监督学习与直推学习两种。

半监督学习的方法

1.生成式方法 高斯混合半监督
EM算法(最大似然估计),已标记样本已经聚类,对未标记样本进行聚类,将其聚类到一个类别,进行标记。
半监督SVM

图半监督学习
基于分歧
半监督聚类
半监督深度学习

概率图模型

规则学习

强化学习

误差函数

1.0-1损失函数
预测成功,损失为0,预测错误损失为1.
2.平方损失函数:最小二乘法的具体表现,误差分布满足正态分布
3.绝对损失函数

4.对数损失函数
怎样选择?监督学习有两种策略:经验最小化和结构风险最小化

当样本容量小时,经验风险最小化的策略容易产生过拟合的现象。结构风险最小化可以防止过拟合。结构风险最小化是在经验风险的基础上加上表示模型复杂度的正则化项或罚项:

卷积池化后的图像大小计算

设图像尺寸为WxW,卷积核尺寸为F,步幅为S,padding(补0)使用为p,经过卷积层输出的图像尺寸为 ( W − F + 2 P ) / s + 1 (W-F+2P)/s+1 (WF+2P)/s+1,根据padding的类型,计算不同。当padding=‘SAME’,输出尺寸为W/S,当padding=‘valid’,输出尺寸为: ( W − F + 1 ) / S (W-F+1)/S (WF+1)/S

集成学习评估特征的重要性

基尼系数

L0,L1和L2范数

L0范数是指向量中非0的元素的个数,
L1范数是指向量中个元素绝对值之和,可以特征选择,即让特征系数变为0
L2范数是指向量各元素的平方和然后求平方根,提升模型的泛化能力,防止过拟合

1.监督学习的基本模型
监督学习的本质:在规则化参数的同时最小化误差。最小化误差是为了让我们的模型拟合我们的训练数据,而规则化参数是防止我们的模型过分拟合我们的训练数据。,规则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。 所以范数是针对损失函数里的

一般来说,监督学习可以看做最小化下面的目标函数:
第一项经验损失函数:衡量预测值和真实值之间的误差
我们不仅要保证训练误差最小,我们更希望我们的模型测试误差小,所以我们需要加上
第二项,也就是对参数w的规则化函数Ω(w)去约束我们的模型尽量的简单。
规则化函数Ω(w)也有很多种选择,一般是模型复杂度的单调递增函数,模型越复杂,规则化值就越大。比如,规则化项可以是模型参数向量的范数。然而,不同的选择对参数w的约束不同,取得的效果也不同。
L0和L1会让一部分权重为0,减少特征,特征选择
L2会减少特征的权重值,倾向于采用更多特征,维度更高,防止过拟合

BN batch normalization

传统的神经网络,只是将样本x进入到输入层之前对x进行0-1标准化处理,以降低样本间的差异性,
BN在此基础上,不仅仅只对输入层的输入数据进行标准化,还对每个隐藏层进行标准化:
1,第一层的权重项wx+b得到s1
2,对s1进行0-1均值方差标准化,得到s2
3,设置两个参数 λ \lambda λ α \alpha α,计算 λ \lambda λ*s2+ α \alpha α.注意,这里的 λ \lambda λ α \alpha α是网络要学习的参数
4,将s3经过激活函数激活之后得到h1

EM(最大期望)算法,HMM(隐马尔可夫)算法和CRF(条件随机场)算法的关联

  1. EM算法 用于含有隐变量模型的极大似然估计或者极大后验估计,有两步:E:求期望,M:求极大期望值。EM 算法还是一个迭代算法,通过不断用上一 代参数对隐变量的估计来对当前变量进行计算,直到收敛。

你可能感兴趣的:(机器学习,python,算法,算法,python)