Algorithms

測量二維二進制矩陣的熵/信息/模式

  • October 17, 2011

我想測量二維二進制矩陣的熵/信息密度/模式相似度。讓我展示一些圖片以進行澄清:

這個顯示應該有一個相當高的熵:

一個)

在此處輸入圖像描述

這應該具有中等熵:

二)

在此處輸入圖像描述

最後,這些圖片應該都具有接近零的熵:

C)

在此處輸入圖像描述

D)

在此處輸入圖像描述

E)

在此處輸入圖像描述

是否有一些索引可以捕獲熵,resp。這些顯示器的“圖案相似性”?

當然,每種算法(例如,壓縮算法;或ttnphns 提出的旋轉算法)都對顯示器的其他特徵敏感。我正在尋找一種嘗試捕獲以下屬性的算法:

  • 旋轉和軸對稱
  • 聚類數量
  • 重複

也許更複雜的是,該算法可能對心理“格式塔原理”的屬性敏感,特別是:

  • 鄰近法則:鄰近法則
  • 對稱定律:即使距離很遠,對稱圖像也會被集體感知:對稱

具有這些屬性的顯示器應該被分配一個“低熵值”;具有相當隨機/非結構化點的顯示應該被分配一個“高熵值”。

我知道很可能沒有一種算法可以捕獲所有這些特徵。因此,對於僅針對某些甚至僅針對單個功能的算法的建議也非常受歡迎。

特別是,我正在尋找具體的、現有的算法具體的、可實施的想法(我將根據這些標準獎勵賞金)。

**有一個簡單的程序可以捕捉所有直覺,**包括心理和幾何元素。它依賴於使用空間接近度,這是我們感知的基礎,並提供了一種內在的方式來捕捉僅通過對稱性不完全測量的內容。

為此,我們需要在不同的局部尺度上測量這些陣列的“複雜性”。儘管我們有很大的靈活性來選擇這些尺度並選擇我們測量“接近度”的意義,但使用小正方形鄰域並查看其中的平均值(或等效地,總和)足夠簡單和有效。為此,可以從任何 m 經過 n 通過使用移動鄰域和形成數組 k=2 經過 2 小區,那麼 3 經過 3 等,直到 min(n,m) 經過 min(n,m) (儘管到那時通常值太少而無法提供任何可靠的東西)。

要了解它是如何工作的,讓我們對問題中的數組進行計算,我將其稱為 a1 通過 a5 , 從上到下。這是移動總和的圖 k=1,2,3,4 ( k=1 是原始數組,當然)適用於 a1 .

圖1

從左上角順時針, k 等於 1 , 2 , 4 , 和 3 . 數組是 5 經過 5 , 然後 4 經過 4 , 2 經過 2 , 和 3 經過 3 , 分別。它們看起來都有點“隨機”。讓我們用它們的 base-2 熵來衡量這種隨機性。當一個數組 a 包含各種不同的具有比例的值 p1, p2, 等等,它的熵(根據定義)是

H(a)=p1log2(p1)p2log2(p2)

例如,數組 a1 有 10 個黑細胞和 15 個白細胞,它們的比例是 10/2515/25, 分別。因此它的熵是H(a1)=(10/25)log2(10/25)(15/25)log2(15/25)0.970951.

為了 a1 ,這些熵的序列為 k=1,2,3,4(0.97,0.99,0.92,1.5) . 讓我們稱之為“個人資料” a1 .

相比之下,這裡是移動總和 a4

圖 2

為了 k=2,3,4 幾乎沒有變化,因此熵低。簡介是 (1.00,0,0.99,0) . 它的值始終接近或低於 a1 ,證實了直覺上存在強烈的“模式” a4 .

我們需要一個參考框架來解釋這些配置文件。一個完全隨機的二進制值數組將有大約一半的值等於 0 另一半等於 1 , 熵接近 1 . 內的移動總和 k 經過 k 鄰域將傾向於具有二項式分佈,從而為它們提供可預測的熵(至少對於大型陣列),可以近似為 1+log2(k)

熵圖

這些結果通過對陣列的模擬得到證實 m=n=100 . 但是,對於小型陣列(例如 5 經過 5 這裡的數組)由於相鄰窗口之間的相關性(一旦窗口大小大約是數組維度的一半)和由於少量數據。這是隨機的參考配置文件 5 經過 5 模擬生成的數組以及一些實際剖面圖:

剖面圖

在此圖中,參考輪廓為純藍色。陣列配置文件對應於 a1 : 紅色的, a2 : 金子, a3 : 綠色, a4 : 淺藍。(包括 a5 會遮擋圖片,因為它靠近 a4 .) 總體而言,配置文件對應於問題中的順序:它們在大多數值下變得更低 k 隨著表觀排序的增加。例外是 a1 : 直到最後,因為 k=4 ,它的移動總和往往具有最低的熵。這揭示了一個驚人的規律:每個 2 經過 2 鄰里 a1 正好有 1 或者 2 黑色方塊,從來沒有更多或更少。它遠沒有人們想像的那麼“隨機”。(這部分是由於在對每個鄰域的值求和時丟失了信息,這是一個濃縮的過程 2k2 可能的鄰域配置為 k2+1 不同的可能金額。如果我們想專門考慮每個鄰域內的聚類和方向,那麼我們將使用移動連接,而不是使用移動總和。也就是說,每個 k 經過 k 鄰里有 2k2 可能的不同配置;通過區分它們,我們可以獲得更精細的熵度量。我懷疑這樣的措施會提升 a1 與其他圖像相比。)

這種通過對移動鄰域內的值求和(或連接或以其他方式組合)來在受控範圍內創建熵分佈的技術已用於圖像分析。它是眾所周知的思想的二維推廣,首先將文本分析為一系列字母,然後作為一系列二合字母(兩個字母序列),然後是三合字母等。它也與分形有一些明顯的關係分析(以越來越精細的尺度探索圖像的屬性)。如果我們小心使用塊移動和或塊連接(因此窗口之間沒有重疊),我們可以推導出連續熵之間的簡單數學關係;然而,

各種擴展都是可能的。例如,對於旋轉不變的輪廓,使用圓形鄰域而不是方形鄰域。當然,一切都超越了二進制數組。使用足夠大的陣列,甚至可以計算局部變化的熵分佈來檢測非平穩性。

如果需要單個數字而不是整個配置文件,請選擇感興趣的空間隨機性(或缺乏隨機性)的比例。在這些示例中,該比例最適合於 3 經過 3 或者 4 經過 4 移動鄰域,因為它們的模式都依賴於跨越三到五個單元的分組(以及 5 經過 5 鄰域只是平均了數組中的所有變化,所以沒用)。在後一個尺度上,熵 a1 通過 a51.50 , 0.81 , 0 , 0 , 和 0 ; 這種規模的預期熵(對於均勻隨機陣列)是 1.34 . 這證明了這樣一種感覺 a1 “應該有相當高的熵。” 區分 a3 , a4 , 和 a5 , 與 0 這個尺度的熵,看看下一個更精細的分辨率( 3 經過 3 鄰域):它們的熵是 1.39 , 0.99 , 0.92 ,分別(而隨機網格的預期值為 1.77 )。通過這些措施,原始問題將數組完全按照正確的順序排列。

引用自:https://stats.stackexchange.com/questions/17109