先知机器学习平台算法原理

1. 统计学角度看待机器学习问题

如何从数据中“学习”到尽可能正确的知识(模型),并将其用于新数据的预测是传统机器学习需要解决的核心问题。从统计的角度看,这个问题可以表述为,依据已有的样本数据,寻找模型参数(知识)的合理估计,使得这个估计在总体样本数据上期望损失最小。 对于传统的有监督的机器学习(supervised learning)形式化的表示就是:给定样本总体D,与总体独立同分布的训练样本集Dtrain=(x1,y1),(x2,y2)...(xN,yN),其中每个样本点为一个属性向量xi和标记yi的二元组;一个表示损失的函数loss(y^,y),其中yy是样本的真实标记,loss(y^)是预测标记;模型定义一个参数为θ的fθ(x);学习的目标就是寻找最优的参数估计θ∗,使得在总体样本分布上的期望损失最小:

但是一般情况无法得到总体样本上的期望损失,只能利用已有的训练数据得到期望损失的估计ENEN,也被称作经验风险,。因此,学习目标变为寻找最优的参数估计θ^,使得经验风险EN最小。机器学习问题就转化为最优化问题。一般情况下解这样一个最优化问题,是无法得到解析解的,因此需要用到数值优化,数值优化里面比较经典的就是梯度下降法。

2. 梯度下降算法

对于一个函数g(θ) ,由于负梯度方向是函数下降最快的方向,只要从参数空间的某点θaθa开始沿着梯度方向走足够小的距离到θbθb,那就能使得函数值g(θa)≥g(θb) 。基于此,梯度下降算法就是从参数空间的一个函数最小值点的猜测θ0θ0出发,不断地沿着当前的梯度方向不断逼近函数局部最小值点。
梯度下降算法构造了参数空间的一个点序列θ0,θ1,…,θn ,点与点之间的转移公式为:

其中γtγt为第tt步的步长。点序列的最后一个元素就是整个梯度下降的解,有很多算法通过优化γtγt的选择来获得更快的收敛速度,比如利用二阶导数信息的牛顿法,这里就不展开介绍了。对于前面提到的最小化经验风险的问题,梯度下降算法的点序列的转移公式可以表示为:

代入ENEN,得到

从转移公式可以看出,梯度下降算法每一步的迭代都需要用到所有的训练样本点的信息,对于利用二阶梯度信息选择gammatgammat的牛顿法及其变形来说,计算代价会更大。

3. 随机梯度下降算法

与梯度下降法每一步直接基于所有训练样本点计算∇θEN(θt)∇θEN(θt)不同,随机梯度下降法的一步是基于单个随机选择的样本点(xt,yt)(xt,yt)对∇θEN(θt)∇θEN(θt)的估计

θt+1=θt−γt∇θloss(fθ(x),y)θt+1=θt−γt∇θloss(fθ(x),y)

更广义的随机梯度下降算法,可以是基于小样本集的,每次都从训练集DtrainDtrain中随机采样一个很小的样本集,利用
DminiDmini来估计∇θEN(θt)∇θEN(θt)

θt+1=θt−γt1n∑x∈Dmini∇θloss(fθt(x),y) ,n≪Nθt+1=θt−γt1n∑x∈Dmini∇θloss(fθt(x),y) ,n≪N

对于一个实际的系统而言,不用每次都使用所有的训练样本,每一步对于内存、计算和通讯的要求都大大降低了。

4. 大数据背景下的算法选择

对于一个定义好的机器学习任务而言,可以使用的计算资源(包括时间、存储空间、计算能力)是有限的。大数据背景下的一个核心难题就是如何利用有限的计算资源,获得更好的结果
换一个角度描述这个难题,就是对于相同的计算资源,机器学习系统如何利用更多的数据信息:更多的数据(样本数)、更多的信息(特征数),基于更多数据的可能会是对期望损失的一个更好的估计,基于更多特征的会有更强的模型表达能力,因此会得到更好的模型效果。

