算法入门

2020-05-28  本文已影响0人  amyhy

1、特征工程

归一化

类别型特征处理

组合特征

文本表示模型

图像数据不足时的处理方法

2、模型评估

评估指标的局限性

ROC曲线

ROC曲线(受试者工作特征曲线)的横坐标为假阳性率(分错的负样本占所有负样本比率),纵坐标为真阳性率(分对的正样本占所有正样本比率)。通过动态地调整分类模型的分类阈值,可以在ROC图上绘制出每一个分类阈值对应的两个坐标值,再连接所有点绘制出模型的ROC曲线。AUC指ROC曲线下面积的大小,该指标能够量化地反映基于ROC曲线的模型性能,AUC的取值一般都在0.5~1之间,值越大,说明分类器越可能把真正的正样本排在前面,分类性能越好。相比较P-R曲线,ROC曲线在正负样本的分布发生变化时,形状能够基本保持不变,而P-R曲线一般会发生较剧烈的变化,这个特点可以使得ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。在实际中,正负样本数量往往不均衡,因此ROC曲线的适用场景更广泛。

余弦距离的应用

A/B测试的陷阱

模型验证方法

超参数调优

过拟合和欠拟合

3、经典算法

SVM

对于任意线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的。由于SVM的分类超平面仅由支持向量决定,可以考虑只含有支持向量的场景:假设存在一个SVM超平面满足投影线性可分,则样本中分属两类的支持向量之间的中垂线所组成的超平面是相较于SVM超平面更优的解,这与SVM超平面为最优分类超平面的假设相违背。

SVM的KKT条件:\begin{cases}\nabla_\omega L(\omega^*,\beta^*,\alpha^*)=\omega^*-\sum_{i=1}^N\alpha_i^*y_ix_i=0& & (1)\\ \nabla_\beta L(\omega^*,\beta^*,\alpha^*)=-\sum_{i=1}^N\alpha_i^*y_i=0& & (2)\\\alpha_i^*g_i(\omega^*)=0, i=1,...,N& & (3)\\g_i(\omega^*)\leq0,i=1,...,N& & (4)\\\alpha_i^*\geq0, i=1,...,N& & (5)\\\end{cases}

结合(3)和(4),当g_i(\omega^*)<0时,必有\alpha_i^*=0,将这一结果与拉格朗日对偶优化问题的公式相比较:L(\omega^*,\beta^*,\alpha^*)=\frac{1}{2}\omega^{*2}+\sum_{i=1}^N\alpha_i^*g_i(\omega^*),其中g_i(\omega^*)=-y_i(\omega^*\cdot x_i+\beta^*)+1。除了支持向量之外,其他系数均为0,因此SVM的分类结果仅依赖于支持向量,SVM的分类结果与仅使用支持向量的分类结果一致。

该问题也可以通过凸优化理论中的超平面分离定理解决。

高斯核SVM的预测公式为:f(x)=\sum_{i=1}^m\alpha_iy^{(i)}K(x^{(i)},x)+b,固定\alpha_i=1,b=0,则有f(x)=\sum_{i=1}^my^{(i)}K(x^{(i)},x)=\sum_{i=1}^my^{(i)}exp(-\parallel x-x^{(i)}\parallel^2/\gamma^2)。由于不存在两个点在同一位置,则对于任意点i\neq j,有\parallel x^{(j)}-x^{(i)}\parallel \geq \epsilon.

对于任意x^{(j)},取\gamma=\epsilon/\sqrt{logm},有\parallel f(x^{(j)})-y^{(j)}\parallel=\parallel\sum_{i=1,i\neq j}^my^{(i)}exp(-\parallel x^{(j)}-x^{(i)}\parallel^2/\gamma^2)\parallel \leq \parallel\sum_{i=1,i\neq j}^mexp(-\parallel x^{(j)}-x^{(i)}\parallel^2/\gamma^2) \parallel \leq \parallel\sum_{i=1,i\neq j}^mexp(-logm)\parallel=\frac{m-1}{m}<1

所以,对于任意x^{(j)},预测结果f(x^{(j)})与真实标签的距离小于1,所有样本的类别都被正确预测,训练误差为0.

