改进的迭代尺度法(IIS)详细解析 | 统计学习方法学习笔记 | 数据分析 | 机器学习

IIS是一种最大熵模型学习的最优化算法。最大熵模型:舟晓南:统计学习方法 - 最大熵模型解析 | 数据分析,机器学习,学习历程全记录

已知最大熵模型为:

《统计学习方法》中直接给出对数似然函数为:

现在解释如何得到上式的对数似然函数:

首先根据对数似然函数的一般形式给出:

在上式中,第二行的箭头成立,是因为指数v(x, y)表示x和y确定时的个数,N为总样本数,除以总样本数不改变w,因此成立。

因为

为常数,这对于我们求极大值没有用处,因此忽略,所以:

因为 

所以最终可以得到书中的对数似然函数:

现在求对数似然函数w的极大值,假设最大熵模型当前的参数向量是w,找到一个新的参数向量  ,使模型的对数似然函数值增大。如果能有这样一种参数向量更新的方法  ,那么就可以不停迭代,直至找到对数似然函数的最大值。

因为:

所以:

利用不等式  (不等式证明可参考:证明 logX < X 对所有 X > 0 成立)可得:

利用

于是:

又因为:

所以有


于是:

我们将等式右端记为: ,这是似然函数的下界,于是有: 。

如果我们能够找到适当的 使下界提高,那么似然函数也会随之提高。但 是一个向量,不易同时对每个方向都进行优化,于是固定其它方向,仅优化其中的一个方向,这时我们需要再一次更新下界,使得可以仅优化一个方向。

具体的,我们引入一个量:

表示所有特征在(x,y)中出现的次数。在书中对f#为常数或不为常数的情况做了讨论,不过对于f#什么时候为常数,网络上各有理解。我们首先回顾一下f(x,y)是什么:

首先这个函数f本身代表的是一个规则,即x与y满足某一事实,则为1,否则为0。括号内的x和y是输入值,即每一个数据点的数据,或者说是每一个实例的数据。

那么fi(x, y)中的下标i表示的是不同的规则,比如f1(x, y)在x=1, y=2的情况下为1,否则为0;f2(x, y)在x=2,y=2的情况下为1,否则为0。

对某一个实例而言,我们将其代入f1和f2中,判断这个实例的数据是否符合f1和f2的规则,如果仅符合f1而不符合f2,则f1=1,f2=0。

那么实际上是对一个特定的实例的数据进行i次不同规则的判断。

举一个例子,如果f1(x, y)为x1=1, y=0则为1,否则为0,f2(x, y)为x2=0,y=0为1,否则为0。那么对于某一个实例(x1=1, x2=0, y=0)来说,它既满足f1也满足f2,所以f1=1, f2=1,那么。

那么对于另一个实例(x1=1, x2=1, y=0),它满足f1但不满足f2,所以f1=1,f2=0,那么

这就是为什么在《统计学习方法》中提到f#(x, y)可能为常数,也可能不为常数。在常数的情况下,说明每一个实例的数据符合的规则的数量是一样的,比如有三个规则,实例1符合规则1和规则2,实例2符合规则2和规则3,实例3符合规则1和规则3,尽管它们符合的规则不同,但数量相同,三个实例的f#(x, y)都为2。

当然,f#(x, y)为常数的情况发生的概率很小,因此f#(x, y)在大部分情况下都不是常数。

为了更好的理解,我们再看下标i还出现在权值和权值的更新值上,这说明实际上每一个特征函数fi(x, y)都对应了一个权值wi,对于一个特定的实例来说,如果它符合f1(x, y)的规则,那么权值w1就会作用在这个实例上,也就是说在预测或者分类的时候,模型会考虑f1(x, y)所代表的特征,如果该实例不符合f2(x, y),那么w2就不会作用在这个实例上,毕竟f2(x, y)=0,这样模型在预测或分类时,就不会考虑f2(x, y)所代表的特征,毕竟这个实例都没有这个特征,又为什么要去考虑它呢?

回到IIS算法本身,定义了f#(x, y)后,可以将  改写为:

因为指数函数是凸函数,且对任意i,有

利用琴声不等式(琴声不等式的资料可自行查找)可得:

所以:

于是下界被再一次刷新,此时可以对向量  中的一个方向单独进行优化(求导)了。对其求偏导并令导数为0:

得到:

这样,就可以依次对每一个 求解,得到向量 并对w进行更新迭代了。



我是舟晓南,关注我的同名 公众号 和 知乎,发掘更多内容哦

对机器学习,深度学习,python感兴趣,欢迎关注专栏,学习笔记已原创70+篇,持续更新中~ ^_^

学习笔记:数据分析,机器学习,深度学习

关于 python 二三事

专栏文章举例:

【机器学习】关于逻辑斯蒂回归,看这一篇就够了!解答绝大部分关于逻辑斯蒂回归的常见问题,以及代码实现 - 知乎 (zhihu.com)

记录一下工作中用到的少有人知的pandas骚操作,提升工作效率 - 知乎 (zhihu.com)

关于切片时不考虑最后一个元素以及为什么从0开始计数的问题 - 知乎 (zhihu.com)

关于转行:

舟晓南:如何转行和学习数据分析 | 工科生三个月成功转行数据分析心得浅谈

舟晓南:求职数据分析师岗位,简历应该如何写?|工科生三个月成功转行数据分析心得浅谈

我建了个数据分析,机器学习,深度学习的群~ 需要学习资料,想要加入社群均可私信~

在群里我会不定期分享各种数据分析相关资源,技能学习技巧和经验等等~

详情私信,一起进步吧!

你可能感兴趣的:(改进的迭代尺度法(IIS)详细解析 | 统计学习方法学习笔记 | 数据分析 | 机器学习)