对于样本量超大、属性维度超高的机器学习任务而言,梯度下降算法每一步的代价都是极大的,因为梯度下降算法每一步迭代都需要整个样本集的所有信息。对于相同的数据量,随机梯度下降算法能够以更小的计算代价,(前期)更快的收敛速度来获得相同精度的效果。因此给予相同的计算资源,随机梯度下降算法能够利用更多的数据信息,从而得到更好的效果。 参考下表,可以更加直观地体会到随机梯度下降算法的优势,对同一个数据集,随机梯度下降算法利用远远少于传统算法的时间获得了与传统优化算法相同的精度:

优化算法 训练时间 测试错误率
传统优化算法 23.642s 6.02%
传统优化算法——性能优化版 66s 6.03%
随机梯度下降算法 1.4s 6.02%

5. LR(Logistic Regression)

在线学习和CTR等场景常常会用到逻辑回归(Logistic Regression),而传统的批量(batch)算法无法有效地处理超大规模的数据集和在线数据流,google先后三年时间(2010年-2013年)从理论研究到实际工程化实现的FTRL (Follow-the-regularized-Leader)算法,在处理诸如逻辑回归之类的带非光滑正则化项(例如L1范数,做模型复杂度控制和稀疏化)的凸优化问题上性能非常出色,我们的系统也使用了该算法。

对于logistic回归,模型fθ(x)fθ(x)为:

fθ(x)=11+e−θt⋅xfθ(x)=11+e−θt⋅x

损失函数loss(y^,y)loss(y^,y)为:

loss(y^,y)=y⋅logfθ(x)+(1−y)⋅log(1−fθ(x))loss(y^,y)=y⋅log⁡fθ(x)+(1−y)⋅log⁡(1−fθ(x))

因此我们需要求解θθ使得下面式子最小化:

θ^=arg minθ∑i=1N[yi⋅logfθ(xi)+(1−yi)⋅log(1−fθ(xi))]θ^=arg⁡ minθ∑i=1N[yi⋅log⁡fθ(xi)+(1−yi)⋅log⁡(1−fθ(xi))]

注意梯度更新公式为:

θt+1=θt−γt1N∑x∈Dtrain∇θloss(fθt(x),y)θt+1=θt−γt1N∑x∈Dtrain∇θloss(fθt(x),y)

对于logistic回归,我们将loss的表达式带入θθ,并对求梯度,得到如下的更新公式(具体的数学推导略)

θt+1=θt−γt1N∑i=1N(fθt(xi)−yi)⋅xiθt+1=θt−γt1N∑i=1N(fθt(xi)−yi)⋅xi

6. GBDT

第四范式自主研发算法GBDT(Gradient Boosting Decision Tree)。

GBDT是一种基分类器为决策树的集成学习方法。决策树是一种常见的机器学习算法,GBDT中使用到的是回归树,如下图所示,回归树包含一个根结点、若干个内部结点和若干个叶子结点,每个叶子结点对应于一个实数值的预测结果,其他每个结点对应于一个特征判断,根结点包含所有样本,每个结点包含的样本集合根据特征判断的结果被分到子结点中。

GBDT模型是一个由很多棵树组成的决策森林,预测结果是所有决策树的预测结果加权之和。

目标函数
形式上,GBDT可以表示为

F(x)=∑t=1mαtht(x)+biasF(x)=∑t=1mαtht(x)+bias

其中ht(x)ht(x)是第tt个回归树αtαt,是第tt个回归树的权重biasbias,biasbias是偏差项。GBDT的学习过程可以看作迭代式函数梯度下降过程,每次迭代学习一个拟合负梯度方向的基分类器

Ft(x)=Ft−1(x)+argminf∑iℓ(yi,Ft−1(xi)+f(xi))Ft(x)=Ft−1(x)+argminf∑iℓ(yi,Ft−1(xi)+f(xi))

对其中的优化问题做一步梯度下降迭代

Ft(x)=Ft−1(x)+αt∑i−∇Fℓ(yi,Ft−1(xi))Ft(x)=Ft−1(x)+αt∑i−∇Fℓ(yi,Ft−1(xi))

其中

αt=argminα∑iℓ(yi,Ft−1(xi)+α∑i−∂ℓ(yi,Ft−1(xi))∂Ft−1(xi))αt=argminα∑iℓ(yi,Ft−1(xi)+α∑i−∂ℓ(yi,Ft−1(xi))∂Ft−1(xi))