本题等价于找到使训练误差为0的参数,且是SVM模型的一个解。上述所找到的参数可以满足y^{(j)}f(x^{(j)})>0,若想成为SVM的解,还需要满足y^{(j)}f(x^{(j)})\geq 1

仍然固定b=0,则有y^{(j)}f(x^{(j)})=\alpha_j+\sum_{i=1,i\neq j}^m \alpha_iy^{(i)}y^{(j)}K(x^{(i)},x^{(j)}). 此时可以把每个\alpha_j都选择一个很大的值,同时取一个非常小的\gamma,使得核映射项K(x^{(i)},x^{(j)})非常小,就可以满足题意。

不一定能得到训练误差为0的模型,因为此时优化的目标改变了,当松弛变量模型目标函数参数C选取较小的值时,正则项将占据优化的较大比重,此时一个带有训练误差但是参数较小的点将成为更优的结果。

LR

如果把一个事件的几率定义为该事件发生与该事件不发生的概率比值,根据逻辑回归的公式log\frac{p}{1-p}=\theta^Tx p=P(y=1|x),逻辑回归可以看作是对于事件"y=1|x"的对数几率的线性回归,所以有回归的名称。但是逻辑回归的因变量是离散的,处理的是分类问题;线性回归中的因变量是连续的,处理的是回归问题。逻辑回归与线性回归的相似处是:都使用了极大似然估计,线性回归的最小二乘实际上是自变量和超参数确定、因变量服从正态分布的假设下使用极大似然估计的一个化简,逻辑回归中通过对似然函数的学习来得到最佳超参数;二者在求解超参数的过程中,都可以使用梯度下降法。

如果一个样本只对应于一个标签,可以假设每个样本属于不同标签的概率服从于几何分布,使用多项逻辑回归(Softmax Regression)来进行分类:h_\theta(x)=\begin{bmatrix}p(y=1|x;\theta) \\p(y=2|x;\theta)\\...\\p(y=k|x;\theta)\end{bmatrix}=\frac{1}{\sum_{i=1}^ke^{\theta^T_ix}}\begin{bmatrix}e^{\theta^T_1x} \\e^{\theta^T_2x}\\...\\e^{\theta^T_kx}\end{bmatrix}
当存在样本可能属于多个标签的情况时,可以训练k个二分类的逻辑回归分类器,第i个分类器用于区分每个样本是否可以归为第i类。

决策树

  • ID3——最大信息增益: g(D,A)=H(D)-H(D|A), 经验熵H(D)=-\sum_{k=1}^K\frac{|C_k|}{|D|}log_2\frac{|C_k|}{|D|};经验条件熵H(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}H(D_i)。D为样本集合,K为类别数量,A为某个特征,D_i为D中特征A取第i个值的样本子集,C_k为样本集合D中属于第k类的样本子集,||表示元素个数。
  • C4.5——最大信息增益比:g_R(D,A)=\frac{g(D,A)}{H_A(D)},取值熵H_A(D)=-\sum_{i=1}^n\frac{|D_i|}{|D|}log_2\frac{|D_i|}{|D|}
  • CART——最大基尼指数:Gini(D)=1-\sum_{k=1}^n(\frac{|C_k|}{|D|})^2,特征A的基尼指数Gini(D|A)=\sum_{i=1}^n\frac{|D_i|}{|D|}Gini(D_i). CART每一次迭代选取基尼指数最小的特征及其对应的切分点进行分类,CART是一个二叉树,每一次把特征A的取值切成两份,分别进入左右子树。

ID3会倾向于选取取值较多的特征,因为信息增益反应的是给定条件以后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条件熵越小,信息增益越大,C4.5通过引入信息增益比,一定程度对取值比较多的特征进行惩罚,避免ID3出现过拟合的特性,提升模型的泛化能力;ID3只能处理离散变量,而C4.5和CART都可以处理连续变量;ID3和C4.5只能用于分类任务,CART不仅可以分类也可以用于回归;ID3和C4.5可以在每个结点上产生出多叉分支,且每个特征在层级之间不会复用,而CART每个结点只会产生两个分支,且每个特征可以被重复使用;ID3和C4.5通过剪枝来权衡树的准确性与泛化能力,而CART直接利用全部数据发现所有可能的树结构进行对比。

  • 预剪枝:在生成决策树的过程中提前停止树的生长,方法为:达到一定深度;达到当前结点的样本数量小于某个阈值;计算每次分裂对测试集的准确度的提升,当小于某个阈值时不再扩展。预剪枝效率高,适合解决大规模问题,但是有欠拟合的风险。
  • 后剪枝:在已经生成的过拟合决策树上进行剪枝,常见的方法有:错误率降低剪枝REP、悲观剪枝PEP、代价复杂度剪枝CCP、最小误差剪枝MEP、CVP、OPP等方法。

