【校招面经】机器学习与数据挖掘常见面试题整理 part4
2018年07月25日 12:43:21 稻蛙 阅读数:149
五十一、Hinge loss
Hinge loss 的叫法来源于其损失函数的图形,为一个折线,通用的函数表达式为:
L(mi)=max(0,1−mi(w))
表示如果被正确分类,损失是0,否则损失就是 1−mi(w) 。
在机器学习中,Hing 可以用来解 间距最大化 的问题,最有代表性的就是SVM 问题,最初的SVM 优化函数如下:argminw,ζ12||w||2+C∑iζist.∀yiwTxi≥1−ζiζi≥0
五十二、HMM中涉及的算法
1. 前向、后向算法解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型 2. 维特比算法解决的是给定 一个模型和某个特定的输出序列,求最可能产生这个输出的状态序列。如通过海藻变化(输出序列)来观测天气(状态序列)
3. Baum-Welch算法解决的是一个模型训练问题,即参数估计,是一种无监督的训练方法,主要通过EM迭代实现
*1 评估问题: 前向算法
*2 解码问题: Viterbi算法
*3 学习问题: Baum-Welch算法(向前向后算法)
*1 评估问题: 前向算法
*2 解码问题: Viterbi算法
*3 学习问题: Baum-Welch算法(向前向后算法)
A、B:前向、后向算法解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型。 C:Baum-Welch算法解决的是一个模型训练问题,即参数估计,是一种无监督的训练方法,主要通过EM迭代实现; D:维特比算法解决的是给定 一个模型和某个特定的输出序列,求最可能产生这个输出的状态序列。如通过海藻变化(输出序列)来观测天气(状态序列),是预测问题,通信中的解码问题。
前向、后向算法解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型。
Baum-Welch算法解决的是一个模型训练问题,即参数估计,是一种无监督的训练方法,主要通过EM迭代实现;
维特比算法解决的是给定 一个模型和某个特定的输出序列,求最可能产生这个输出的状态序列。如通过海藻变化(输出序列)来观测天气(状态序列),是预测问题,通信中的解码问题。
来源:https://www.nowcoder.com/questionTerminal/dc4e7ad7e9634b65b56f2541a580eba0
EM算法: 只有观测序列,无状态序列时来学习模型参数,即Baum-Welch算法
维特比算法: 用动态规划解决HMM的预测问题,不是参数估计
前向后向:用来算概率
极大似然估计:即观测序列和相应的状态序列都存在时的监督学习算法,用来估计参数v
自然语言处理技术离不开隐马尔可夫理论。书中几个例子搞得我头晕眼花了,仔细研究后把思路整理一下,画成简单的示意图,希望能帮助大家理解。
模型实例
假设 S 是天气状况的集合,分别是“晴天”、"多云"、“下雨”,
其初始概率分布为,
晴天 |
多云 |
下雨 |
0.63 |
0.17 |
0.20 |
其状态转移概率矩阵为:
- |
晴 |
阴 |
雨 |
晴 |
0.500 |
0.375 |
0.125 |
阴 |
0.250 |
0.125 |
0.625 |
雨 |
0.250 |
0.375 |
0.325 |
假设有一位盲人住在海边,他不能通过直接观察天气的状态来预报天气。但他有一些水藻,因此可以利用水藻的干湿来预报天气。水藻的干湿与天气状况之间的关系如下表:
- |
干燥 |
稍干 |
潮湿 |
湿透 |
晴 |
0.60 |
0.20 |
0.15 |
0.05 |
阴 |
0.25 |
0.25 |
0.25 |
0.25 |
雨 |
0.05 |
0.10 |
0.35 |
0.50 |
问题1:求解观察序列的概率
针对上述模型,我们求p(干燥,潮湿,湿透)。思路很简单:
- 确定隐状态的初始概率分布,这是已知的,参见下图第一列。
- 根据隐状态到观测结果“干燥”的发射概率(参见下图第一列到第二列的箭头标注),计算得到“干燥”这个观测结果时,三个隐状态的概率,参见下图第二列。
- 根据隐状态之间的转移概率,重新确定在观测到“干燥”结果后的第二天,隐状态的概率分布,参见下图第三列。图中,我只标注了“晴”的计算过程,其他两天气则省略没画,建议自己亲自计算一下,验证一下。
这个时候再往下计算,方法就和第一步一样了,不再罗嗦了。
问题2:由观察序列确定隐状态序列
我们观察到了“干燥、潮湿、湿透”,那么实际天气变化的序列应该是什么呢?会是凭直觉猜测的“晴、阴、雨”这个序列吗?
解决这个问题的关键是,如何计算p(晴阴雨|干燥 潮湿 湿透)?我画了一张图,只要把黑色路径上标注的初始概率、转移概率、发射概率连乘起来,就得到这条路经的概率。
ok,现在问题变成了如何从开始到结束找到一条概率最大的路径。问题转化成了路径最优化问题,可以用动态规划方法解决,我不想再啰嗦了,剩下的任务大家自行解决吧。
问题3:HMM参数估计
假设隐马尔可夫模型的观测序列是“干燥,潮湿,湿透,…”,那么,隐马尔可夫模型的参数A,B,π 如何设置,才能使这个观测序列出现的概率最大?这就是所谓的隐马尔可夫模型参数估计问题。
参照上图,从起点到终点共计27条路径,把这些路径的概率全部加起来,就是“干燥,潮湿,湿透”发生的概率。如果图中箭头随对应的概率全部为未知,可以想想,最终的结果就可以用这些参数表示。因此问题可描述为,这些参数取何值时,所求概率最大。
上图中的实例, 计算观察序列的概率应该不需要遍历27条路径,这样复杂度太高了。这个问题大家自行考虑吧。
转移概率矩阵和发射概率矩阵在多个环节重复出现,让我联想起卷积神经网络的卷积层设计,扯得有点远。但是,这个概率网络求解整体过程的确与神经网络类似。
一个不好的消息是,没办法用公式求解此最优化问题。一个稍好一点的消息是,可以用梯度下降法,求局部极小解,这简直是废话。还有一个稍好点的消息,Baum-Welch算法可以解决此问题,思路类似EM算法,思路也很简单,
Baum-Welch算法
比如,先假设状态序列为已知,参见下表。呵呵,和EM算法套路一样,如果不了解建议看看我写的《简析EM算法(最大期望算法)》。
t |
观察值 |
晴朗 |
多云 |
下雨 |
1 |
干燥 |
1 |
0 |
0 |
2 |
潮湿 |
0 |
1 |
0 |
3 |
湿透 |
1 |
0 |
0 |
4 |
潮湿 |
0 |
0 |
1 |
5 |
干燥 |
0 |
1 |
0 |
6 |
潮湿 |
1 |
0 |
0 |
7 |
湿透 |
0 |
0 |
1 |
… |
… |
… |
… |
… |
状态的出现次数为0或1,和EM算法是完全一样的套路。如果出现100次"晴朗"
,其中对应70次“干燥”,则可以估计“晴朗”向“干燥”发射概率为70/100=0.7,如此类推,可以求出模型中的所有概率值。
现在的问题是,状态出现的次数是不知道的。依据EM算法思路,可以随机给模型参数赋值(当然要保证数据的合理性)。比如,根据“晴朗”、“阴天”、“下雨”向“干燥”的发射概率,把状态出现次数1按比例分配给三个状态。这样就可以按照上面的方法重新计算模型的参数了。如此类推,直到模型参数收敛为止。
状态转移概率,也可以统计出来。比如从上表1、2两行可以得到“晴天”到“多云”转移累计计数1次。在EM算法中,这个计数可能变成了用小数表示的模糊计数,不过没关系,一样可以得到这个累计计数。
初始概率计算也是同样道理,用模糊计数方法可以帮助估计概率分布。
五十三、CRF与HMM和MEMM的比较
CRF 的优点:特征灵活,可以容纳较多的上下文信息,能够做到全局最优
CRF 的缺点:速度慢 CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME一样) ————与HMM比较 由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。 ————与MEMM比较 CRF是在给定需要标记的观察序列的条件下,使用维特比算法,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。————与ME比较
五十四、EM算法、HMM、CRF
(1)EM算法
EM算法是用于含有隐变量模型的极大似然估计或者极大后验估计,有两步组成:E步,求期望(expectation);M步,求极大(maxmization)。本质上EM算法还是一个迭代算法,通过不断用上一代参数对隐变量的估计来对当前变量进行计算,直到收敛。
注意:EM算法是对初值敏感的,而且EM是不断求解下界的极大化逼近求解对数似然函数的极大化的算法,也就是说EM算法不能保证找到全局最优值。对于EM的导出方法也应该掌握。
(2)HMM算法
隐马尔可夫模型是用于标注问题的生成模型。有几个参数(π,A,B):初始状态概率向量π,状态转移矩阵A,观测概率矩阵B。称为马尔科夫模型的三要素。
马尔科夫三个基本问题:
- 概率计算问题:给定模型和观测序列,计算模型下观测序列输出的概率。–》前向后向算法
- 学习问题:已知观测序列,估计模型参数,即用极大似然估计来估计参数。–》Baum-Welch(也就是EM算法)和极大似然估计。
- 预测问题:已知模型和观测序列,求解对应的状态序列。–》近似算法(贪心算法)和维比特算法(动态规划求最优路径)
(3)条件随机场CRF
给定一组输入随机变量的条件下另一组输出随机变量的条件概率分布密度。条件随机场假设输出变量构成马尔科夫随机场,而我们平时看到的大多是线性链条随机场,也就是由输入对输出进行预测的判别模型。求解方法为极大似然估计或正则化的极大似然估计。
之所以总把HMM和CRF进行比较,主要是因为CRF和HMM都利用了图的知识,但是CRF利用的是马尔科夫随机场(无向图),而HMM的基础是贝叶斯网络(有向图)。而且CRF也有:概率计算问题、学习问题和预测问题。大致计算方法和HMM类似,只不过不需要EM算法进行学习问题。
(4)HMM和CRF对比
其根本还是在于基本的理念不同,一个是生成模型,一个是判别模型,这也就导致了求解方式的不同。
五十五、CRF与HMM
CRF就像一个反向的隐马尔可夫模型(HMM),两者都是用了马尔科夫链作为隐含变量的概率转移模型,只不过HMM使用隐含变量生成可观测状态,其生成概率有标注集统计得到,是一个生成模型;而CRF反过来通过可观测状态判别隐含变量,其概率亦通过标注集统计得来,是一个判别模型。由于两者模型主干相同,其能够应用的领域往往是重叠的,但在命名实体、句法分析等领域CRF更胜一筹。当然你并不必须学习HMM才能读懂CRF,但通常来说如果做自然语言处理,这两个模型应该都有了解。
五十六、LR正则化与数据先验分布的关系
作者:Charles Xiao
链接:https://www.zhihu.com/question/23536142/answer/90135994
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
先抛给大家一个结论:从贝叶斯的角度来看,正则化等价于对模型参数引入 先验分布 。
一. Linear Regression
我们先看下最原始的Linear Regression:
由最大似然估计(MLE):
取对数:
即:
这就导出了我们原始的 least-squares 损失函数,但这是在我们对参数 w 没有加入任何先验分布的情况下。在数据维度很高的情况下,我们的模型参数很多,模型复杂度高,容易发生过拟合。
比如我们常说的 “small n, large p problem”。(我们一般用 n 表示数据点的个数,用 p 表示变量的个数 ,即数据维度。当
的时候,不做任何其他假设或者限制的话,学习问题基本上是没法进行的。因为如果用上所有变量的话, p 越大,通常会导致模型越复杂,但是反过来 n 又很小,于是就会出现很严重的 overfitting 问题。
这个时候,我们可以对参数 w 引入先验分布,降低模型复杂度。
二. Ridge Regression
我们对参数 w 引入协方差为
的零均值高斯先验。
取对数:
等价于:
这不就是 Ridge Regression 吗?
看我们得到的参数,在零附近是不是很密集,老实说 ridge regression 并不具有产生稀疏解的能力,也就是说参数并不会真出现很多零。假设我们的预测结果与两个特征相关,L2正则倾向于综合两者的影响,给影响大的特征赋予高的权重;而L1正则倾向于选择影响较大的参数,而舍弃掉影响较小的那个。实际应用中 L2正则表现往往会优于 L1正则,但 L1正则会大大降低我们的计算量。
Typically ridge or ?2 penalties are **much better** for minimizing prediction error rather than ?1 penalties. The reason for this is that when two predictors are highly correlated, ?1 regularizer will simply pick one of the two predictors. In contrast, the ?2 regularizer will keep both of them and jointly shrink the corresponding coefficients a little bit. Thus, while the ?1 penalty can certainly reduce overfitting, you may also experience a loss in predictive power.
那现在我们知道了,对参数引入 高斯先验 等价于L2正则化。
三. LASSO
上面我们对 w 引入了高斯分布,那么拉普拉斯分布(Laplace distribution)呢?
注:LASSO - least absolute shrinkage and selection operator.
我们看下拉普拉斯分布长啥样:
关于拉普拉斯和正态分布的渊源,大家可以参见 正态分布的前世今生。
重复之前的推导过程我们很容易得到:
该问题通常被称为 LASSO (least absolute shrinkage and selection operator) 。LASSO 仍然是一个 convex optimization 问题,不具有解析解。它的优良性质是能产生稀疏性,导致 w 中许多项变成零。
再次总结下,对参数引入 拉普拉斯先验 等价于 L1正则化。
四. Elastic Net
可能有同学会想,既然 L1和 L2正则各自都有自己的优势,那我们能不能将他们 combine 起来?
可以,事实上,大牛早就这么玩过了。
因为lasso在解决之前提到的“small n, large p problem”存在一定缺陷。
这个我们就直接给结果了,不推导了哈。(好麻烦的样子。。。逃)
五. 总结
正则化参数等价于对参数引入 先验分布,使得 模型复杂度 变小(缩小解空间),对于噪声以及 outliers 的鲁棒性增强(泛化能力)。整个最优化问题从贝叶斯观点来看是一种贝叶斯最大后验估计,其中 正则化项 对应后验估计中的 先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计的形式。
[1]: Bias 和 Variance
[2]: 《A Few useful things to Know About machine Learning》读后感
[3]: What is the difference between L1 and L2 regularization?
[4]: Bayesian Linear Regression
[5]: Bayesian statistics and regularization
[7]: Sparsity and Some Basics of L1 Regularization
五十七、拉普拉斯分布
from:https://blog.csdn.net/pipisorry/article/details/39076957
在概率论与统计学中,拉普拉斯分布是以皮埃尔-西蒙·拉普拉斯的名字命名的一种连续概率分布.由于它可以看作是两个不同位置的指数分布背靠背拼接在一起,所以它也叫作双指数分布.两个相互独立同概率分布指数随机变量之间的差别是按照指数分布的随机时间布朗运动,所以它遵循拉普拉斯分布.
如果随机变量的概率密度函数为
那么它就是拉普拉斯分布.记为:
其中,
是位置参数,
是尺度参数.
它的累积分布函数为:
逆分布函数为
数字特征:
,
五十八、异常值(outlier)的判别与剔除
在处理实验数据的时候,我们常常会遇到个别数据值偏离预期或大量统计数据值结果的情况,如果我们把这些数据值和正常数据值放在一起进行统计,可能会影响实验结果的正确性,如果把这些数据值简单地剔除,又可能忽略了重要的实验信息。这里重要的问题是如何判断异常值,然后将其剔除。判断和剔除异常值是数据处理中的一项重要任务,目前的一些方法还不是十分完善,有待进一步研究和探索。
异常值outlier:指样本中的个别值,其数值明显偏离它(或他们)所属样本的其余观测值,也称异常数据,离群值
目前人们对异常值的判别与剔除主要采用物理判别法和统计判别法两种方法。
所谓物理判别法就是根据人们对客观事物已有的认识,判别由于外界干扰、人为误差等原因造成实测数据值偏离正常结果,在实验过程中随时判断,随时剔除。
统计判别法是给定一个置信概率,并确定一个置信限,凡超过此限的误差,就认为它不属于随机误差范围,将其视为异常值剔除。当物理识别不易判断时,一般采用统计识别法。
对于多次重复测定的数据值,异常值常用的统计识别与剔除法有:
拉依达准则法(3δ):简单,无需查表。测量次数较多或要求不高时用。是最常用的异常值判定与剔除准则。但当测量次数《=10次时,该准则失效。
如果实验数据值的总体x是服从正态分布的,则
异常值(outlier)的判别与剔除(rejection)
式中,μ与σ分别表示正态总体的数学期望和标准差。此时,在实验数据值中出现大于μ+3σ或小于μ—3σ数据值的概率是很小的。因此,根据上式对于大于μ+3σ或小于μ—3σ的实验数据值作为异常值,予以剔除。具体计算方法参见http://202.121.199.249/foundrymate/lessons/data-analysis/13/131.htm
在这种情况下,异常值是指一组测定值中与平均值的偏差超过两倍标准差的测定值。与平均值的偏差超过三倍标准差的测定值,称为高度异常的异常值。在处理数据时,应剔除高度异常的异常值。异常值是否剔除,视具体情况而定。在统计检验时,指定为检出异常值的显著性水平α=0.05,称为检出水平;指定为检出高度异常的异常值的显著性水平α=0.01,称为舍弃水平,又称剔除水平(reject level)。
标准化数值(Z-score)可用来帮助识别异常值。Z分数标准化后的数据服从正态分布。因此,应用Z分数可识别异常值。我们建议将Z分数低于-3或高于3的数据看成是异常值。这些数据的准确性要复查,以决定它是否属于该数据集。
肖维勒准则法(Chauvenet):经典方法,改善了拉依达准则,过去应用较多,但它没有固定的概率意义,特别是当测量数据值n无穷大时失效。
狄克逊准则法(Dixon):对数据值中只存在一个异常值时,效果良好。担当异常值不止一个且出现在同侧时,检验效果不好。尤其同侧的异常值较接近时效果更差,易遭受到屏蔽效应。
罗马诺夫斯基(t检验)准则法:计算较为复杂。
格拉布斯准则法(Grubbs):和狄克逊法均给出了严格的结果,但存在狄克逊法同样的缺陷。朱宏等人采用数据值的中位数取代平均值,改进得到了更为稳健的处理方法。有效消除了同侧异常值的屏蔽效应。国际上常推荐采用格拉布斯准则法。
原文地址:https://www.cnblogs.com/yumoye/p/10354151.html