1
有沒有一種方法可以評估entropy的離散值流,類似於SumamryStatistics的平均值和偏差? 我需要這種算法用於實時solr組件,它可能會迭代大型文檔集合(100,000)。在線熵評估算法
相關的問題,什麼是最好的方法來計算熵減少像環境。
有沒有一種方法可以評估entropy的離散值流,類似於SumamryStatistics的平均值和偏差? 我需要這種算法用於實時solr組件,它可能會迭代大型文檔集合(100,000)。在線熵評估算法
相關的問題,什麼是最好的方法來計算熵減少像環境。
可能有一種方法 - 它在某種程度上取決於流的特徵以及您想要對結果執行的操作。
樣本熵是樣本概率分佈的函數。您可以將每個值的運行計數與運行總計數一起存儲,這意味着可以根據需要計算分配。請原諒我的拙劣的Java,自從我寫這篇文章以來已經過去了大約一年。
Map<K,Integer> runningCount = new Map<K,Integer>();
int totalCount = 0;
public void addValue(K k) {
runningCount.insert(k, runningCount.get(k) + 1);
totalCount += 1;
}
public Map<K,Double> getDistribution() {
Map<K,Double> dist = new Map<K,Double>();
for (K k : runningCount.keys()) {
dist.insert(k, runningCount.get(k)/totalCount);
}
return dist;
}
這意味着,你也可以計算需求熵:
public double getEntropy() {
Map<K,Double> dist = getDistribution();
double entropy = 0;
for (K k : dist.keys()) {
double p = dist.get(k);
entropy -= p * Math.log(p);
}
return entropy;
}
該算法是O(ñ)來計算二者的分佈和熵,其中ñ是您的流可能會採用的值的數量。它與流中值的數量無關,正如您從addValue
方法不存儲流值的事實可以看到的那樣。
是的,你是對的,解決方案很簡單,我們可能可以將地圖切換到數組來提高性能。這對連續變量不起作用,但我不需要這個。謝謝。 – yura 2012-08-14 06:51:35