4、降维

PCA

对于给定的一组数据点\{v_1,v_2,...,v_n\},中心化后表示为\{x_1,x_2,...,x_n\}=\{v_1-\mu,v_2-\mu,...,v_n-\mu\},其中\mu=\frac{1}{n}\sum_{i=1}^n v_i,目标是找到一个投影方向\omega(单位方向向量)使数据点在其上的投影方差尽可能大。投影之后的均值:\mu'=\frac{1}{n}\sum_{i=1}^n x_i^T\omega=\vec{0}\omega=0\\投影之后的方差(均值为0,直接平方):D(x)=\frac{1}{n}\sum_{i=1}^n(x_i^T\omega)^2=\frac{1}{n}\sum_{i=1}^n(x_i^T\omega)^T(x_i^T\omega)=\frac{1}{n}\sum_{i=1}^n\omega^Tx_ix_i^T\omega=\omega^T(\frac{1}{n}\sum_{i=1}^n x_ix_i^T)\omega其中,(\frac{1}{n}\sum_{i=1}^n\omega^Tx_ix_i^T\omega)是样本的协方差矩阵,将其写作\Sigma,则有求解最大化问题:\begin{cases}max\{\omega^T\Sigma \omega\}\\s.t. \omega^T\omega=1\\\end{cases}引入拉格朗日乘子,并对\omega求导令其等于0,可以推出\Sigma \omega=\lambda \omega,此时D(x)=\omega^T\Sigma \omega=\lambda\omega^T\omega=\lambda该值为协方差矩阵的最大特征值

  • (1) 对样本数据进行中心化处理
  • (2) 求样本协方差矩阵
  • (3) 对协方差矩阵进行特征值分解,将特征值从大到小排列
  • (4) 取特征值前d大对应的特征向量\omega_1,\omega_2,...,\omega_d,将n维样本映射到d维:x_i'=\begin{bmatrix}\omega_1^Tx_i \\\omega_2^Tx_i\\...\\\omega_d^Tx_i \end{bmatrix}

新的x_i'的第d维就是x_i在第d个主成分第\omega_d方向上的投影,通过选取最大的d个特征值对应的特征向量,将方差较小的特征抛弃,使得每个n维列向量x_i被映射为d维列向量x_i'。降维后的信息占比为:\eta=\sqrt{\frac{\sum_{i=1}^d \lambda_i^2}{\sum_{i=1}^n \lambda_i^2}}

LDA