其中Ft(x)Ft(x)是第tt轮的模型,是损失函数,先知系统里面使用的是常见的对数几率损失函数

其中yy是样本真实标记,是预测标记。
优化算法

GBDT使用的基分类器是回归树,每颗回归树用于拟合梯度下降中的梯度值。先知中回归树的学习目标是均方误差

其中为第tt轮第ii个样本的梯度值。回归树学习完之后,根据树的结果,解一个简单的优化问题,更新。

7. HE-TreeNet

第四范式自主研发高维离散嵌入树网络(Hyper-dimension Ensemble Tree Net)算法;该算法适用场景为:数据量多,样本之间有时序关系,并且时间跨度大;短时间内数据分布变化不大,近期样本分布对label影响更大;离散特征多但是需要用连续值模型。

连续值训练算法(如GBDT)在某些场景下可以得到更好的效果。而在实际业务问题中,很多特征无法用连续值表达,依然有很多离散值特征,为了能在这种业务问题上使用基于连续值特征的训练算法,当前做的处理是丢弃离散值特征,这样就会损失很多信息,影响模型效果。为了保留离散特征信息,我们需要对离散值特征进行连续值化。

连续值化的基本原理为将训练样本按照某种规则排序,比如按时间排序,对于某条样本(instance)的某个特征(sign),统计在此样本之前出现此特征的样本的个数和正样本个数,作为该样本该特征的连续化特征。

8. 自动特征组合

自动特征组合(Feature-Go)用于自动生成基于combine方法产生的特征,并评估重要性。

线性模型如LR只能刻画特征间的线性关系,而通过⼈工添加组合特征增加特征非线性,既耗时,又需要建模人员有较高业务理解能力,因此门槛较高。如果使用非线性模型如GBDT, 则不能应用于⼤规模离散特征的场景。因此自动特征组合(FeatureGo)的产生就是为了解决这一问题。

自动特征组合分为两步:

  • 第一步:从低阶到高阶的启发式搜索(beam search)产生组合特征,且具有回溯功能;

  • 第二步:预排序(slotwise从特征集N中选出特征集C)- 特征池评测(slotwise从C中选出topK)- 更新(评估topK精确的效果)。

自动特征组合的搜索策略如下:

在选择特征组合过程中,特征之间的选择会有依赖,因此搜索策略的不同会显著影响最终选择出的组合特征集。候选特征组合的指数有多个,因此必须采用一定的剪枝策略,缩小搜索空间,以尽可能节省计算、内存和网络开销。
特征组合分析的搜索策略为贪心搜索,算法流程如下:

一、 根据一阶特征,初始化候选组合特征集 C 为所有可能的二阶组合特征

二、 按照指定的特征选择策略,从 C 中选出 k 个组合特征,并从 C 删除选中的特征

三、 将 k 个组合特征和 C 中每一个组合特征组合,并放入 C 中(需去重)

迭代上述过程直至满足终止条件。

9. 自动调参

第四范式自主研发自动调参算子,能够自动生成配置,运行任务,获取结果,解放人力;并行执行多个任务,充分利用计算资源;对于没有经验的建模人员,可以设置较大的范围,搜索出合适的参数。

在机器学习建模中,人工调参往往费时费力、很难充分利用计算资源、需要一定的经验,为了降低这部分的门槛,我们有了算法自动调参算子。

其原理是根据设置的参数搜索空间,搜索合适的参数(有random search和grid search两种);然后将搜索到的参数生成配置,运行任务,获得结果(以auc为评估标准);接下来将结果和对应的参数反馈给搜索算法;最后搜索算法根据之前的结果,试图寻找参数和结果之间的关系,搜索更合适的参数。

参数配置里面,采样都是随机的,grid search是各个参数之间做笛卡尔积,random search的调参次数是终止条件,采样数不用配置,每次调参都是完全随机,与上一次结果没有关系,如果对参数的选择有比较丰富的经验值,可以不用设定范围,选择枚举参数。

10. LFC

第四范式自主研发算法。传统LR建模中,为了取得更好的效果,对连续特征往往需要依赖建模人员的业务经验来选择合适的离散化方案。为提高平台易用性,降低机器学习门槛,第四范式开发了Linear Fractal Classification(LFC)算法。

