盘点一下数据平滑算法

摘要:
因此,为了防止训练样本中没有出现的新序列的概率估计值为零,人们发明了许多算法来改进新序列出现概率的估计,即数据平滑算法。Good Turning方法认为这是一个主要缺陷,需要改进。它不能很好地近似。一个好的估计应该确保不能实现高阶模型和低阶模型的组合。优点:后退平滑是其他平滑技术的基础。它被应用于大数据情况下的语言模型。线性插值平滑。参数平滑技术的基本思想是使用低元素n-gram模型对高元素n-gram模式进行线性插值。

本文参考来自于:http://blog.csdn.net/wwjiang_ustc/article/details/50732211

  在自然语言处理中,经常要计算单词序列(句子)出现的概率估计。我们知道,算法在训练时,语料库不可能包含所有可能出现的序列。

    因此,为了防止对训练样本中未出现的新序列概率估计值为零,人们发明了好多改善估计新序列出现概率的算法,即数据平滑算法。

Laplace 法则(Add-one)

  最简单的算法是Laplace法则,思路很简单,统计测试数据集中的元素在训练数据集中出现的次数时,计数器的初始值不要设成零,而是设成1。这样,即使该元素没有在训练集中出现,其出现次数统计值至少也是1。因此,其出现的概率估计值就不会是零了。

  假设测试集 V 中某个元素在训练集 T 中出现 r 次,经过Laplace法则调整后的统计次数为:

                        r=r+1

  当然这样做,纯粹是为了不出现零概率,并没有解决对未见过的实例进行有效预测的问题。因此,Laplace法则仅仅是一种非常初级的技术,有点太小儿科了。

Add-delta 平滑

  Lidstone ’ s  不是加 1, 而是加一个小于 1 的正数,通常 = 0.5 ,此时又称为 Jeffreys-Perks Law 或 ELE  效果比 Add-one 好,但是仍然不理想 。

Good-Turing 估计

  Laplace方法一个很明显的问题是 rr Good-Turning 方法认为这是一个重大缺陷,需要给予改进。其实我觉得这真不算重要,只要能合理估计未见过的新实例的概率,总的统计次数发生变化又怎样呢? 
   
  Good-Turing 修正后的计算公式还真的很巧妙,它在Laplace法则后面乘了一个修正系数,就可以保证总次数不变。这个拿出来炫一炫还是没问题的: 
   

                          盘点一下数据平滑算法第1张

  其中,盘点一下数据平滑算法第2张表示测试集 V 中,一共有盘点一下数据平滑算法第3张个元素在训练集 T 中出现过 盘点一下数据平滑算法第4张次。

  虽然我觉得这个方法没啥用,但是它的确保证了测试集中元素在训练集中出现的总次数不变。即: 

                       盘点一下数据平滑算法第5张
                      盘点一下数据平滑算法第6张
                      盘点一下数据平滑算法第7张

                        盘点一下数据平滑算法第8张

  Good-Turing 估计适合单词量大并具有大量的观察数据的情况下使用,在观察数据不足的情况下,本身出现次数就是不可靠的,利用它来估计出现次数就更不可靠了。

  缺乏利用低元模型对高元模型进行线性插值的思想

  显然,N1=N2。或许这个方法解决不了自然语言处理问题,而且 nr=0 时公式也会失效,但其思路应该还是很有价值的,或许解决其他问题能用得上。

  缺点:(1) 无法保证概率估计的“有序性”,即出现次数多的事件的概率大于出现次数少的事件的概率。

     (2) 盘点一下数据平滑算法第9张不能很好地近似,好的估计应当保证盘点一下数据平滑算法第10张

    (3) 不能实现高阶模型和低阶模型的结合 
  优点:是其它平滑技术的基础 

Backing-off 平滑

 应用于大数据情况下的语言模型 

盘点一下数据平滑算法第11张

线性插值平滑

该参数平滑技术的基本思想是利用低元 n-gram  模型对高元 n-gram  模型进行线性插值。

用降元的方法来弥补高元的数据稀疏问题,数据估计有一定的可靠性。但是参数估计较困难。

盘点一下数据平滑算法第12张

