我想计算这个示例方案的熵
http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html
任何人都可以用真实的价值观逐步解释吗?我知道有很多公式,但我真的很难理解公式:)
例如,在给定的图像中,如何计算纯度显然并得到很好的解释
问题非常明确。我需要一个例子来计算这个聚类方案的熵。它可以是一步一步的解释。它可以是C#代码或Phyton代码来计算这样的方案
这里的熵公式
我将用C#
编写代码非常感谢您的帮助
我需要在这里给出答案:https://stats.stackexchange.com/questions/95731/how-to-calculate-purity
答案 0 :(得分:10)
NLP书的这一部分有点令人困惑,我承认,因为他们没有完全计算集群熵的外部测量,而是专注于计算单个集群熵计算。相反,我将尝试使用更直观的变量集,并包括计算总熵的外部度量的完整方法。
其中:
是群集
H(w)是单簇熵
N_w 是群组 w
中的点数N 是总分数。
其中: c 是所有分类 C 集合中的分类
P(w_c)是数据点在 w 中被归类为 c 的概率。
为了使这个可用,我们可以用这个概率的MLE(maximum likelihood estimate)代替概率来得到:
其中:
| w_c | 是群组 w
中分类为 c 的点数n_w 是群组中的点数 w
因此,在给出的示例中,您有3个聚类(w_1,w_2,w_3),我们将分别计算每个聚类的熵,对于3个分类(x,圆形,菱形)中的每一个。
H(w_1)=(5/6)log_2(5/6)+(1/6)log_2(1/6)+(0/6)log_2(0/6)= -.650
H(w_2)=(1/6)log_2(1/6)+(4/6)log_2(4/6)+(1/6)log_2(1/6)= -1.252
H(w_3)=(2/5)log_2(2/5)+(0/5)log_2(0/5)+(3/5)log_2(3/5)= -.971
然后,要找到一组聚类的总熵,您可以将熵的总和乘以每个聚类的相对权重。
H(Omega)=( - 6.5 * 6/17)+( - 1.252 * 6/17)+( - 。971 * 5/17)
H(Omega)= - .956
我希望这有帮助,请随时验证并提供反馈。
答案 1 :(得分:2)
计算很简单。
概率为NumberOfMatches/NumberOfCandidates
。
你应用base2对数并取总和。
通常,您将按照相对大小对群集进行加权。
唯一需要注意的是p = 0时。那么对数是不确定的。但我们可以安全地使用p log p = 0
if p = 0
,因为p
在对数之外。
因为log 1 = 0
最小熵为0.完美结果必须对熵0进行评分,否则您就会出错。