机器学习和NLP面试总结

BAT机器学习面试1000题系列(第1~305题):https://blog.csdn.net/v_JULY_v/article/details/78121924

最大似然和贝叶斯分类的区别(回答:先验的有无),分别适用于什么场景:贝叶斯适用于小数据集,因为先验好求 

先验概率:事情没有发生之前事发生的概率,也叫经验概率。    后验概率:车祸已经发生了,酒驾的概率。

区别:最大似然估计属于概率派,假定参数固定,我们利用已知的数据来估计出参数。

             而贝叶斯则认为参数不固定,同时符合一定的概率分布,而这个参数分布p(θ)需要人工设置。

所以,其两者的区别在于最大似然估计未考虑先验概率,而贝叶斯则考虑先验来设置p(θ),而两者适用范围也变成了:极大似然估计适用于数据大量,估计的参数能够较好的反映实际情况;而贝叶斯估计则在数据量较少或者比较稀疏的情况下,考虑先验来提升准确率。

参考:https://blog.csdn.net/liu1194397014/article/details/52766760

判别式算法和生成式算法各有哪些,区别是什么,分别适用于什么场景?

【判别模型Discriminative Model】

判别模型:也叫条件概率模型,估计的是条件概率分布,利用正负类样本和标签对数据进行分类。

主要特点:   寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。 

 优点:  分类边界更灵活,比使用纯概率方法或生产模型得到的更高级。     能清晰的分辨出多类或某一类与其他类之间的差异特征。在聚类、viewpoint changes, partial occlusion and scale variations中的效果较好 。
    适用于较多类别的识别 。    判别模型的性能比生成模型要简单,比较容易学习 

缺点:只能判别分类数据的类别,无法拟合出数据本身所在的整个场景的特性。

            常见的判别模型:k近邻法、感知机、决策树、逻辑斯谛回归模型、最大熵模型、支持向量机、提升方法、条件随机场

【生成模型Generative Model】

又叫产生式模型。估计的是联合概率分布

主要特点:一般主要是对后验概率建模,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。 

优点:  实际上带的信息要比判别模型丰富,  研究单类问题比判别模型灵活性强 、模型可以通过增量学习得到 
    能用于数据不完整(missing data)情况 。

缺点: 学习和计算过程比较复杂 

常见的生成算法: 朴素贝叶斯方法、隐马尔可夫模型

【两者之间的关系】 由生成模型可以得到判别模型,但由判别模型得不到生成模型。 

参考:https://blog.csdn.net/chl033/article/details/5496542

最大熵模型理解?

最大熵原理:要求在概率分布中,将使得熵最大的概率分布作为最好的选择。所谓熵,可以理解为系统的不确定程度。熵越大,系统的不确定程度就越高。比如在掷骰子游戏中,在条件未知的情况下,因为无法知道具体是哪一面,其不确定程度程度最高,即熵最大;当加入可能是两点或四点条件后,其不确定性就降低了,因为只有两个选择可以选,这时的熵也就变小了。

使用HMM实现基于拼音的纠错?

语音识别返回的结果之所以与歌词库不匹配在于其上下文环境不符合歌词环境,但大部分文字是同音的,因此使用第三方java开源包将识别结果先转换为拼音形式,在使用HMM模型对拼音重新组合,从而得到符合歌词环境的字符串。

而在HMM模型中,几个比较重要的概念就是隐藏状态和可观测状态,以及隐藏状态到可观测状态的发射概率、隐藏状态间的转移概率。在这里,可观测状态明显就是拼音形式,而隐藏状态则是它背后的汉字形式,而在歌词环境中,汉字之间是有上下文联系的,也就是说汉字之间在歌词这个语料库中有其独特的转移概率,而每个汉字到其所有的发音都有一个发射概率,且和为1。但是在这里,由于使用的java包可以简单的认为每个字都是单音的,因此,对于每个字而言,它们都只有一个发音,而发射概率为1。

所以现在主要需要做的就是训练HMM模型,即计算字间的转移概率。

 

腾讯面试题——英文单词间的最短转换路径

1.问题描述

Question.现在有一本英文单词词典,里面大概放了2万个英文单词,这些单词全部由26个字母组成,现在提供一个基本操作,它可以是:

1) 增加一个字母:ear-->bear
2) 删除一个字母:down-->own
3) 修改一个字母:apple-->apply
三种中的任何一种。
下面,我随便从2万个单词中拿两个单词出来,请告诉我该如何通过最少次数的基本操作从第一个词变成第二个词,并且,每次基本操作后得到的新单词需要存在于词典中,即必须每步都是合法词汇,如果无法转换过去也需要告诉我,请帮我设计一个方案。(例如:age->bage->bag->big->pig,每一个单词都存在于词典中)

2.思路:

1.很多做文本的人可能会想到字典树,但是那个只能解决单词匹配问题,而这个问题属于类似社交网络的问题,因此不要绕进去那个思维里。

2.使用无向图结构来保存所有的单词,结合Levenshtein距离(最小编辑距离)来表征单词之间的可转换关系,关于Levenshtein距离的算法和思路,我会在另外一篇文章中介绍,这里简单来说就是一个字符串通过上述3种简单变换后得到另外一个字符串过程中经历的变换次数。

3.采取动态规划的方式去寻找图中两节点间的最短距离,但是这个情景中,节点若相邻则是双向的,并且只要相连那么距离都为1,因此可以直接选择BFS,即图的广度优先遍历来寻找一个节点到另外一个节点的最短路径。

机器学习中常用的距离。参考:https://my.oschina.net/hunglish/blog/787596

1. 欧氏距离(Euclidean Distance)

欧氏距离是最容易直观理解的距离度量方法,我们小学、初中和高中接触到的两个点在空间中的距离一般都是指欧氏距离。

2. 曼哈顿距离(Manhattan Distance)

顾名思义,在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点间的直线距离。这个实际驾驶距离就是“曼哈顿距离”。曼哈顿距离也称为“城市街区距离”(City Block distance)。

3. 切比雪夫距离 (Chebyshev Distance)

国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。国王从格子(x1,y1)走到格子(x2,y2)最少需要多少步?这个距离就叫切比雪夫距离。

4. 余弦距离(Cosine Distance)

几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。

5. 汉明距离(Hamming Distance)

汉明距离

  • 定义:两个等长字符串s1与s2的汉明距离为:将其中一个变为另外一个所需要作的最小字符替换次数。例如:

      The Hamming distance between "1011101" and "1001001" is 2. 
      The Hamming distance between "2143896" and "2233796" is 3. 
      The Hamming distance between "toned" and "roses" is 3.
    
  • 汉明重量:是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。因此,如果向量空间中的元素a和b之间的汉明距离等于它们汉明重量的差a-b。

  • 应用:汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。比如在信息编码过程中,为了增强容错性,应使得编码间的最小汉明距离尽可能大。但是,如果要比较两个不同长度的字符串,不仅要进行替换,而且要进行插入与删除的运算,在这种场合下,通常使用更加复杂的编辑距离等算法。

. 6. 信息熵(Information Entropy)

 以上的距离度量方法度量的皆为两个样本(向量)之间的距离,而信息熵描述的是整个系统内部样本之间的一个距离,或者称之为系统内样本分布的集中程度(一致程度)、分散程度、混乱程度(不一致程度)。系统内样本分布越分散(或者说分布越平均),信息熵就越大。分布越有序(或者说分布越集中),信息熵就越小。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值