机器学习算法工程师面试问题汇总(持续更新)

  • 机器学习

介绍一下逻辑回归

逻辑回归属于一种广义线性回归,但它是用来做分类的。传统回归模型输出变量的取值为\left ( -\infty ,+\infty \right ),无法解释分类问题,逻辑回归引入激活函数,二分类时是sigmoid,将输出变量取值映射到(0,1)之间,看作是取正例的概率,一般设置阈值为0.5,概率>0.5认为是正例,反之认为是负例。多分类时,激活函数为softmax,将各分类得分做指数变换后进行归一化处理,处理后的值为各分类概率,且其和为1,预测结果为概率最大的类别。

sigmoid函数的公式如下:

S(x)=\frac{1}{1+e^{-x}}

其图像如下,可以看到,该函数可以将\left ( -\infty ,+\infty \right )范围上的数映射到(0,1),并且符合值越大,函数值也越大的规律,这样就可以看出概率了,其实这里可以发现sigmoid的形态很容易导致反向传播时的梯度消失,以及出现阶梯性的梯度下降方向,这是它的缺陷,后面这个激活函数就逐渐呗取代了。

机器学习算法工程师面试问题汇总(持续更新)_第1张图片

softmax函数的公式如下:

S(x)=\frac{e^{x_{i}}}{\sum e^{x_{i}}}

其图像如下:

机器学习算法工程师面试问题汇总(持续更新)_第2张图片

可以看到softmax也将x映射到了(0,1)上,这个是适用于多分类的激活函数。 

介绍一下集成算法

集成算法一共有三大类,分别为bagging,boosting,stacking。

其中bagging是一种并联式的集成算法,它是将多个相同的弱学习器通过并联方式形成强学习器,其中各个弱学习器是相互独立的,如果是分类问题,那么结果为各个弱分类器的投票所得,如果是回归问题,其结果是各个弱学习器的平均所得,比如随机森林算法。

Boosting是一种串联式的集成算法,它是将多个相同的弱学习器通过串联方式形成强学习器,首先用第一个弱学习器对数据进行拟合,但单个弱学习器不能完整地解释信息,会存在一定误差,故需要用第二个弱学习器对误差进行拟合,并以此类推,迭代下去,直到误差收敛到设定的阈值,比如真实值为1000,第一个弱学习器的预测值为900,第二个弱学习器的目标就是1000-900 = 100,若第二个弱学习器的预测值为90,第三个弱学习器的目标就是100-90 = 10,若第三个弱学习器的预测值为9,且设定的阈值为5,则误差为10-9 = 1,已经达到了要求,故收敛。然后将前面三个弱学习器串联起来形成强学习器,这就是boosting的全过程。常见的算法有Adaboost、GBDT、XGBoost与lightGBM。

Stacking就是将多个不同的弱学习器组合在一起,将他们的输出结果作为输入传入一个新的学习器中去,输出结果作为最终结果。

介绍一下决策树与随机森林。

决策树:

决策树可以分为分类树和回归树,其中分类树有ID3树,ID4.5树以及CART树,ID3树中间节点的特征选择是根据信息增益,ID4.5树中间节点的特征选择是根据信息增益率(信息增益/特征自身的信息熵),CART树中间节点的特征选择是根据GINI系数得到的,并且是二叉树,其预测结果是根据各个叶子节点的值投票所得;回归树的中间节点的特征选择是各个节点的方差,方差越小越好,其预测结果是根据各个叶子节点的值平均所得。

随机森林:

随机森林是一种bagging集成算法,是由很多棵CART树组成的,每棵树相互独立,构成每棵树样本是从总体中通过boostrap重抽样所得,特征为随机抽样所得,特征数一般为总特征数的四分之三,决策树的数目可由网格搜索得到,最终形成随机森林,当进行分类时,预测结果由各棵树结果投票决定,当进行回归时,预测结果由各棵树结果平均得到。