LDA的最大化目标:max_\omega J(\omega)=\frac{\parallel\omega^T(\mu_1-\mu_2)\parallel_2^2}{D_1+D_2} 其中D_1,D_2分别表示两类投影后的方差:D_1=\sum_{x\in C_1}(\omega^Tx-\omega^T\mu_1)^2=\sum_{x\in C_1}\omega^T(x-\mu_1)(x-\mu_1)^T\omega 则目标函数可以写成:J(\omega)=\frac{\omega^T(\mu_1-\mu_2)(mu_1-\mu_2)^T\omega}{\sum_{x\in C_i}\omega^T(x-\mu_i)(x-\mu_i)^T\omega} 定义类间散度矩阵S_B=(\mu_1-\mu_2)(mu_1-\mu_2)^T,类内散度矩阵S_w=\sum_{x\in C_i}\omega^T(x-\mu_i)(x-\mu_i)^T\omega,最大化J(\omega)即是对\omega求偏导且令其等于零:\frac{\partial J(\omega)}{\partial\omega}= \frac{(\frac{\partial\omega^TS_B\omega}{\partial\omega}\omega^TS_w\omega-\frac{\partial\omega^TS_w\omega}{\partial\omega}\omega^TS_B\omega)}{(\omega^TS_w\omega)^2}=0可以得出(\omega^TS_w\omega)S_B\omega=(\omega^TS_B\omega)S_w\omega在简化的二分类问题中,可以令\lambda=J(\omega)=\frac{\omega^TS_B\omega}{\omega^TS_w\omega},则有S_w^{-1}S_B\omega=\lambda\omega这里LDA最大化的目标对应了矩阵S_w^{-1}S_B的特征值,而投影方向就是这个特征值对应的特征向量。

  • (1) 计算数据集中每个类别样本的均值向量\mu_j,总体均值向量\mu
  • (2) 计算类内散度矩阵S_w,全局散度矩阵S_t,并得到类间散度矩阵S_b=S_t-S_w
  • (3) 对矩阵S_w^{-1}S_b进行特征值分解,将特征值从大到小排列
  • (4) 取特征值前d大对应的特征向量\omega_1,\omega_2,...,\omega_d,将n维样本映射到d维:x_i'=\begin{bmatrix}\omega_1^Tx_i \\\omega_2^Tx_i\\...\\\omega_d^Tx_i \end{bmatrix}

二者比较

PCA为无监督降维算法,LDA为有监督降维算法,两种降维算法的求解过程有很大的相似性,但是对应的原理却有所区别:PCA选择投影后数据方差最大的方向,由于算法无监督,PCA假设方差越大信息量越多,用主成分来表示原始数据可以去除冗余的维度,达到降维;LDA用到了类别标签的信息,选择投影后类内方差小、类间方差大的方向,使得原始数据在这些方向上投影后不同类别尽可能区分开。应用的原则是无监督任务使用PCA,有监督任务使用LDA。

5、非监督学习

K-Means

  • (1) 数据预处理,如归一化、离群点处理等
  • (2) 随机选取K个簇中心,记为u_1^{(0)},u_2^{(0)},...,u_k^{(0)}
  • (3) 定义代价函数:J(c,u)=min_u min_c\sum_{i=1}^M \parallel x_i-u_{c_i}\parallel ^2
  • (4) 令t=0,1,2,...为迭代步数,重复下面过程直到J收敛:
  • 对于每一个样本x_i,将其分配到距离最近的簇:c_i^{t}\gets argmin_k \parallel x_i-u_k^{(t)}\parallel ^2;
  • 对于每一个类簇k,重新计算该类簇的中心:u_k^{t+1}\gets argmin_u \sum_{i:c_i^{(t)}=k} \parallel x_i-u\parallel ^2

优点:对于大数据集,K均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是数据对象的数目,K是聚类的簇数,t是迭代的轮数;尽管算法经常以局部最优结束,但一般情况下达到局部最优已经可以满足聚类的需求

缺点:需要人工预先确定初始K值,且该值和真实的数据分布未必吻合;受初值和离群点的影响,每次的结果不稳定;结果通常不是全局最优而是局部最优解,效果受到初始值影响;无法良好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100倍);不太适用于离散分类;样本点只能被划分到单一的类中

  • (1) 数据归一化和离群点处理:K均值本质上是一种基于欧式距离度量的数据划分方法,均值和方差大的维度将对数据的聚类结果产生绝对性的影响,所以未做归一化处理和统一单位的数据是无法直接参与运算和比较的;离群点和少量噪声对均值产生较大影响使中心偏移
  • (2) 合理选择K值:手肘法:随着K值增大,损失函数值减小,在某一个K值处图像出现手肘一样的拐点,之后损失函数变化平缓,该拐点为最佳K值;适合自动批量化的Gap Statistic方法:将损失函数定义为D_k,则有Gap(K)=E(logD_k)-logD_k,期望E(logD_k)通过蒙特卡洛模拟产生,在样本所在区域内按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本做K均值,得到一个D_k,重复多次可得E(logD_k)的近似值
  • (3) 采用核函数:传统的欧式距离本质假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,需要引入核函数来优化:核K均值算法,是核聚类方法的一种。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类,增加了数据点线性可分的概率
  • K-means++算法(初始值优化):假设已经选取了n个初始聚类中心,则在选取第n+1个聚类中心时,距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚类中心。在选取第一个聚类中心时同样通过随机的方法
  • ISODATA算法(簇值优化):当属于某个类别的样本数过少时,把该类别去除;当属于某个类别的样本数过多、分散程度较大时,把给类别分成两个子类别。该算法在K均值算法的基础上增加了两个操作:分裂操作增加聚类中心数;合并操作减少聚类中心数