LFC通过在模型训练和预测过程中对连续值特征使用多分桶技术,将连续特征离散化,一方面使得机器学习模型能直接处理特征抽取算子输出的连续特征。另一方面,简化了建模人员 离散连续特征的工作量。 LFC 对分桶数目不敏感,且模型稳定性优于 LR 模型。经过我们实际建模实验结果显示:LFC 在只有连续特征的数据集上,效果明显优于 LR 模型;在既有连续特征又有离散特征的数据集上,也能取得比 LR 更好的效果。另外,LFC 具有操作简单,不会显著增加内存占用的优点。

higgs(全连续特征数据集) AUC Time
LR 0.6687 438s
LFC 0.7707 1496s
xgboost 0.8319 21524s
creditKaggle(连续离散特征数据集) AUC Time
LR 0.6191 4s
LFC 0.8528 5s
xgboost 0.8678 34s

可以看出:

  • 效果上,LFC 的效果明显优于 LR;在只有连续特征的 higgs 数据集上,有超过 15% 的提升;在creditKaggle 上,有超过 37% 的提升。

  • 性能上,在只有连续特征的数据集 higgs 上,LFC 耗时为 LR 的 3.4 倍;但在同时有连续值特征和离
    散值特征的数据集上,LFC 的耗时不会显著增加。

10.1. 关于连续特征分桶

连续值特征多分桶处理中,等距分桶是最常用的一种特征离散化处理方法。它是将特征对应的取值区间,等距切分成 B 份(B 为预定义的桶数目),当特征取不同值时,映射到不同的桶中。如下图所示:

我们将左侧图中某特征对应的 8 个不同取值,对应的取值区间 [2,8] 等分成 4 个桶,这样不同取值被分到不同的桶中,并使用桶的 ID 来代替每个特征。等距分桶操作简单,速度快省内存(只需存储每个连续特征的最大最小值),但效果较依赖与所选择的桶数目 B,也即对桶数目敏感。为了缓解该问题,本算法将同时采用多个不同的桶数目去离散化同一个特征,如同时使用三个不同的桶数目 10、100、1000,即将一个特征同时离散到 3 个不同的桶中。

11. DNN

第四范式自主研发的DNN算法基于深度神经网络框架实现了深度学习模型的训练及预估的功能,同时可以进行多机分布式运行。
DNN(Deep neural network)是一种前馈人工神经网络,在输入与输出层之间包含了多于一层的隐含层。

神经网络的重要概念:

  • 节点:神经网络最基本的成分是神经元模型,一个神经元就是一个节点。

  • 隐藏层:若干个神经元组成一层隐藏层。先知提供的DNN算法中,配置时同一隐藏层的所有节点的激活函数相同。

  • 激活函数:由节点的输入计算得到其输出的函数关系。

  • 权重:两节点之间连线的重要性系数,训练神经网络的过程即在训练所有连线的权重。

12. SVM(Linear SVM)