当不限制树的生长规模时,它可以一直向下生长,直到不能生长,这样即便对于每个样本都进行很好的拟合,但明显与事实不符,出现了过拟合现象,就需要对其进行剪枝,剪枝又分为预剪枝和后剪枝,预剪枝是对模型设定最大深度、最大叶子节点数等阈值限制树的生长,后剪枝则是通过一定的衡量标准即(损失+α*叶子节点数),这样就既要求损失小,又要求叶子节点数少。

介绍一下Adaboost、GBDT、XGBoost与lightGBM。

Adaboost:

Adaboost是一种boosting集成算法,它是由多个弱学习器(决策树)串联而成,若进行分类,则首先用一颗决策树对样本进行拟合,对于此次预测错误的点,增加它的权重,扩大这些样本点的影响,将新样本输入到新的树中去,继续进行拟合和预测,以此类推,直到迭代完毕,然后将这些决策树按照预测效果的好坏,为各棵树赋权,组合成强学习器Adaboost。

GBDT:

GBDT称为梯度提升决策树,它是一种boosting集成算法,这里的梯度其实就是损失函数的负梯度-\frac{\partial L}{\partial f(x))},当损失函数为L=\frac{1}{2}(y-f(x))^{2}时,负梯度恰好为残差y-fx,第一次学习是用样本拟合一棵决策树,然后第二次学习就是对上一次产生的梯度进行拟合,以此类推,直到迭代完毕,最终将第一个决策树+后面的决策树乘以对应的步长得到最终的强学习器GBDT,步长要求在0到1之间,步长越小迭代次数也越多。

XGBoost:

Xgboost是一种boosting集成算法,是GDBT的改进方法,是通过多个二叉决策树串行而成,GBDT的核心在于后面的树拟合的是前面预测值的残差,这样可以一步步逼近真值。然而,之所以拟合残差可以逼近到真值,是因为损失函数为平方损失,如果换成是其他损失函数,使用残差将不再能够保证逼近真值。XGBoost的方法是,将平方损失函数做泰勒展开到第二阶,使用前两阶作为改进的残差,并且对损失函数加入了正则化惩罚项,限制了叶子节点个数以及叶子节点权重,限制了模型复杂度,避免了过拟合。传统GBDT使用的残差是泰勒展开到一阶的结果,因此,GBDT是XGBoost的一个特例;此外XGBoost中每个决策树中间节点的选择为根据损失函数算出的信息增益决定。

优点:

精度更高:GBDT 只用到一阶泰勒展开,而 XGBoost 对损失函数进行了二阶泰勒展开。XGBoost 引入二阶导一方面是为了增加精度,另一方面也是为了能够自定义损失函数,二阶泰勒展开可以近似大量损失函数;

灵活性更强:GBDT 以 CART 作为基分类器,XGBoost 不仅支持 CART 还支持线性分类器,使用线性分类器的 XGBoost 相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)。此外,XGBoost 工具支持自定义损失函数,只需函数支持一阶和二阶求导;

正则化: XGBoost 在目标函数中加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数、叶子节点权重的   范式。正则项降低了模型的方差,使学习出来的模型更加简单,有助于防止过拟合,这也是XGBoost优于传统GBDT的一个特性。

列抽样:XGBoost 借鉴了随机森林的做法,支持列抽样(训练时可以只考虑一部分特征),不仅能降低过拟合,还能减少计算。这也是XGBoost异于传统GBDT的一个特性;

缺失值处理:对于特征的值有缺失的样本,XGBoost 采用的稀疏感知算法可以自动学习出它的分裂方向;

缺点:计算量大、消耗内存。

lightGBM:

lightGBM算法是XGBoost的改进算法,相较于XGBoost算法,lightGBM在保证了模型效果的同时,大大加快了优化拟合速度。lightGBM采用了直方图算法,先将特征值离散化成k个整数,然后构造宽度为k的直方图,将数据进行装桶,在每个bin中对数据进行梯度累加和个数统计。分桶过后以每个bin为单位遍历的分裂点会少很多,减少了计算量。同时在分裂时,采用直方图做差加速,比如左节点为一二两个bin,那么其他bin就分到另一个节点。使用单边梯度抽样算法(GOSS),根据样本的权重信息对样本进行抽样,减少梯度小的样本,在计算增益时为梯度小的样本增加一个常数进行平衡,使得数据集分布不发生太大改变。如果多个指标之间互斥程度较大(大多数数据不同时非零),可将这些指标进行捆绑降低特征维度。特征合并算法,其关键在于原始特征能从合并的特征中分离出来。通过在特征值中加入一个偏置常量来解决。比如要融合A,B两个特征,A取值为[0,10],B取值为[0,20],给B加上一个偏置10,两个变量就没有重回部分了,就可以放心融合了。用带深度限制的Leaf-wise算法去生成树,每次分裂都找到增益最大的那个叶子节点进行分裂,而不是逐层分裂,lightGBM支持类别特征,不需要做独热码转换。避免独热码转换造成的特征稀疏问题,训练效果较好。lightGBM支持特征并行,不同于XGBoost对数据特征进行划分,在不同的机器上进行分割,最后机器间进行通信,增加了额外复杂度,lightGBM直接在同一台机器上保存全部数据,然后分块并行处理得到最佳方案,节省了通信时间。另外还支持数据并行,数据分块进行划分再组合到一起。基于投票的数据并行则进一步优化数据并行中的通信代价,使通信代价变成常数级别。在数据特征数量很大的时候,使用投票并行的方式只合并部分效果好特征的直方图从而达到降低通信量的目的,可以得到非常好的加速效果。

优点

速度更快

(1)lightGBM 采用了直方图算法将遍历样本转变为遍历直方图,极大的降低了时间复杂度;

(2)lightGBM 在训练过程中采用单边梯度算法过滤掉梯度小的样本,减少了大量的计算;

(3)lightGBM 采用了基于 Leaf-wise 算法的增长策略构建树,减少了很多不必要的计算量;

(4)lightGBM 采用优化后的特征并行、数据并行方法加速计算,当数据量非常大的时候还可以采用投票并行的策略;

(5)lightGBM 对缓存也进行了优化,增加了缓存命中率;

内存更小

(1)lightGBM 采用了直方图算法将存储特征值转变为存储 bin 值,且不需要特征值到样本的索引,降低了内存消耗;

(2)lightGBM 在训练过程中采用互斥特征捆绑算法减少了特征数量,降低了内存消耗。

缺点

(1)可能会长出比较深的决策树,产生过拟合。因此lightGBM在Leaf-wise之上增加了一个最大深度限制,在保证高效率的同时防止过拟合;

(2)Boosting族是迭代算法,每一次迭代都根据上一次迭代的预测结果对样本进行权重调整,所以随着迭代不断进行,误差会越来越小,模型的偏差(bias)会不断降低,所以会对噪点较为敏感;

(3)在寻找最优解时,依据的是最优切分变量,没有将最优解是全部特征的综合这一理念考虑进去;

如何进行特征选择?

在现实任务中我们会遇到维数灾难的问题(样本密度非常稀疏),若能从中选择一部分特征,那么这个问题就能大大缓解,另外就是去除不相关特征会降低学习任务的难度,增加模型的泛化能力。冗余特征指该特征包含的信息可以从其他特征中推演出来,但是这并不代表该冗余特征一定没有作用,例如在欠拟合的情况下也可以用过加入冗余特征,增加简单模型的复杂度。

在理论上如果没有任何领域知识作为先验假设那么只能遍历所有可能的子集。但是这显然是不可能的,因为需要遍历的数量是组合爆炸的。一般我们分为子集搜索和子集评价两个过程,子集搜索一般采用贪心算法,每一轮从候选特征中添加或者删除,分别成为前向和后先搜索。或者两者结合的双向搜索。子集评价一般采用信息增益,对于连续数据往往排序之后选择中点作为分割点。