高斯混合模型

初始随机选择各参数的值,然后重复下述两步直至收敛(参数不再变化/变化很小):

  • E步骤:根据当前参数,计算每个点由某个分模型生成的概率
  • M步骤:使用E步骤估计出的概率来改进每个分模型的三个参数

自组织映射神经网络(聚类、高维可视化、数据压缩、特征提取)

  • (1)用小的随机量初始化w
  • (2)竞争:神经元计算每一个输入模式各自的判别函数值,并宣布具有最小判别函数值的特定神经元为胜利者。其中,每个神经元j的判别函数为d_j(x)=\sum_{i=1}^D(x_i-w{i,j})^2
  • (3)合作:获胜神经元I(x)决定了兴奋神经元拓扑领域的空间位置:确定激活节点I(x)之后,按照与激活节点距离远近的关系更新其他神经元,计算为:T_{j,I(x)}(t)=exp(-\frac{S_{j,I(x)}^2}{2\delta(t)^2}),其中S_{ij}表示竞争层神经元i和j之间的距离,\delta(t)=\delta_0 exp(-\frac{t}{\tau_\delta})随时间衰减。简单来说,临近的节点距离越远,更新的程度要打更大折扣
  • (4)适应:适当调整相关兴奋神经元的连接权重,增强获胜的神经元对相似输入模式的后续应用的响应:\Delta w_{ji}=\eta(t)\cdot T_{j,I(x)}(t)\cdot(x_i-w_{ji}),其中依赖于时间的学习率定义为:\eta(t)=\eta_0exp(-\frac{t}{\tau_\eta})
  • (5)迭代:继续回到步骤(2),知道特征映射趋于稳定。迭代结束之后,每个样本所激活的神经元就是它对应的类别。

SOM本质上是一个两层的神经网络,包含模拟感知的输入层和模拟大脑皮层的输出层,输出层中神经元的个数通常是聚类的个数。具有保序映射的特点,可以将任意维输入模式在输出层映射为一维或者二维图形,并保持拓扑结构不变,使得输出层神经元的空间位置对应于输入空间的特定域或特征。在SOM中,以获胜神经元为中心,近邻者相互激励,远邻者相互抑制,这种交互作用的方式以曲线可视化则类似于“墨西哥帽”。

  • (1)K均值算法需预先设定K的值,SOM不需要
  • (2)K均值算法为每个输入数据找到最相似的类后,只更新这个类的参数,SOM则会更新临近的节点。所以K均值算法受噪点影响较大,SOM的准确性可能会比K均值算法低(更新了临近节点)
  • (3)SOM的可视化比较好,具有优雅的拓扑关系图

输出层神经元数量:和样本的类别数相关。若不清楚样本的类别,则尽可能地设定较多的节点数,以便更好地映射样本的拓扑结构,如果分类过细再酌情减少输出节点。这样可能会带来少量从未更新过权重的“死节点”,但一般可通过重新初始化权重来解决

输出层节点排列:排列形式应尽量直观地反映出实际问题的物理意义。例如,对于一般的分类问题,一个输出节点能代表一个模式类,使用一维线阵;对于颜色空间或者旅行路径问题,二维平面则比较直观

初始化权重:可以随机初始化,但尽量使权值的初始位置与输入样本的大概分布区域充分重合,避免出现大量初始"死节点"。可以从训练集中随机抽取m个输入样本作为初始权重

拓扑领域:设计原则是使领域不断缩小,这样输出平面上相邻神经元对应的权向量之间既有区别又有相当的相似性,从而保证当获胜节点对某一类模式产生最大响应时,其领域节点也能产生较大响应。领域的形状可以是正方形、六边形或者菱形。优势领域的大小用领域的半径表示,通常凭借经验来选择

