①数据增强(比如图片,增加图片数量、翻转等,用更多数据来训练)
②添加正则化项(参数范数惩罚,平衡偏差和方差)、
③提前停止(当随着模型的能力提升,训练集的误差会先减小再增大)
④添加dropout(随机让一部分神经元失活)
⑤归一化(Batch Normalization)(对每一个mini-batch的数据进行归一化,使输出规范到N(0,1)的正态分布,减少了内部神经元分布的改变,学习速率可以增大很多倍)
⑥Bagging和其他集成方法。
对少数类中的每个样本x,从它在少数类样本中的K近邻中随机选取m(采样倍率)个y,然后在x,y连线上随机选取一点作为合成的新样本。
算法缺陷:
①k的下限是m,但是上限没法确定,只能反复测试以使算法达到最优。
②该算法无法克服非平衡数据集的数据分布问题,容易产生分布边缘化问题。
LR模型是一个二分类模型,即对于一个X,预测其发生或不发生。但事实上,对于一个事件发生的情况,往往不能得到100%的预测,因此LR可以得到一个事件发生的可能性,超过50%则认为事件发生,低于50%则认为事件不发生。因此从LR的目的上来看,在选择函数时,有两个条件是必须要满足的:
LR的损失函数是负的对数损失函数,线性回归是平方损失函数。LR使用的是交叉熵损失函数,使用极大释然估计进行求解。其实也可以用MSE函数,因为最大化似然估计等价于MSE最小。
神经网络经典五大超参数:
学习率(Learning Rate)、权值初始化(Weight Initialization)、网络层数(Layers)
单层神经元数(Units)、正则惩罚项(Regularizer|Normalization)
显然在这里超参数指的是事先指定的learningrate,而对超参数不敏感的梯度算法是Adadelta,牛顿法。
优化算法的功能,是通过改善训练方式,来最小化(或最大化)损失函数E(x)。
①克莱姆法则适用于求解变量和方程数目相等的线性方程组
②克莱姆法则可知,当方程组的系数行列式不等于零时,则方程组有解,且具有唯一的解
③如果方程组无解或者有两个不同的解,那么方程组的系数行列式必定等于零
神经网络优化问题中的鞍点即一个维度向上倾斜且另一维度向下倾斜的点。
鞍点:梯度等于零,在其附近Hessian矩阵有正的和负的特征值,行列式小于0,不定的。
鞍点和局部极小值相同的是,在该点处的梯度都等于零,不同在于在鞍点附近Hessian矩阵是不定的,非正定,非负定,非半正定(行列式小于0),而在局部极值附近的Hessian矩阵是正定的。
在鞍点附近,基于梯度的优化算法(几乎目前所有的实际使用的优化算法都是基于梯度的)会遇到较为严重的问题。
鞍点处的梯度为零,会降低神经网络学习速度。在高维的情形,这个鞍点附近的平坦区域范围可能非常大,这使得SGD算法很难脱离区域,即可能会长时间卡在该点附近(因为梯度在所有维度上接近于零)。 在鞍点数目极大的时候,这个问题会变得非常严重。
高维非凸优化问题之所以困难,是因为高维参数空间存在大量的鞍点
数学期望是分布区间左右两端和的平均值,方差为分布区间左右两端差值平方的十二分之一。均匀分布又被叫做矩形分布和等概率分布。
图示法:P-P图 Q-Q图 直方图 茎叶图
统计指示法:偏度和峰度 偏度和峰度联合检验 W检验 K-S检验 Cramér-VonMises检验
Anderson-Darling检验
中心极限定理?
二维随机变量(X,Y),X与Y之间的协方差定义为:
协方差: C o v ( X , Y ) = E [ X − E ( X ) ] [ Y − E ( Y ) ] Cov(X,Y)=E{[X-E(X)][Y-E(Y)]} Cov(X,Y)=E[X−E(X)][Y−E(Y)]
当协方差Cov(X,Y)>0时,称X与Y正相关
当协方差Cov(X,Y)<0时,称X与Y负相关
当协方差Cov(X,Y)=0时,称X与Y不相关
相关系数:
横坐标为假阳率FP(实际是负的,预测为正的)
纵坐标为真阳率TP(实际是正的,预测为正的)
通过不断地调整阈值获得样本的假阳率和真阳率依次绘制在坐标轴上,即得到AUC曲线,阈值一般从大到小进行调整。这就需要样本的预测概率和标签进行计算。
AUC面积就是ROC曲线下与横纵坐标形成的面积,当正负样本的分布发生变化时,ROC曲线能够保持稳定而P-R曲线差别较大。ROC曲线能够降低不同测试集带来的干扰,比如正负样本比例极其不均衡的情况下,更加稳定地反映模型的好坏。
AUC越大,说明分类器越可能把真正的样本排在前面,分类性能越好。
欧氏距离关注数值上的差异(比如用户的活跃度),而余弦距离体现方向上的绝对差异(比如观看行为)
余弦距离满足正定性质(大于0),满足对称性,不满足三角不等式(反例为[0,1],[1,1],[1,0]),因此它不是一个严格定义的距离。清楚dist(A,B)距离公式的定义。
Holdout检验,对数据进行三七分,但是性能过分依赖原始分组
交叉检验:k-fold交叉验证和留一验证。K值一般取10,但是应用开销较大
自助法:基于自主采样的检验方法,对于样本数为n的集合进行n次有放回的随机采样。当样本数量很大时,大约有36.8%样本从未被选择过,将没被抽出的样本作为训练集。
过拟合:在训练集上表现良好在测试集上表现较差
①逻辑斯蒂回归解决的是分类问题,而线性回归解决的则是预测问题。逻辑斯蒂回归将实例x划分到条件概率最大的那一类。
②逻辑斯蒂回归的因变量是离散的,而线性回归得因变量是连续的,逻辑斯蒂回归可以看成是对数几率的线性回归。
③逻辑斯蒂回归参数求解的过程中,使用到了极大似然估计而线性回归则使用最小二乘法。二者在求解时均用到了梯度下降的方法。
①OVR:一对剩余,对于有n个类的样本数据集,需要训练n个分类器,每次将一个类的样例作为正例、所有其他类的样例作为反例来训练。测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
②OVO:N个类两两配对,共需要训练 n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n−1)个二分类任务。新样本将同时提交给所有分类器,于是我们将得到 N ( N − 1 ) 2 \frac{N(N-1)}{2} 2N(N−1)个分类结果,最终结果可通过投票产生:即把被预测得最多的类别作为最终分类结果。
③OvO的优点是,在类别很多时,每次训练使用两类样本数据,训练时间要比OvR少。缺点是,分类器个数多。
④OvR的优点是,分类器个数少,但是每次训练使用全部数据。存储开销和测试时间比OvO少。缺点是,类别很多时,训练时间长。
ID3使用的信息增益,C4.5使用的是信息增益率,CART使用的是基尼系数
ID3、C4.5决策树只适合用来做分类,而CART既可以用来做分类又可以用来做回归。
离群点:全局离群点、情景离群点和集体离群点
定义:分布稀疏且离密度高的群体距离远的点
原因:数据收集过程中出现错误(录入错误)、数据测量误差(人为、测量仪器)、数据随机误差(数据误差)
如何检测:
熵表示随机变量的不确定性,特征取值越多,熵的值就越大。
信息增益:知道特征X的信息而使类Y的信息的不确定性减少的程度。
信息增益的计算公式
信息增益比的计算公式
基尼系数的计算公式
ID3和C4.5只能解决分类问题,CART则可以解决分类和回归问题
预剪枝和后剪枝
决策树学习的损失函数,既考虑了模型的预测误差,又考虑了模型的复杂度,即叶节点的个数,在两者之间达到平衡。
①在训练数据集所在的输入空间中,递归地将每个区域划分为两个子区域并决定每个子区域上的输出值,构建二叉决策树。
②选择最优切分变量j与切分点s,遍历切分变量j,对固定的切分变量扫描切分点s
③用选定的对(j,s)划分区域并决定相应的输出值
④继续对两个子区域递归调用上述两个步骤,直到满足停止条件
将输入空间划分为M个区域,生成决策树。
①计算现有特征对该数据集的基尼系数,对于每一个特征A,对其可能取的每一个值a,计算样本点对A=a的测试为“是”或“否”将D分成D1和D2两部分。
②在所有的特征A以及它们所有的切分点a中,选择基尼系数最小的特征及对应的切分点作为最优特征和最优切分点,从现结点生成两个子结点,将训练数据集依特征分配到两个子节点中去。
③对两个子结点递归调用以上两步,直到满足停止条件。停止条件一般有叶子结点个数以及基尼系数规定。
①偏差度量了学习算法的期望预测与真实结果的偏离程序, 即 刻画了学习算法本身的拟合能力 .
②方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即 刻画了数据扰动所造成的影响 .
③噪声表达了在当前任务上任何学习算法所能达到的期望泛化误差的下界, 即 刻画了学习问题本身的难度 . 巧妇难为无米之炊, 给一堆很差的食材, 要想做出一顿美味, 肯定是很有难度的.
给定一个学习任务, 在训练初期, 由于训练不足, 学习器的拟合能力不够强, 偏差比较大, 也是由于拟合能力不强, 数据集的扰动也无法使学习器产生显著变化, 也就是欠拟合的情况;
随着训练程度的加深, 学习器的拟合能力逐渐增强, 训练数据的扰动也能够渐渐被学习器学到;充分训练后, 学习器的拟合能力已非常强, 训练数据的轻微扰动都会导致学习器发生显著变化, 当训练数据自身的、非全局的特性被学习器学到了, 则将发生过拟合.
①L1正则化就是在目标函数后面添加 λ w \lambda w λw,而L2正则化在损失函数后面添加 λ w \lambda w λw参数的平方,一般而言参数及参数的平方会规定小于某个特征的常量,那么我们就可以写出拉格朗日函数, ( m i n ( y − w ∗ x ) 2 + λ ∗ ( w 2 − m ) ) (min(y-w*x)^2+\lambda*(w^2-m)) (min(y−w∗x)2+λ∗(w2−m))根据KKT条件应该满足对w进行求导得到为0。
L2正则化相当于为参数定义了一个圆形的解空间,因为必须保证L2范数不能大于m,而L1正则化相当于为参数定义了一个菱形的解空间。如果原问题目标函数的最优解不是恰好落在解空间内,那么约束条件的最优解一定是在解空间的边界上 ,而L1的解空间显然更容易与目标函数等高线在坐标轴上相遇,进而产生稀疏解。
②两种正则项能不能把最优的x变成0,取决于原先的损失函数在0点处的导数。如果本来导数不为0,那么施加L2正则项后导数依然不为0,最优的x也不会变成0。而施加L1正则项时,只要系数C大于原损失函数在0点处的导数的绝对值,x=0就会变成一个极小值点。这是因为,L1正则化的损失函数在极值处(尖点)是不可导的,也就是说该点两边的导数异号,也即f’(0)-C和f’(0)+C异号,故C大于f’(0)时,x=0就会变成一个极小值点。
以二分类为例,我们将正例划分为1,负例划分为-1。支持向量机的思想就是找到一个最大分割超平面,将样本分为正类和负类。感知机利用误分类最小的策略,解可能有无数个。而线性可分支持向量机利用间隔最大化求最优超平面,这时候解是唯一的。
①接着目标函数:
f = 1 2 w 2 f = \frac{1}{2} w^2 f=21w2
限制条件为 y ( w ∗ x + b ) − 1 > = 0 y(w*x+b)-1>=0 y(w∗x+b)−1>=0
②接着我们构建拉格朗日函数
根据拉格朗日对偶性可知原始问题的对偶问题为极大极小问题,对w,b求极小,对 α \alpha α求极大。对w,b求极小我们可以得到w可以用 α \alpha α,y与x进行表示,代入到L函数可得到表示形式,接着L对 α \alpha α求极小,w和b求得得解满足KKT条件,从而可以解出 α \alpha α,x和y的值,从而得到最大超平面的函数。
序列最小最优化方法来求 α \alpha α的值(SMO算法)
对 α \alpha α而言,选择两个变量,固定其他变量,针对这两个变量构建一个二次规划问题,这个二次规划问题关于这两个变量的解应该更接近原始二次规划问题的解,这会使得原始二次规划问题的目标函数值变得更小。
这时子问题可以通过解析的方法求解,这样就大大提高了整个算法的计算速度。
子问题有两个变量,一个是违反KKT最严重的那一个,另一个由约束条件自动确定。每次完成两个变量的优化后,都要从新计算b和差值E
曼哈顿距离、欧氏距离、切比雪夫距离、汉明距离(两个字符串对应位置不一样的个数)、余弦相似度。
两种情况下梯度消失经常出现,一是在深层网络中,二是采用了不合适的损失函数,比如sigmoid。梯度爆炸一般出现在深层网络和权值初始化值太大的情况下。
①深度网络中
在利用反向传播算法来更新参数时,由于多个隐层状态相乘,表现在链式求导中,对激活函数中的变量进行求导。如果w<1,越往前梯度会越小,直至梯度消失;如果w>1,越往前梯度越大,呈指数增长就会导致梯度爆炸。
②激活函数角度
上文中提到计算权值更新信息的时候需要计算前层偏导信息,因此如果激活函数选择不合适,比如使用sigmoid,梯度消失就会很明显了,如果使用sigmoid作为损失函数,其梯度是不可能超过0.25的,这样经过链式求导之后,很容易发生梯度消失。
是LSTM的一个变体,比LSTM简单。将忘记门和输入门合成了一个单一的更新门,还混合了细胞状态和隐藏状态,加诸其他一些改动。
见博客图解Transformer
其中encoder有6层,每层有self-attention层和一个全连接的前馈神经网络
Decoder与encoder类似,也有6层,每层有self-attention层、encoder-decoder层和一个全连接的前馈神经网络。
词向量嵌入只发生在最底层得encoder上,其他5层的输入就是前一层的的输出
列表的大小和词向量维度的大小都是可以设置的超参数。一般情况下,它是我们训练数据集中最长的句子的长度
Self-attention层的输入和输出是有依赖关系的,而前馈层则没有依赖,可以并行化提高学习速率。
Self-attention实现比较复杂,在翻译的不同时刻会聚焦在不同的单词上。
①第一步
在每个encoder的输入上创建3个向量,分别为键向量、值向量和查询向量。分别是拿词向量嵌入乘以三个向量的训练矩阵得到的
②第二步:计算得分
我们在某个位置编码单词时,分数决定了对输入句子的其他单词的关照程度。
是拿Q向量乘以K向量进行点乘计算得分,然后除以词向量维度的开方。再对分数进行softmax处理得到概率乘以值向量得到z1向量
③Transformer使用多头机制,计算得到8个不同的权值矩阵,最后进行拼接乘以输出向量权值矩阵得到输出
此外还独创位置编码考虑单词的顺序,将位置向量与词向量相加代入到encoder层
Decoder
Self-attention只关注序列中较早的位置
Encoder-decoder attention层的工作方式与多头self-attention一样,只是它从下面的层创建查询矩阵,获取key向量和value向量的矩阵。
线性层是一个简单的全连接神经网络,它是由Decoder堆栈产生的向量投影到一个更大,更大的向量中,称为对数向量
假设实验中我们的模型从训练数据集上总共学习到1万个英语单词(“Output Vocabulary”)。这对应的Logits矢量也有1万个长度-每一段表示了一个唯一单词的得分。在线性层之后是一个softmax层,softmax将这些分数转换为概率。选取概率最高的索引,然后通过这个索引找到对应的单词作为输出。
GAN 有两个网络,一个是 generator,一个是 discriminator。
大体思想:
①一代的 generator,它能生成一些很差的图片,然后有一个一代的 discriminator,它能准确的把生成的图片,和真实的图片分类,简而言之,这个 discriminator 就是一个二分类器,对生成的图片输出 0,对真实的图片输出 1。
②接着,开始训练出二代的 generator,它能生成稍好一点的图片,能够让一代的 discriminator 认为这些生成的图片是真实的图片。然后会训练出一个二代的 discriminator,它能准确的识别出真实的图片,和二代 generator 生成的图片。以此类推,会有三代,四代。。。n 代的 generator 和 discriminator,最后 discriminator 无法分辨生成的图片和真实图片,这个网络就拟合了
1)首先训练D,D希望V(G, D)越大越好,所以是加上梯度(ascending)
2)然后训练G时,G希望V(G, D)越小越好,所以是减去梯度(descending);
3) 整个训练过程交替进行。
在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 0.5。
这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。
BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+B,U是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致反向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正态分布,其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度。
BN的好处:①不仅仅极大提升了训练速度,收敛过程大大加快;②还能增加分类效果,一种解释是这是类似于Dropout的一种防止过拟合的正则化表达方式,所以不用Dropout也能达到相当的效果;③另外调参过程也简单多了,对于初始化要求没那么高,而且可以使用大的学习率等。
Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射。输入序列不论长短都会被编码成一个固定长度的向量表示,而解码则受限于该固定长度的向量表示。
在计算attention时主要分为三步:
①第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
②第二步一般是使用一个softmax函数对这些权重进行归一化;
③最后将权重和相应的键值value进行加权求和得到最后的attention。
目前在NLP研究中,key和value常常都是同一个,即key=value。
Dropout的使用是预防过拟合的手段,使得神经网络的神经元在训练时以一定概率停止工作。具体工作如下,首先随机选择一定数量的神经元停止工作,让其他神经元对特征进行学习向前传播,然后把得到的损失结果通过修改后的网络反向传播,对工作的神经元参数进行调整,上一轮停止工作的神经元参数不变,接着再随机选取一部分神经元停止工作,依次类推,直到达到停止训练条件。
这样做的好处有二:
①对过拟合取平均。不同的网络可能产生不同的过拟合,取平均则有可能让一些“相反的”拟合互相抵消。
②减少神经元之间复杂的共适应现象。因为dropout程序导致两个神经元不一定每次都在一个dropout网络中出现。这样权值的更新不再依赖于有固定关系的隐藏节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况 。迫使网络去学习更加鲁棒的特征。
Tensorflow是一个通过计算图的形式来表述计算的编程系统,计算图也叫数据流图,可以把计算图看做是一种有向图,Tensorflow中的每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系。
L1正则化,又叫Lasso Regression,L1是向量各元素的绝对值之和。
L2正则化,又叫Ridge Regression,L2是向量各元素的平方和。
相同点:都用于避免过拟合
不同点:L1可以让一部分特征的系数缩小到0,从而间接实现特征选择。所以L1适用于特征之间有关联的情况。
L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况
1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。
区别:
1、LR是参数模型,SVM是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
5、logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。
决策树属于最常用的学习器, 其学习过程是从根建立树, 也就是如何决策叶子节点分裂. ID3/C4.5决策树用信息熵计算最优分裂, CART决策树用基尼指数计算最优分裂, xgboost决策树使用二阶泰勒展开系数计算最优分裂.
下面所提到的学习器都是决策树:
Bagging方法:
学习器间不存在强依赖关系, 学习器可并行训练生成, 集成方式一般为投票;
Random Forest属于Bagging的代表, 放回抽样, 每个学习器随机选择部分特征去优化;
Boosting方法:
学习器之间存在强依赖关系、必须串行生成, 集成方式为加权和;
Adaboost属于Boosting, 采用指数损失函数替代原本分类任务的0/1损失函数;
GBDT属于Boosting的优秀代表, 对函数残差近似值进行梯度下降, 用CART回归树做学习器, 集成为回归模型;
xgboost属于Boosting的集大成者, 对函数残差近似值进行梯度下降, 迭代时利用了二阶梯度信息, 集成模型可分类也可回归. 由于它可在特征粒度上并行计算, 结构风险和工程实现都做了很多优化, 泛化, 性能和扩展性都比GBDT要好。xgboost与gbdt相比:
1.损失函数是用泰勒展式二项逼近,而不是像gbdt里的就是一阶导数
2.对树的结构进行了正则化约束,防止模型过度复杂,降低了过拟合的可能性
3.节点分裂的方式不同,gbdt是用的gini系数,xgboost是经过优化推导后的
xgboost使用了一阶和二阶偏导, 二阶导数有利于梯度下降的更快更准. 使用泰勒展开取得二阶倒数形式, 可以在不选定损失函数具体形式的情况下用于算法优化分析.本质上也就把损失函数的选取和模型算法优化/参数选择分开了. 这种去耦合增加了xgboost的适用性。
xgboost在训练的过程中给出各个特征的增益评分,最大增益的特征会被选出来作为分裂依据, 从而记忆了每个特征对在模型训练时的重要性 – 从根到叶子中间节点涉及某特征的次数作为该特征重要性排序。
xgboost属于boosting集成学习方法, 样本是不放回的, 因而每轮计算样本不重复。另一方面, xgboost支持子采样, 也就是每轮计算可以不使用全部样本, 以减少过拟合。进一步地, xgboost 还有列采样, 每轮计算按百分比随机采样一部分特征, 既提高计算速度又减少过拟合。
以上几个不相关问题的相关性在于,都存在局部与整体的关系,由低层次的特征经过组合,组成高层次的特征,并且得到不同特征之间的空间相关性。
CNN抓住此共性的手段主要有四个:局部连接/权值共享/池化操作/多层次结构。
①局部连接使网络可以提取数据的局部特征;
②权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积;
③池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。
有时候因为样本的产生和隐含变量有关(隐含变量是不能观察的),而求模型的参数时一般采用最大似然估计,由于含有了隐含变量,所以对似然函数参数求导是求不出来的,这时可以采用EM算法来求模型的参数的(对应模型参数个数可能有多个),EM算法一般分为2步:
E步:选取一组参数,求出在该参数下隐含变量的条件概率值;
M步:结合E步求出的隐含变量条件概率,求出似然函数下界函数(本质上是某个期望函数)的最大值。
重复上面2步直至收敛。
过拟合的原因是算法的学习能力过强;一些假设条件(如样本独立同分布)可能是不成立的;训练样本过少不能对整个空间进行分布估计。
处理方法:
①早停止:如在训练中多次迭代后发现模型性能没有显著提高就停止训练
②数据集扩增:原有数据增加、原有数据加随机噪声、重采样
③正则化
④交叉验证
⑤特征选择/特征降维
⑥创建一个验证集是最基本的防止过拟合的方法。我们最终训练得到的模型目标是要在验证集上面有好的表现,而不训练集。
数值缩放,不影响分裂点位置。因为第一步都是按照特征值进行排序的,排序的顺序不变,那么所属的分支以及分裂点就不会有不同。
另外,注意树模型是不能进行梯度下降的,因为树模型是阶跃的,阶跃点是不可导的,并且求导没意义,所以树模型(回归树)寻找最优点事通过寻找最优分裂点完成的。