Processing math: 100%
跳到主要內容

Binary Representation & Merge Encoding



本文介紹筆者自己定義的名詞 : Merge Encoding ,或許有別的學術名詞 !! 數學概念簡單易懂,用途方便理解集合論,機率論,壓縮紀錄大量的元素等等 :)

在數學上,我們習慣會用  \{0,1\} = \{ False , True \},而且日常生活經驗常構造出高維度子集合

s \in  S \subseteq  \{0,1\}^{n}
====================================================
例如 : n = 3  長相大概像這樣 s \equiv (s_1,s_2,s_3) \in S = \{(0,0,1), (1,0,1),.....\} \subseteq \{0,1\}^3
====================================================
很明顯 |S| \leq 2^{n},而且 \bigwedge_{s \in S}\bigg(\sum_{k=1}^{n} s_k \in [0,n]_{\mathbb{Z}} \bigg)

可以把 n 想成物件的集合個數 |K|K 為物件集,則 S 相當於選取哪些物件可能的組合,類似背包問題(knapsack problem)的概念。
=====================================================
例如: (0,1,1) 代表選第2個與第3個物件
=====================================================
今想要表達一個物件 k \in K 在集合S是可有可無的概念,也就是  (s_{k},s_{-k}) , (\bar{s_k},s_{-k})  \in  S
其中
\bar{s_k} =  \left\{ \begin{array}{ccc} 1 & \text{if }  & s_k = 0 \\  0 & \text{if } & s_k =1 \\  \end{array} \right.  \quad , \quad  s_{-k} \equiv \underbrace{(s_{k'})_{k' \in K-\{k\}}}_{\text{向量}}


於是可以使用新的數字 2 來表達此概念 :)   2 \equiv \{0,1\}

定義 MergeEncoding ,  (s_{k},s_{-k}) \text{ or } (\bar{s_{k}},s_{-k}) \equiv (2,s_{-k})
====================================================
例如 :  S = \{ (0,1,\color{red}{1}), (0,1,\color{red}{0})\} \equiv \{ (0,1,\color{red}{\{0,1\}})\} \equiv \{ (0,1,{\color{red}2}) \}
====================================================
所以任何 S \subseteq \{0,1\}^{|K|} ,都存在 S'   \subset  \{0,1,2 \}^{|K|}
注意:  Merge Encoding 不是函數,S' \in MergeEncoding(S),但是 preimage 是一個函數 !!  InverseMergeEncoding(S') = S
白話來說 : 給一個 S 可能有很多種 S' 的表示,給一個 S' 只會有唯一的 S !!
====================================================
例子[*]:
S = \{ (1,0,0) , (1,1,0) , (0,1,1) , (1,1,1) \} \equiv \underbrace{\{ (1,0,0) , (1,1,2) , (0,1,1)  \}}_{S'_1} \equiv \underbrace{\{ (1,2,0) ,(2,1,1) \}}_{S'_2}
====================================================
有了 Merge Encoding 以後,就可以拿來跟代數意義,集合論/機率論結合

[*] 代數意義:  英文大寫 = 1 ,英文小寫 = 0
Abc  + ABc + aBC + ABC = Abc + AB(C+c) +aBC =  A(B+b)c + (A+a) BC 

就是分配律啦 ~~ ,項數越少,計算量就越少,如何給定 S 快速找到元素最少的 Merge Encoding  S^{*} := \underset{S' \in MergeEncoding(S)}{\text{argmin } |S'| }  是重要的問題 !!

集合論 :
給定一些集合 \Omega_k,定義  \bigwedge_{k \in K} \bigg( s_k  = 1  \Longleftrightarrow    \omega  \in \Omega_k   \bigg)    
於是 \Omega_{k} \equiv (\overbrace{1}^{s_k},\overbrace{2,...,2}^{s_{-k}})
==========================================================
例如 :  |K| = 2

\Omega_{1} \cap \Omega_{2}  \equiv (1,1)
\Omega_1  \setminus \Omega_2 \equiv \Omega_{1} \cap \bar{\Omega_{2}} \equiv (1,0)
\Omega_2 \setminus \Omega_1 \equiv \bar{\Omega_{1}} \cap \Omega_{2} \equiv (0,1)
\Omega_{1} \equiv (1,2)
\Omega_{2}  \equiv (2,1)
\Omega_{1}  \cup \Omega_{2} \equiv \{(1,1),(1,0),(0,1) \} 
全空間 \equiv \{ (2,2)\}
==========================================================
機率論:
P(\Omega_{1} \cap \Omega_{2})  \equiv p_{11}
P(\Omega_1  \setminus \Omega_2) \equiv P(\Omega_{1} \cap \bar{\Omega_{2}}) = p_{10}
P(\Omega_2 \setminus \Omega_1) \equiv P(\bar{\Omega_{1}} \cap \Omega_{2}) = p_{01}
P(\Omega_{1}) = p_{12} = p_{10} + p_{11}
P(\Omega_{2}) = p_{21} = p_{01} + p_{11}
P(\Omega_{1}  \cup \Omega_{2}) = p_{10} + p_{11} + p_{01} = p_{12} + p_{01} = p_{21} + p_{10} = p_{22} - p_{00} 
P(全空間) = p_{22} =1