学习率:学习率为递减函数,训练开始时,学习率可以选取较大的值,之后以较快的速度下降,有利于很快地捕捉到输入向量的大致结构,然后学习率在较小的值上缓降为0,这样可以精细地调整权值使之符合输入空间的样本分布结构。

聚类算法评估

  • 以中心定义:倾向于球形分布,中心为质心,即此数据簇中所有点的平均值。集合中的数据到中心的距离相比到其他簇中心的距离更近
  • 以密度定义:呈现和周围数据簇明显不同的密度,或稠密或稀疏。当数据簇不规则或互相盘绕,并且有噪声和离群点时,常常使用基于密度的簇定义
  • 以连通定义:数据点和数据点之间有连接关系,整个数据簇表现为图结构。该定义对不规则形状或者缠绕的数据簇有效
  • 以概念定义:数据簇中所有数据点具有某种共同性质

如果数据基本随机,那么聚类的结果毫无意义。可以用霍普金斯统计量来判断数据在空间上的随机性:从样本中随机找n个点p_1,p_2,...,p_n,对每一个p_i,都在样本空间中找到一个离它最近的点并计算它们之间的距离x_i,从而得到距离向量x_1,x_2,...,x_n;从样本可能取值范围内随机生成n个点q_1,q_2,...,q_n,使用同样的原则得到距离向量y_1,y_2,...y_n,则霍普金斯统计量H可表示为:H=\frac{\sum_{i=1}^n y_i}{\sum_{i=1}^n x_i+\sum_{i=1}^n y_i}。如果样本接近随机分布,则H的值接近于0.5,如果聚类趋势明显,随机生成的样本点距离应该远大于实际样本点距离,则H的值接近于1。

  • 轮廓系数:s(p)=\frac{b(p)-a(p)}{max\{a(p),b(p)\}}a(p)是点p与同一簇中的其他点p’之间的平均距离;b(p)是点p与另一个不同簇中的点之间的最小平均距离。显然b(p)越大且a(p)越小时对应的聚类质量越好,因此可将所有点对应的轮廓系数求平均值来度量聚类效果
  • 均方根标准偏差:RMSSTD=(\frac{\sum_i\sum_{x\in C_i}\parallel x-c_i\parallel ^2}{P\sum_i (n_i-1)})^{\frac{1}{2}}C_i是第i个簇,c_i是该簇的中心,x\in C_i是属于第i个簇的一个样本点,n_i为第i个簇的样本数量,P为样本点对应的向量维数。该指标用来衡量聚类结果的同质性,即紧凑程度,可以看作是经过归一化的标准差。
  • R方:RS=\frac{\sum_{x\in D}\parallel x-c\parallel ^2-\sum_i\sum_{x\in C_i}\parallel x-c_i\parallel ^2}{\sum_{x\in D}\parallel x-c\parallel ^2}D代表整个数据集,c是数据集D的中心点,\sum_{x\in D}\parallel x-c\parallel ^2代表将数据集D看作单一簇时的平方误差和。该指标用来衡量聚类之后的结果与聚类之前相比,对应的平方误差和指标的改进幅度。
  • 改进的Hubert\Gamma统计:\Gamma=\frac{2}{n(n-1)}\sum_{x\in D}\sum_{y\in D}d(x,y)d_{x\in C_i,y\in C_j}(c_i,c_j)d(x,y)是点x到点y之间的距离,d_{x\in C_i,y\in C_j}(c_i,c_j)是点x所在的簇中心c_i与点y所在的簇中心c_j之间的距离,\frac{n(n-1)}{2}是所有(x,y)点对的个数,该指标对每个点对的和做了归一化处理。理想情况下对于每个点对,如果d(x,y)越小,对应的d_{x\in C_i,y\in C_j}(c_i,c_j)也越小,所以\Gamma值越大说明聚类的结果与样本的原始距离越吻合,也就是聚类质量越高
  • 观察聚类误差是否随聚类类别数量的增加而单调变化
  • 观察聚类误差对实际聚类结果的影响
  • 观察近邻数据簇的聚类准确性
  • 观察数据密度具有较大差异的数据簇的聚类结果
  • 样本数量具有较大差异的数据簇的聚类效果

7、优化算法