常见的特征选择方式有过滤式filter,包裹式wrapper和嵌入式embedding。Filter类型先对数据集进行特征选择,再训练学习器。Wrapper直接把最终学习器的性能作为特征子集的评价准则,一般通过不断候选子集,然后利用交叉验证过程更新候选特征,通常计算量比较大。嵌入式特征选择将特征选择过程和训练过程融为了一体,在训练过程中自动进行了特征选择,例如L1正则化更易于获得稀疏解,而L2正则化更不容易过拟合。L1正则化可以通过PGD,近端梯度下降进行求解。

解决过拟合的方法。

有增加样本数量,对样本进行降维,降低模型复杂度,利用先验知识(L1,L2正则化),利用交叉验证,早停法,批归一化等。

阐述批归一化的意义

批归一化是一种用于训练神经网络模型的有效方法。这种方法的目标是对特征进行归一化处理(使每层网络的输出都经过激活),得到标准差为1的零均值状态。所以其相反的现象是非零均值。这将如何影响模型的训练:

首先,这可以被理解成非零均值是数据不围绕0值分布的现象,而是数据的大多数值大于0或小于0。结合高方差问题,数据会变得非常大或非常小。在训练层数很多的神经网络时,这个问题很常见。如果特征不是分布在稳定的区间(从小到大的值)里,那么就会对网络的优化过程产生影响。我们都知道,优化神经网络将需要用到导数计算。

假设一个简单的层计算公式y=(Wx+b),y在W上的导数就是这样:dy=dWx。因此,x的值会直接影响导数的值(当然,神经网络模型的梯度概念不会如此之简单,但理论上,x会影响导数)。因此,如果x引入了不稳定的变化,则这个导数要么过大,要么就过小,最终导致学习到的模型不稳定。而这也意味着当使用批归一化时,我们可以在训练中使用更高的学习率。

批归一化可帮助我们避免x的值在经过非线性激活函数之后陷入饱和的现象。也就是说,批归一化能够确保激活都不会过高或过低。这有助于权重学习——如果不使用这一方案,某些权重可能永远不会学习。这还能帮助我们降低对参数的初始值的依赖。

批归一化也可用作正则化的一种形式,有助于实现过拟合的最小化。使用批归一化时,我们无需再使用过多的dropout,这是有好处的,因为我们不用担心因为dropout时丢失太多信息了。但是,最好仍然组合使用这两种技术。

一般怎样进行超参数的优化。

网格搜索:

我们在选择超参数有两个途径:1)凭经验;2)选择不同大小的参数,代入到模型中,挑选表现最好的参数。通过途径2选择超参数时,人力手动调节注意力成本太高,非常不值得。所以我们可以通过网格搜索交叉验证调参,它通过遍历传入的超参数的所有排列组合,通过交叉验证的方式,返回所有参数组合下的评价指标得分,选出最优的超参数。它其实就是暴力搜索,这也导致了它在小数据集上很有用,但数据集大了就不太适用了,不过此时可以使用一个快速调优的方法——坐标下降,它其实是一种贪心算法:拿当前对模型影响最大的超参数作为初始值进行坐标下降,直到最优化,坐标下降可以理解为只按着坐标的方向进行优化,相比于梯度下降不同的是,梯度下降是按照指定梯度的方向进行优化的;然后就是再接着拿下一个影响最大的参数作为初始值进行坐标下降,如此下去,直到所有的参数调整完毕。这个方法的缺点就是可能会调到局部最优而不是全局最优,但是省时间省力。

随机搜索:

我们在搜索超参数的时候,如果超参数个数较少,那么我们可以采用网格搜索。但是当超参数个数比较多的时候,网格搜索所需时间将会指数级上升。所以就有了随机搜索,这种做法比上面的坐标下降的做法快,而且实验证明,随机搜索法结果也比其稍好。

随机搜索使用方法和网格搜索很相似,随机在超参数空间中搜索几十几百个点,其中就有可能有比较小的值。但他不是尝试所有可能的组合,而是通过选择每一个超参数的几个随机值的随机组合,这个方法有两个优点:

相比于网格搜索,它可以选择相对较少的参数组合数量。如果让随机搜索运行,它会探索每个超参数的不同的值,可以方便的通过设定搜索次数,控制超参数搜索的计算量。

还有就是对于有连续变量的参数时,RandomizedSearchCV会对其进行采样,这是网格搜索做不到的。

贝叶斯优化:

机器学习算法工程师面试问题汇总(持续更新)_第3张图片

假设上面这个是目标函数f,现在想找到使得f最小的超参数,可以直接随机设置几个超参数,然后得出对应的目标函数,然后从目标函数最小的那个超参数附近再采样几个点吗,不行,因为如果恰好在目标函数的局部最优点附近,就会陷入局部最优,而且每次选取超参数去计算目标函数值的时间代价是很高的,这样我们就可以考虑贝叶斯优化来解决这些问题,首先对于时间代价问题,贝叶斯优化采用了简单点的代理模型来代替原来的复杂的模型,代理模型一般是随机从复杂的原模型中采样几个样本特征与其对应的标签,然后通过高斯过程,得出一个代理模型,也就是输出一个高斯过程,具体如下:

机器学习算法工程师面试问题汇总(持续更新)_第4张图片

绿色实线就是代理模型,绿色范围是输出分布的标准差,贝叶斯优化的后续超参数效果验证就不再是通过原模型进行验证的了,而是根据代理模型来进行效果验证,这样极大地降低了代价。

解决了代价问题,接下来就要解决参数寻优问题了,首先可以看出代理模型上最低点位置应该是我们比较感兴趣的地方,很有可能在这里有全局最优点,但是这也不绝对,还有很多地方没有被探索过,我们应该优先探索那些方差大的区域,这样可以减小我们需要猜测的方差,为了实现猜测范围与最低点之间的平衡,引入了一个采集函数,其中最常见的是expectated of improvement(EI),当均值减少方差增大时,EI会增大,这时就实现了既希望目标函数变小,又希望代理模型最大可能地包含真实值的最优超参数。

还有一些其他智能参数优化算法,比如粒子群优化,遗传算法优化等。

介绍一下支持向量机

支持向量机是一种二分类模型,它的基本模型定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;支持向量机还包括核技巧,这使他成为实质上的非线性分类器。支持向量机的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最大化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。简单来说SVM就是,在特征空间上找到最优超平面使得数据的正负样本间隔最大。

支持向量机的目标函数为:

机器学习算法工程师面试问题汇总(持续更新)_第5张图片

为什么要引入核函数:

当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分。常见的核函数有多项式核函数和高斯核函数。

多项式核函数:多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。

高斯核函数:高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。

支持向量机如何避免过拟合:(软间隔)

解决过拟合的办法是为SVM引入了松弛变量,

因此SVM公示中的目标函数也需要相应修改,加上松弛变量的平方和,并求最小值。新的目标函数为:

 这样就达到一个平衡:既希望松弛变量存在以解决异常点问题,又不希望松弛变量太大导致分类解决太差。

介绍一下K-means聚类

  k-means算法是一种非监督算法,kmeans算法又名k均值算法,K-means算法中的k表示的是聚类为k个簇,means代表取每一个聚类中数据值的均值作为该簇的中心,或者称为质心,即用每一个的类的质心对该簇进行描述。

其算法思想大致为:第一步:先从样本集中随机选取 k个样本作为簇中心,并计算所有样本点与这 k个“簇中心”的距离,对于每一个样本点,将其划分到与其距离最近的“簇中心”所在的簇中。第二步:对于新的簇计算均值作为簇的新的“簇中心”,并将相比其他簇距离ci 簇最近的样本点划分到此簇所在的类中。以此一直迭代,直至达到迭代次数或者误差达到设定的阈值。

优点:

 1.理论成熟,思想简单,既可以用来做分类也可以用来做回归。

 2.可用于非线性分类 。

 3.适用于样本容量比较大的类域的自动分类。