绝对折扣和线性折扣

  估计发明的作者受到 Good-Turing 的刺激了,认为这个方法就是“劫富济贫”,把数量较大的统计次数拿出一部分均给了较小的统计次数,减少贫富差距。只不过这个方法用了一个很有技巧的公式掩盖的其本质。 
   
  与其羞羞答答“劫富济贫”,不如来个赤裸裸的方法,于是乎就出现了绝对折扣和线性折扣方法。 
   
  问题是,“劫富济贫”并不是我们的目的,我们需要的是能够对语料库中从未出现过的句子做出概率判断。要得到正确的判断,需要“劫”多少?“济”多少?这个问题绝对折扣和线性折扣都回答不了。所以,无论Good-Turing方法,还是这两种折扣方法,本质上都没跳出 Laplace 法则的思路。 

Witten-Bell算法

  Witten-Bell算法终于从 Laplace 算法跳了出来,有了质的突破。这个方法的基本思想是:如果测试过程中一个实例在训练语料库中未出现过,那么他就是一个新事物,也就是说,他是第一次出现。那么可以用在语料库中看到新实例(即第一次出现的实例)的概率来代替未出现实例的概率。 
   
  假设词汇在语料库出现的次数参见下表:


            盘点一下数据平滑算法第13张

               盘点一下数据平滑算法第14张

  那么,我们可以用       盘点一下数据平滑算法第15张近似表示在语料库看到新词汇的概率。

  我不能说这个方法有多少道理,但与那些“劫富济贫”的方法相比,它至少提供了一个说得过去的理由。 

免责声明:文章转载自《盘点一下数据平滑算法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇OpenLayers 3 入门教程Vue2、websocket 与node.js接口 本地测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

可视化机器学习工具软件的比较分析研究

可视化机器学习工具软件的比较分析研究 Ø 摘要 近年来,随着人脸识别、语音识别等技术的突破性进展,隐藏在它们背后的底层技术也引起工程和研究人员的高度重视,譬如机器学习。然而,机器学习是一个入门门槛相对比较高的技术领域,大部分的工程技术人员和业务人员都聚焦在业务领域的特征提取,算法选择,参数调优和模型验证上,因此一个方便高效的可视化工具,对于降低用户的机器...

千人千面、个性化推荐,解读数据赋能商家背后的AI技术

12月6~7日,由阿里巴巴集团、阿里巴巴技术发展部、阿里云云栖社区联合主办,以“2016 双 11 技术创新”为主题的阿里巴巴技术论坛,来自商家事业部的技术总监魏虎给大家分享了数据赋能商家背后的AI技术。首先对大数据和人工智能进行了简要介绍,接着着重分析了客户运营平台,包括实时分群算法、match和rank框架以及千人千面技术,最后讲解了千牛头条、服务市场...

GWAS: 阿尔兹海默症和代谢指标在大规模全基因组数据的遗传共享研究

今天要讲的一篇是发表于 Hum Genet 的 "Shared genetic architecture between metabolic traits and Alzheimer's disease: a large-scale genome-wide cross-trait analysis" 。很中规中矩的一篇文章,没有什么大的亮点的。写它的主要原...

使用python操作mysql数据库

一、pymysql的使用 1.首先在python中安装pymysql模块(CMD窗口命令下)。 pip install pymsql 安装完成后导入import pymysql 2.pyysql 连接数据库的必要参数: 主机、端口、用户名。密码、数据库 注意:pymysql不能提供创建数据库的服务,数据库要提前创建 3.连接步骤: ​ -1. 建立数据库连...

Raft和PBFT算法对比

转载原址:https://zhuanlan.zhihu.com/p/35847127 导语:区块链技术中,共识算法是其中核心的一个组成部分,本文将详细阐述私链的raft算法和联盟链的pbft算法,从算法的基本流程切入,分析两者的区别。 区块链技术中,共识算法是其中核心的一个组成部分。首先我们来思考一个问题:什么是共识?对于现实世界,共识就是一群人对一件或者...

递归获取树形结构数据某个节点下的所有子节点数据

/// <summary> /// 获取组织结构树 /// </summary> /// <param name="list"></param> /// <param name="id"></param>...