损失函数

  • Hinge损失函数:L_{hinge}(f,y)=max\{0, 1-fy\}。Hinge损失函数在fy<1时随fy值增大而下降,光滑可导;对fy\geq1不做任何惩罚,且在fy=1处不可导,所以需要使用次梯度下降法进行优化。
  • Logistic损失函数:L_{logistic}(f,y)=log_2(1+e^{-fy})。Logistic损失函数随fy值增大而下降,处处光滑可导,可以使用梯度下降法进行优化,但是该损失函数对所有的样本点都有惩罚,对异常值较敏感。
  • 交叉熵损失函数:L_{cross\ entropy}(f,y)=-log_2(\frac{1+fy}{2})。当预测值的值域为[-1,1]时,可以使用交叉熵损失函数,该损失函数处处光滑可导,在fy<0时的惩罚力度更大。
  • 平方损失函数:L_{square}(f,y)=(f-y)^2。处处光滑可导,但是当预测值与真实值差距较大时,惩罚力度非常大,对异常值比较敏感。
  • 绝对损失:L_{absolute}(f,y)=|f-y|。为了解决平方损失函数鲁棒性较低(对异常值敏感)的问题,可以直接使用差值的绝对值来作为损失函数,但是该损失函数在f=y处无法求导,对于优化算法的选取比较局限。
  • Huber损失函数:L_{Huber}(f,y)=\left\{\begin{array}{rcl}(f-y)^2 & &{|f-y|\leq\delta}\\2\delta|f-y|-\delta^2 & &{|f-y|>\delta}\\\end{array}\right.。Huber损失函数综合考虑了可导性和鲁棒性,在差值绝对值较小时为平方损失,在差值绝对值较大时为线性损失,处处可导且对异常值敏感度不高。

凸优化与非凸优化

经典优化算法

无约束问题的优化方法:

  • 一阶法(梯度下降法):一阶泰勒展开函数L(\theta_t+\delta)\approx L(\theta_t)+\nabla L(\theta_t)^T\delta。该近似式仅在\delta较小时才比较准确,因此一般加上L2正则项,使一次迭代的优化目标为:arg min_\delta(L(\theta_t)+\nabla L(\theta_t)^T\delta+\frac{1}{2\alpha}\parallel \delta\parallel_2^2)=-\alpha\nabla L(\theta_t)。由此,一阶法的迭代公式为:\theta_{t+1}=\theta_t-\alpha\nabla L(\theta_t),\alpha为学习率。
  • 二阶法(牛顿法):二阶泰勒展开目标函数,一次迭代的优化目标为:arg min_\delta(L(\theta_t)+\nabla L(\theta_t)^T\delta+\frac{1}{2}\delta^T\nabla^2L(\theta_t)\delta)=-\nabla^2L(\theta_t)^{-1}\nabla L(\theta_t),其中\nabla^2L(\theta_t)是函数L在\theta_t处的Hessian矩阵。由此,二阶法的迭代公式为:\theta_{t+1}=\theta_t-\nabla^2L(\theta_t)^{-1}\nabla L(\theta_t)
    -二者比较:二阶法的收敛速度一般远快于一阶法,但在高维情况下,Hessian矩阵求逆的计算复杂度很大;当目标函数非凸时,二阶法有可能会收敛到鞍点

梯度验证

  • 随机初始化\theta,取h为很小的数,并对i=1,2,...,n,依次验证|\frac{L(\theta+he_i)-L(\theta-he_i)}{2h}-\frac{\partial L(\theta)}{\partial \theta_i}|\leq h是否成立
  • 如果对于某个下标i,该不等式不成立,则:(1)该下标对应的M过大;(2)该梯度分量计算不正确
  • 此时可以固定\theta,减小h为原来的10^{-1},并再次计算下标i对应的近似误差,若近似误差约减小为原来的10^{-2},则对应于第一种可能,我们应该采用更小的h重新做一次梯度验证;否则对应于第二种可能,我们应该检查求梯度的代码是否有错误

随机梯度下降法

  • (1)m的取值:一般从2的幂次中选最优值,能充分利用矩阵运算操作;
  • (2)挑选训练数据:先进行随机排序,再顺序取m个训练数据;
  • (3)学习速率\alpha的取值:采用衰减学习速率,一开始选择较大的学习速率,当误差曲线进入平台期后,减小学习速率做更精细的调整
  • 动量方法(惯性保持):类比质点在山谷和鞍点处的运动,当质点动量较大时,速度不会很快衰减为0,可以快速通过山谷和鞍点。此时模型参数的前进步伐(迭代式减去的项)为:v_t=\gamma v_{t-1}+\eta g_t,其中\eta为学习速率,g_t为当前梯度,二者相乘是经典梯度下降的前进步伐,此处引入了衰减系数\gamma和前一刻的前进步伐。物理含义为:前进步伐为t时刻的速度,梯度为t时刻受力产生的加速度,衰减系数为阻力,模拟质点质量较大的情况,向下的力度稳定不变,产生的动量不断累积,左右弹力相互抵消,下降速度越来越快。
  • AdaGrad方法(环境感知):使更新频率低的参数拥有较大步伐,更新频率高的参数拥有较小步伐,采用了历史梯度的平方和来衡量不同参数的梯度的稀疏性。更新公式为:\theta_{t+1,i}=\theta_{t,i}-\frac{\eta}{\sqrt{\sum_{k=0}^{t}g_{k,i}^2+\epsilon}}g_{t,i},其中\theta_{t+1,i}表示t+1时刻的参数向量\theta_{t+1}的第i个参数,g_{k,i}表示k时刻的梯度向量g_k的第i个维度(方向)。分母实现了退火过程,随着时间推移,学习速率越来越小,保证算法最终收敛。
  • Adam方法:同时考虑了惯性保持和环境感知,记录了梯度的一阶距(过往梯度与当前梯度的平均)和二阶距(过往梯度平方与当前梯度平方的平均),采用了指数衰退平均技术。一阶矩:m_t=\beta_1m_{t-1}+(1-\beta_1)g_t,表示估计g_t的期望;二阶矩:v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2,表示估计g_t^2的期望。更新公式为:\theta_{t+1}=\theta_t-\frac{\eta\cdot\hat{m_t}}{\sqrt{\hat{v_t}+\epsilon}},其中\hat{m_t}=\frac{m_t}{1-\beta_1^t}\hat{v_t}=\frac{v_t}{1-\beta_2^t}

L1正则化使模型具有稀疏性的原理

12、集成学习

集成学习种类

集成学习步骤(Adaboost)

初始化采样分布D_1(i)=\frac{1}{N}
t=1,2,...,T循环:

基分类器

最常用的基分类器是决策树,原因为:(1)可以较方便地将样本权重整合到训练过程中而不需要使用过采样法调整权重;(2)表达能力和泛化能力可通过调节树的层数来折中;(3)数据样本的扰动对决策树影响较大,不同子样本集合生成的决策树基分类器随机性较大,决策树节点分裂时随机选择一个特征子集从中找出最优分裂属性,很好地引入了随机性。此外,神经网络模型也适合作为基分类器,通过调整神经元数量、连接方式、网络层数、初始权值等方式引入随机性。

随机森林属于Bagging类的集成学习,好处是集成后的分类器的方差比基分类器的方差小。Bagging所采用的基分类器最好是本身对样本分布较为敏感的,方差较大的,才能使得Bagging学习达成效果。线性分类器或者K-近邻都是较为稳定的分类器,本身方差就不大,所以以它们为基分类器的随机森林并不能在原有基分类器的基础上获得更好的表现,甚至可能因为Bagging的采样而导致在训练过程中更难以收敛,从而增大了集成分类器的偏差。

偏差和方差

GBDT

优点:(1)预测阶段的计算速度快,树与树之间可以并行化计算;(2)在分布稠密的数据集上,泛化能力和表达能力都很好;(3)采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系,并且也不需要对数据进行特殊的预处理如归一化等。

局限性:(1)在高维稀疏的数据集上,表现不如SVM或NN;(2)在处理文本分类特征问题上,相对其他模型的优势不如它在处理数值特征时明显;(3)训练过程需要串行训练,只能在决策树内部采用一些局部并行的手段提高训练速度。

XGBoost与GBDT

上一篇下一篇

猜你喜欢

热点阅读