最大熵模型中特征函数f(x,y)的期望怎样计算

其实题主的这个思路在初学的时候,我也出现过。不过想通了为什么要整一个特征函数之后,就可以回答这个问题了。

特征函数的出现,在我的理解中是为了得到更好的泛化能力。类比决策树对于输入x的处理,假设输入x是一个有着多个属性值的实例,决策树在一个决策点并不是对所有属性都进行考虑的。这就有点像提取出了特征中更有信息量的属性。
那么如何让一个线性模型(例如logistic regression: 最大熵模型中特征函数f(x,y)的期望怎样计算
)也有类似的功能?答案就是特征函数,让输入x先经过一系列特征函数的处理,变成 最大熵模型中特征函数f(x,y)的期望怎样计算
再送给模型分类(如 最大熵模型中特征函数f(x,y)的期望怎样计算
)。

此外,当输入的样本可能不是数值的向量,比如文本或图片时,特征函数的功能更像是特征向量的制作。对于给定的输入 最大熵模型中特征函数f(x,y)的期望怎样计算
,使用一系列定义好的特征函数 最大熵模型中特征函数f(x,y)的期望怎样计算
将其转换成需要的向量形式。这个向量的维度可能很大(特征函数很多,但大多都是离散的,且一个样本激活的特征函数有限),但大多数都是0,少部分是1或任意实数,这个就看如何定义了。

所以现在的问题就是如何定义这些特征函数了。假设现在定义的特征函数就是: 最大熵模型中特征函数f(x,y)的期望怎样计算


也即(x,y)同现时特征函数取1,其他情况为0。这时,题主的想法就完全可以顺利推导出来。也即 最大熵模型中特征函数f(x,y)的期望怎样计算
。

但是,但是,特征函数可以是任意定义的实值函数!也就是说,特征函数的定义也完全可以是:
【最大熵模型中特征函数f(x,y)的期望怎样计算】 最大熵模型中特征函数f(x,y)的期望怎样计算

那么显然这是题主的想法就是不成立的了。换了思路,我定义的特征函数变成了: 最大熵模型中特征函数f(x,y)的期望怎样计算

特征函数只管y不管x了,同样题主的想法也不成立了。

■网友
谢邀。题主写法错误,满足f(x, y)=1的(x, y)并非只有一个,故需对应的概率累加。可参考关于最大熵模型的严重困惑:为什么没有解析解? - KevinXU 的回答 -
■网友
我曾经写过一篇博客应该能解答你的问题
https://blog.csdn.net/qq_37667364/article/details/85218887

■网友
主要是“f(x,y)在x,y某一条件成立的时候取1,其它情况都取0”,这个不一定要这样呀,那只是个样板~不满足这个条件的时候你取0.1也可以呀,得看特征的性质以及问题的具体情况
■网友
你理解的计算方法是对的,我看过一个用GIS求解最大熵的java代码,也确实是这么计算的。即,特征函数在样本中的期望值是对应特征在样本中出现的频率。至于为什么不直接定义E(f)=P(x,y),我理解在定义中放入f(x,y)是为了之后最大熵模型的推导。代码地址:https://github.com/hankcs/MaxEnt


推荐阅读