支持向量机分类器是一种经典的分类模型,通过构建样本空间中的一个划分超平面,将不同类别的样本分开。如下图,以二维平面上的样本点为例,实心点代表正类样本,空心点代表负类样本。黄线和两条虚线都是可以将不同类别样本分开的超平面,直观的感觉,三个分类超平面中,位于二类样本正中间的黄线会是更好的分类平面,因为这样会降低分类平面的泛化误差。在支持向量机中,分类超平面与最近的异类样本本店(被称为支持向量,如下图中的sv1、sv2、sv3sv1、sv2、sv3之间的距离和被称为间隔(margin),支持向量机的目标就是找出间隔最大的超平面来作为最终的分类边界。

在样本空间中,分类超平面可以通过如下线性方程来描述
wTx+b=0wTx+b=0

其中ww是法向量,是x特征向量,是b超平面与原点之间的距离。样本空间中任意点x到超平面的距离是

r=|wTx+b|∥w∥r=|wTx+b|‖w‖

则间隔(margin)为
γ=2∥w∥γ=2‖w‖

线性支持向量机的目标是最大化间隔(margin),其等价的目标函数可以写成(为了表述方便,将b略去)

argmin(w)1n∑i=1nℓ(w;(x,y))+λ2∥w∥2argmin(w)1n∑i=1nℓ(w;(x,y))+λ2‖w‖2

其中λ2λ2是ww二范数(也就是与间隔的倒数成正比的正则化项)的系数,样本上的损失函数为Hinge损失函数

ℓ(w;(x,y))=max{0,1−y〈w,x〉}ℓ(w;(x,y))=max{0,1−y〈w,x〉}

〈w,x〉〈w,x〉表示ww和xx的内积。
在训练数据规模较大,实际业务系统可装载的模型大小受限的情况下,还需要尽量是的模型尽量稀疏(即中大部分取值为0),因此先知系统中采用了类似ElasticNet的损失函数

ProphetLoss=1n∑i=1nℓ(w;(x,y))+λ1|w|+λ2∥w∥22ProphetLoss=1n∑i=1nℓ(w;(x,y))+λ1|w|+λ2‖w‖22

其中λ1λ1为模型一范数正则化项的系数。与ElasticNet不同的是,先知系统不限制λ1+λ2=1λ1+λ2=1,因此先知系统包含了ElasticNet的情况。

13. FM(Factorization Machine)

因子分解机是一种简单的因子分解模型,通过特征向量模拟因子分解模型,可以对不同类别特征间的交互作用进行建模。因子分解机结合了支持向量机和因子分解模型的优势,使用分解的因子参数对交互行为进行建模。因子分解模型可以对任意阶的特征交互作用进行建模,但是出于模型复杂度的考虑,常见的是二阶因子分解机。二阶因子分解机的模型可以写作

f(x;w,V)=w0+∑i=1nwixi+∑i=1n∑j=i+1n〈vi,vj〉xixjf(x;w,V)=w0+∑i=1nwixi+∑i=1n∑j=i+1n〈vi,vj〉xixj

其中n表示特征总数xixi,代表第ii个特征的取值,wiwi代表第ii个特征的一阶权重,表示第ii个特征的kk维的分解因子参数〈vi,vj〉〈vi,vj〉,表示第ii和jj个特征的分解因子参数之间的内积(对特征ii和jj之间的交互作用建模)

〈vi,vj〉=∑f=1kvi,fvj,f〈vi,vj〉=∑f=1kvi,fvj,f

kk是建模时候用户指定的分解维数。
先知系统中的因子分解机被用来解决二类分类问题,借用对数几率回归(Logistic Regression)的思想,正例后验概率估计为

P(y=1|x;w,V)=11+exp−f(x;w,V)=11+exp−(w0+∑ni=1wixi+∑ni=1∑nj=i+1〈vi,vj〉xixj)P(y=1|x;w,V)=11+exp−f(x;w,V)=11+exp−(w0+∑i=1nwixi+∑i=1n∑j=i+1n〈vi,vj〉xixj)

P(y=0|x;w,V)=1−P(y=1|x;w,V)P(y=0|x;w,V)=1−P(y=1|x;w,V)

其中f(x)f(x)为因子分解机模型。
与解对数几率回归问题类似,先知系统采用常见的最大似然估计来求解因子分解机中的ww向量和VV矩阵(每个被分解的特征会有一个k维的分解因子向量)。最大化对数似然,包含m个样本数据的损失函数可以表示为

ℓ(w,V)=1m∑i=1mlnP(yi|xi;w,V)ℓ(w,V)=1m∑i=1mln⁡P(yi|xi;w,V)

为了控制训练中的模型结构风险,更好地避免过拟合,一般会在优化目标中加入w和V的二范数

argmin(w,V)ℓ(w,V)+λw2∥w∥2+λv2∑f=1n∥vf∥2argmin(w,V)ℓ(w,V)+λ2w‖w‖2+λ2v∑f=1n‖vf‖2

其中λw2λ2w为ww的二范数正则化项系数λv2λ2v,为VV的二范数正则化项系数。在训练数据规模较大,实际业务系统可装载的模型大小受限的情况下,还需要尽量是的模型尽量稀疏(即w中大部分取值为0),因此先知系统中采用了类似ElasticNet的损失函数:

ProphetLoss=ℓ(w,V)+λw1|w|+λv1∑f=1n|vf|+λw2∥w∥2+λv2∑f=1n∥vf∥2ProphetLoss=ℓ(w,V)+λ1w|w|+λ1v∑f=1n|vf|+λ2w‖w‖2+λ2v∑f=1n‖vf‖2

其中λw1λ1w为ww的一范数正则化项系数λv1λ1v,为VV的一范数正则化项系数。与ElasticNet不同的是,先知系统不限制λ1+λ2=1λ1+λ2=1,因此先知系统包含了ElasticNet的情况。

14. NB(Naïve Bayes)

朴素贝叶斯分类器是基于很强的特征条件独立性假设(对已知类别,假设所有特征相互独立,也就是说假设每个特征独立地对分类结果产生影响)利用贝叶斯公式P(c|x)=P(c)P(x|c)P(x)P(c|x)=P(c)P(x|c)P(x)(其中cc是类别,xx是特征向量)进行分类的一种简单的概率分类器。尽管朴素贝叶斯算法采用了过于简单的条件独立性假设,但是在实际的应用中依然可以取得较好的结果,常见的应用有文本分类、欺诈检测等等。

特征条件独立性假设:
利用贝叶斯公式来进行预测的主要困难是利用有限的样本,对联合概率P(x|c)P(x|c)进行估计。朴素贝叶斯采用了特征条件独立性假设,因此贝叶斯公式可以重写为

P(c|x)=P(c)P(x|c)P(x)=P(c)P(x)∏idP(xi|c)P(c|x)=P(c)P(x|c)P(x)=P(c)P(x)∏idP(xi|c)

其中为dd特征数目,是xixi第ii个特征的取值,使得对联合概率的估计变得简单。

类别先验估计:
令表示训练集T中第c类样本组成的集合,P(c)可以被估计为

P(c)=|Tc||T|P(c)=|Tc||T|

离散特征条件概率估计:
对于离散特征而言,P(xi|c)P(xi|c)可以假设服从多项分布(Multinomial),因此可以被估计为

P(xi|c)=|Tc,xi||Tc|P(xi|c)=|Tc,xi||Tc|

其中Tc,xiTc,xi表示中在第i个特征上取值为xixi的样本集合。

概率估计的平滑处理:
为了避免其他特征携带的信息被训练集中未出现的特征值抹去,在估计概率值时通常要进行平滑,先知中采用常见的拉普拉斯平滑,令N表示训练集T中可能的类别数,表示第i个属性可能的取值数,则参数估计可以表示为

P(c)=|Tc|+α|T|+αNP(c)=|Tc|+α|T|+αN

其中拟计数(pseudocount)α是平滑参数。

P(xi|c)=|Tc,xi|+α|Tc|+αViP(xi|c)=|Tc,xi|+α|Tc|+αVi

连续特征条件概率估计:
对于连续特征可以考虑概率密度函数,先知系统采用常见的假设,假设其服从正态分布,其中和分别表示第c类样本在第i个属性上取值的均值和方差(先知系统利用最大似然估计对其进行估计):

P(xi|c)=12πσc,i−−−−−√exp(−(xi−μc,i)22σ2c,i)

先知平台算法原理简介相关推荐

  1. 支持向量机算法原理简介

    1,支持向量机概念简介 分类作为数据挖掘领域中一项非常重要的任务,它的目的是学会一个分类函数或分类模型(或者叫做分类器),而支持向量机本身便是一种监督式学习的方法,它广泛的应用于统计分类以及回归分析中 ...

  2. 逻辑回归算法原理简介

    1,逻辑回归简介 逻辑回归完成分类任务,是经典的二分类算法(也可以解决多分类问题),机器学习算法一般选择先逻辑回归(优先选择)再用复杂的,逻辑回归的决策边界可以是非线性的(高阶).可以通过参数对结果进 ...

  3. PBFT 算法原理简介

    什么是 PBFT? Practical Byzantine Fault Tolerance ,实用拜占庭容错. 什么是 BFT? Byzantine Fault Tolerance ,拜占庭将军问题. ...

  4. RSA算法原理简介,非对称加密,公开密钥算法(易懂篇)

    RSA加密算法是最常用的非对称加密算法,CFCA在证书服务中离不了它.但是有不少新来的同事对它不太了解,恰好看到一本书中作者用实例对它进行了简化而生动的描述,使得高深的数学理论能够被容易地理解.我们经 ...

  5. 深度学习算法 | LSTM算法原理简介及Tutorial

    北京 | 深度学习与人工智能研修 12月23-24日 再设经典课程  重温深度学习 阅读全文 > 正文共4880个字 17张图,预计阅读时间:13分钟. 1.背景 LSTM(Long Short ...

  6. GNSS/INS松组合算法原理简介

    文章目录 卡尔曼滤波简介 概念 内容 方法 卡尔曼滤波器的初始化 系统状态 微分方程 离散化 GNSS 位置观测方程 状态转移矩阵 系统噪声方差阵 系统噪声驱动阵 本篇博文的矩阵展开都是根据状态向量为 ...

  7. AVS-CABAC算法原理简介2

    CABAC是H264的一种熵编码方案,相比如H264的另外一种熵编码方案CAVLC而言,在可接受的视频质量(30dB到38dB之间)内变化时,前者可节约平均9%到14%的码流.CABAC有以下几个特性 ...

  8. 线性回归算法原理简介

    1,线性回归概念 回归和分类的区别:简单地说,回归就是通过数据预测出一个目标值(实际值),分类就是通过数据预测出一个类别(二分类,多分类). 比如:银行贷款实例 (1)数据:每个个人(样本)的工资和年 ...

  9. h264—CABAC算法原理简介1

    Context-Based Adaptive Binary Arithmetic Coding in the H.264/AVC 简称Cabac,H264中的一种熵编码方式:基于上下文的自适应二进制算 ...

  10. 银行家算法原理及代码实现

    银行家算法原理 简介 银行家算法(Banker's Algorithm)是一个避免死锁(Deadlock)的著名算法,是由艾兹格·迪杰斯特拉在1965年为T.H.E系统设计的一种避免死锁产生的算法.它 ...

最新文章

  1. 在 Linux 中查看时区
  2. freeRtos学习笔记 (9) 移植和CPU利用率统计
  3. 关于Transformer和BERT,在面试中有哪些细节问题?
  4. spring @Value注解#和$区别
  5. Vitamio中文API文档(1)—— MediaStore
  6. Ubuntu apt-get 更新/查看软件
  7. 石油化工设备维护检修规程_旋回破碎机横梁臂架、衬板、内外铜套检修步骤及设备检修维护要点...
  8. android 扫描重复文件,Android Gradle在APK META-INF中复制的重复文件
  9. 高光谱数据集_基于飞桨实现高光谱反演:通过遥感数据获取土壤某物质含量
  10. 数据网站(数据集的获取)、打分网站
  11. java web 学习十二(session)
  12. fv-15php1c 安装图,SQLite - C/C++接口 API(一)
  13. 由两个曲面确定的交线的切向量求解
  14. 微信H5支付浏览器支付
  15. uni-app开发语音提示推送功能
  16. 资本运作/自我投资--哪项需要优先?
  17. 零基础学python实战答案-Python3.6零基础入门与实战 PDF 带源码视频版
  18. Web学习第六天用html5表格标签做个人简历
  19. java生成 *.crt和*.key文件与*.keystore *.jks文件的转换
  20. allegro 进行outline倒角

热门文章

  1. 题目:输入某年某月某日,判断这一天是这一年的第几天?
  2. Log4j2 Zero Day 漏洞 Apache Flink 应对指南(二)
  3. 微博基于 Flink 的机器学习实践
  4. 牛批!妹子一口气拿下BAT、美团、vivo、爱奇艺等公司Offer面经总结
  5. mysql indexkey提取,MySQL元数据获取基础笔记day06
  6. 开启协程_一篇文章搞懂Python协程
  7. linux没有.brashrc文件,Linux 安装 Redis4.0.6
  8. python_mysql
  9. 经典神经网络 -- FPN : 设计原理与pytorch实现
  10. 爬虫进阶 -- 爬虫相关定义、反爬机制及其破解