[檢驗 S' \equiv S]
有個必要條件
也就是把 2 全部展開後的元素個數要跟 |S| 相等
  S' \in MergeEncoding(S)  \Longrightarrow  \sum_{s' \in S'} 2^{\#} =  |S|     

其中 : \# := \sum_{k \in K}\color{blue}{\underbrace{[s'_k = 2]}_{\text{Iverson Bracket}}} = 2\text{的個數}
例如: 例子[*] 分別為 1+1+1+1 = 1+2+1 = 2+2 = 4

[小記]
由於筆者對於數字 2 \equiv \{0,1\}  比較敏感,有了 Merge Encoding,就更能理解|K|維度文氏圖,排容原理(inclusion-exclusion principle)的計算,而非透過集合符號 !! 記得口訣 : 看到 2 就可以展開 01 !!




[以上純為學術經驗交流知識分享,如有錯誤或建議可留言~~] 
by Plus & Minus 2018.07


留言

這個網誌中的熱門文章

Nash Equilibrium & Best Responce Function (BRF) In Continuous Strategies

經濟學重要的賽局理論( Game Theory )領域,用數學描述人與人之間的理性互動,最重要的就是尋找奈許均衡( Nash equilibrium ), 本篇介紹其數學規劃與非線性方程組!!  假設有 p 名玩家(player i),i=1,2,3,4,5,....p , 正在玩一場遊戲(Game)~~,完全不合作,各自獨立作決策 每個人有決策向量 x_i \in \Omega_i \subseteq R^{n_i} (有n_i個決策變數)  定義長向量: \underbrace{x =  (x_1,x_2,x_3,....x_p)}_{\# \text{ of } \sum^{p}_{i=1}n_i \text{ variables }} \in  \prod^{p}_{i=1} \Omega_i = \Omega 對於每個 player i ,長向量可以寫成 x = (x_i , x_{-i})x_{-i} 代表其他人(不是 player i) 能做的決策向量。 所有人各自作決策後,每個人都會個自的存在報酬效用函數 f_i (x)  \in \mathbb{R}  (報酬函數皆為公開已知資訊) 假設每位玩家是理性人(會極大化自己效用) 即 \forall i = 1,2,3,4....p \qquad  \underset{x_i \in \Omega_i}{\text{max }}f_i(x)   [註: 如果為合作可視為多目標規劃問題( multiobjective ),即 x_1,x_2,...x_p 可以由領導人一起決定] [註: 如果為合作而且把效用加總,即目標式變成 \sum_{i=1}^{p} f_i(x) ,可能對集體效益有更大的幫助,但是如何分配效益給 ( player i )會是個議題,可以查關鍵字 fair optimization ] 我們可以定義每個 player i 的 Best Response Function (BRF) or Best Reponce Set S_i(x_{-i}) \subset \Omega_i $$  S_i(x...

Lattice & Multinomial Theorem

本文介紹格子點(Lattice) 幾何意義與多項式定理(Mutinomial Theorem) 的關係,並可協助我們理解計算一些機率問題。 [符號定義] 非負整數 / 非負實數:  \mathbb{Z}_{\geq 0} := \{0,1,2,3,4,......\}  \subseteq [0,\infty) =: \mathbb{R}_{\geq 0} 離散機率向量:  p_{I} := (p_{i})_{i \in I} \text{ s.t } \sum_{i\in I}p_i =1 ,|I|<\infty  發生事件 i \in I 的累積次數向量: k_{I} := (k_i)_{i \in I} \in \mathbb{Z}^{|I|}_{\geq 0} \mathbb{Z}^{|I|}_{\geq 0} 就是 |I| 維格子點 !! [格子點情境] 出發點定義為 k^{start}_{I}:= \overbrace{(0,0...,0)}^{|I|},今發生一次 p_{I} 分布隨機互斥事件,等價於"點的移動"(state transition),數學定義如下:   \text{Event } i  \text{ happens }  \Longleftrightarrow  \overbrace{(\color{red}{k_i},k_{-i})}^{k^{old}_{I}}  \underset{\text{with probability }p_{i}}{\longrightarrow}   \overbrace{(\color{red}{k_i+1},k_{-i})}^{ k^{new}_{I}}    PS1: 其中  k_{-i} := (k_{i'})_{i' \in I-\{i\}} PS2: 不管怎麼走都在第一象限,也就是只能往右,往上,往高.... 當發生 n 次獨立同分布 p_{I} (iid) 的事件後,所有可能點位置在以下的集合上 $$  S_{n}(\col...

Linear Regression By Using Linear Programming

當拿到一筆資料準備玩統計,往往會想要做線性迴歸( Linear Regression ),找出一個模型( mathematical model )來解釋變數間的關係,一般都是使用平方距離,但是如果我們採用絕對值距離呢?? 而剛好在工業工程( Industrial Engineering ),作業研究( Operation Research ) 領域,發展成熟的線性規劃( Linear Programming ) 恰好可以來解決,是一個跨領域的應用 !! 已經存在有許多商業或open source 軟體,如: Gurobi , Cplex , Xpress , Mosek , SCIP  可以輕易求解大型的線性規劃問題。而不僅如此也可以利用整數規劃( Integer Programming )來做特徵選擇 ( Feature Selection ),甚至可以偵測離群值( Detect Outlier ) !! 本文只介紹最小絕對值和,關於 Feature Selection , Detect Outlier 可以參考 Mixed-Integer Linear Programming Robust Regression with Feature Selection , Oleksii Omelchenko , 2010 的論文。 [Data Fitting Problem] 給定n筆實數型訓練資料 (training data) \{(x^{k},y^{k})\}^{n}_{k=1} = \mathcal{D} , x^{k} =(x^{k}_1,x^{k}_2, ... , x^{k}_{p})\in \mathbb{R}^{p} , y^{k} \in \mathbb{R} , 我們目標是想要找到一個函數 f_{\mathcal{D}} : \mathbb{R}^p \rightarrow \mathbb{R} 使得  \forall x \in \mathbb{R}^{p} , f_{\mathcal{D}}(x) \approx y , 精確來說: $$ \text{Find } f_{\mathcal{D}} \text{ such that } f_{\mathcal{D}}(x)\...