缺点:

 1.计算量大,分类速度慢

 2.KNN在对属性较多的训练样本进行分类时,由于计算量大而使其效率大大降低效果。

 3.K值难以确定 :目前没有很好的方法,一般采用先定一个初始值,然后根据实验测试的结果调整K值,并且聚类结果受初始值影响很大

 4.对不平衡样本集比较敏感:当样本不平衡时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。

介绍一下DBSCAN聚类

DBSCAN是一种基于密度的聚类算法,聚类的时候不需要预先指定簇的个数,最终簇的个数不确定。这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间是紧密相连的,在该类别任意样本周围不远处一定有同类别的样本存在。通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。

DBSCAN算法将数据点分为三类:

1、核心点:在半径Eps内含有超过MinPts数目的点。

2、边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内的点。

3、噪音点:既不是核心点也不是边界点的点。

DBSCAN算法的流程:

 1.根据邻域条件遍历所有点,将所有点分别标记为核心点、边界点或噪声点;

 2.删除噪声点;

 3.为距离在Eps之内的所有核心点之间赋予一条边;

 4.每组连通的核心点形成一个簇;

 5.将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)。

优点:

可以对任意形状的稠密数据集进行聚类,而Kmeans一般只适用于凸数据集;

可以在聚类的同时发现异常点,对数据集中的异常点不敏感;

聚类效果不像Kmeans那样受初始值的影响。

缺点:

样本集的密度不均匀,聚类间距相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合;

样本集较大,聚类收敛时间长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进;

调参相对于Kmeans稍显复杂,需要对距离阈值和样本阈值进行联合调参,不同的参数组合对最后的聚类效果有很大影响。

介绍一下线性判别分析(LDA)

线性判别分析是一种有监督学习方法,LDA的主要思想是:给定训练集,想办法将这些样本投影到一条直线上,使得投影后同类的样本尽可能靠近,不同类的样本尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。

线性判别分析的目标就是找到这样一条直线,使得投影后满足:“类内差异小、类间差异大”。类内差异我们可以用同一个类的方差来衡量,方差越大表示数据波动越大,差异越大,反之差异越小;类间差异可以用两个类的均值向量之间的距离来衡量,如果两个类的均值向量距离较大,表明它们相距越远,差距越大。因此,线性判别分析的目标函数为:

机器学习算法工程师面试问题汇总(持续更新)_第6张图片

优点:在降维过程中可以使用类别的先验知识经验。

缺点:当总共有K个类别时,LDA最多降到K-1维。

介绍一下主成分分析(PCA)

主成分分析是一种无监督学习方法,PCA是比较常见的线性降维方法,通过线性投影将高维数据映射到低维数据中,所期望的是在投影的维度上,新特征自身的方差尽量大,方差越大特征越有效,尽量使产生的新特征间的相关性越小(相互独立)。PCA算法的具体操作为对所有的样本进行中心化操作,计算样本的协方差矩阵,然后对协方差矩阵做特征值分解,取最大的n个特征值对应的特征向量构造投影矩阵。

优点:

仅仅需要以方差衡量信息量,不受数据集以外的因素影响;

各主成分之间正交,可消除原始数据成分间的相互影响的因素;

计算方法简单,主要运算是特征值分解,易于实现。

缺点:

主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强;

方差小的非主成分也可能含有对样本差异的重要信息,因此降维丢弃可能对后续数据处理有影响。

介绍一下MCMC马尔可夫-蒙特卡洛抽样

讲到MCMC就要先从马尔可夫过程说起,对于一个平稳的马尔可夫链来说,在转移次数足够多时,其必然会收敛到一个平稳的过程,并且转移一次就是进行一次随机游走,随机游走一次传递到的值,可以看作是在一个分布上进行的一次随机抽样,这样一直随机游走下去,就可以看作一次次进行随机抽样,进而实现模拟随机抽样,而所谓蒙特卡洛,就是利用随机抽样来模拟计算问题,MCMC中正是借助马尔可夫链收敛到平稳过程的特性来实现随机抽样的。

你可能感兴趣的:(统计与机器学习,机器学习,数据挖掘,算法)