数据平滑
来源:互联网 发布:淘宝分类代码 编辑:程序博客网 时间:2024/06/02 21:03
使用Markdown发现博文发布之后,文章的排版都乱掉了╮(╯▽╰)╭,不知道怎么回事儿,还在纠结中,本来想着要不还是使用html编辑器好了,但是想到还有好多的数学公式要打,直接HTML出来的公式实在是丑爆了,但是这Markdown真的是还是有些bug吧,而且,一堆的数据公式真的是达到兔血了,呃,,,好了,开始来干活!
上一篇文章中,已经初步了解了N-gram模型,遗留下来的问题就是数据稀疏该怎么办,我们首先来想想这个问题,主要是由于数据稀疏造成的,那么很自然的增加语料库就可以较好的解决这个问题,但是大多数情况下,我们是没办法增加自己的语料库,只能通过算法来帮助我们达到目的。那么,不管是哪一种数据平滑的方法,整体的思想都是“劫富济贫”,为什么这么说呢?我们首先来看看一幅数据分布图(在宗成庆老师的自然语言处理这本书中有)。
其中Nr表示的是出现r次的单词的个数,可以看到出现一次的单词非常多,出现两次的单词次之,但是实际上,出现一次的单词不应该获取较大的概率。
数据平滑的方式:
1)+1法。
这种方法的思想相对来说就比较地朴素了,根据名字,就很直观,就是在每次
进行概率计算的时候,假如某个单词或者词组的频率是
2)减值法\折扣法(discounting)
这种方法整体的思想,就是把已知时间的概率拿出来一部分分配给未知概率事件。也就是说通过某种方法,使得已知事件的概率之和是小于1的,然后把缺省的那一部分拿出来分配给未知概率事件。
Good Turing估计(古德-图灵法)
感慨一句,话说这个命名的方法,真的是相当直白啊,没错,就是古德在其老师图灵的指导下提出的这个方法。整体的思想依然是基于“劫富济贫”的思想,也就是说把非0事件的概率按照公式消减出现的次数,然后把剩余的概率均匀分给0概率事件。
首先我们假设N是整个训练样本单词总数,
又因为:
所以,
这样,我们可以做出这样的调整,也就是说不直接使用r来计算,而是使用
那么,出现r次的单词的概率就是:
我们说,在进行任何的平滑操作之前,我们首先需要保证所有事件的概率之和是等于1的,但是显然我们进行调整之后应该就不是一了,因为:
于是,我们就可以直接把
虽然这个算法好像蛮简单的,但是当初看书的时候是一直不明白,一直无法理解,所以到最后,未出现的事情的概率到底是怎么计算的呢,我主要纠结的点就是,到底是用dr那个计算,还是说最后的
n1N 均分来估计未出现词的概率,现在自己重新写了一遍,恍然大悟,不能使用dr计算为0的事件,因为很显然的一个事情就是nr ,当n=0时,无意义啊!
这里需要注意的就是,正式因为
okay,正所谓,光说不练假把式,大家如果还是觉得不理解,可以看看,来源于宗成庆老师课件的例子
(老师课件写的好详细,之前自己看书都晕晕的,哈,所以说找到一个好的教程是多么重要啊!)
Back-Off 估计(Katz 后退法)
这种方法的思路跟古德图灵法很相似,整体思路也是消减分0概率事件,然后把多余的概率分配给非0事件,但不是均匀分布,而是按照低阶分配。
- 数据平滑
- 数据平滑化程序
- gnuplot 中的数据平滑
- 数据平滑方法
- 数据平滑算法
- 10.数据平滑处理
- 用log平滑数据波动
- Untiy中的数据平滑处理
- MATLAB中数据平滑处理
- 平滑
- 平滑
- 处理数据平滑的简单想法
- 笔记:数据平滑扩容和迁移
- mycat 分片数据平滑迁移实施过程
- 自然语言处理:盘点一下数据平滑算法
- 一种新型的数据平滑滤波算法
- 【数据挖掘】三次指数平滑法
- 卷积平滑数据原理(有边缘效应)
- Docker:带给现代开发人员的福利
- 为什么不应该买小房换大房?
- http的无状态无连接到底是什么含义
- 构建器模式
- 行编辑程序
- 数据平滑
- MyListView
- hibernate的ID生成策略
- Mybatis学习记录(二)--Mybatis开发DAO方式
- 汉诺塔
- Python实现三位数字的所有回文数
- MyBatis基础
- Eclipse集成Maven
- UGUI基础