Processing math: 0%
跳到主要內容

Set Notations In Real Life

筆者認為數學建模的困難性在於我們無法把現實生活中的問題使用數學符號語言"表達的很清楚",本篇文章從筆者學習作業研究(Operation Research)的經驗,並給些例子說明日常生活中的集合論,概念的啟發!!

[物品價格加總改寫 !! ]
給定 n 個物品, I = \{ One , Two , ..... TheNth \} ,每個編號視為"物理上不同且唯一"的物品,而可以定義其價格函數 :  X : I \longrightarrow \mathbb{R}

數學上我們習慣把物品做編號化,寫成 i = 1 , 2 , 3 , ..... n ,但這事實上這些數字沒有意義,只是個符號區分"不同"而已不能做運算....,筆者認為是多此一舉,而且容易混淆,所以在現實生活中的應用,我們不必把物品編號,可以抽象化成廣義成抽象的集合 i \in I
而當我們要把 n 個物品價格加總,就可以寫成下面這種形式 :
\sum^{n}_{i=1}  X_{i} \underset{\text{集合化}}{\Longrightarrow} \sum_{i\in [1,n]_{\mathbb{Z}} } X_{i}  \underset{\text{去掉編號}}{\Longrightarrow}  \sum_{i \in I} X_{i} 
[另外]你還可以...做以下的表示,玩玩交集聯集 !!
I_1 , I_2  \subset I  \quad  \sum_{i \in I_1\cup I_2} X_{i} , \sum_{i \in I_1\cap I_2} X_{i} 

[另外可以回味連續的世界] 加了左邊 \displaystyle{\lim_{n \rightarrow \infty }},右邊\frac{1}{n}
只加左邊就是 Series 啦 !! 大概長這樣,\lim_{n \rightarrow \infty } \sum^{n}_{i=1}  X_{i} = \sum^{\infty}_{i=1}  X_{i} 
加左邊加右邊有機會變積分囉 !! (不嚴謹的寫法,概念上大概長這樣)
\lim_{n \rightarrow \infty } \sum^{n}_{i=1}  X_{i} \frac{1}{n}  = \int^{b}_{a} X(t) dt
不過微積分不是本文探討的重點 !!

[何謂相同的物品??]
注意 : i 為變數,I 為有限的集合,我們自然可以做取後不放回,一次取一個,可以產生 n! 種可能的序列。 定義 i^{k} 代表第 k 次抽出來的物件 (k \in [1,|I|]_{\mathbb{Z}})
(i^1,i^2,...,i^n) \in  Hyper(I) = I \times \underbrace{I\setminus \{i^1\} \times I \setminus \{i^1,i^2\} ... \times \{i^n\}}_{\text{depend sets}}
而且  |Hyper(I)| = |I| \times |I\setminus \{i^1\}| \times |I \setminus \{i^1,i^2\}| ... \times |{i^n}|  = n!

X_i 代表這個物品 i 的屬性值,就如同價格一樣。
現實生活中,我們口語上說這兩個物品一樣,並不是說它們是同一個物品,而是兩個物品它們的屬性值一樣。
  i^{1} \underset{X}{\sim} i^{2}  \iff  X_{{i}^{1}} = X_{{i}^{2}}   
而給定屬性函數如 X ,我們可以定義同一"種"物品,即為 cosets / equivalence class / partitions 等概念 (詳細可以參考抽象代數課程),可以定義
  [I] := I/\underset{X}{\sim} = \{ [i] \}   \quad  [i]:= \{i\in I | i \underset{X}{\sim} i' \quad  \forall i' \in I-\{i\} \} \text{ 代表 coset  }
總共有幾種就是計算    |I/\underset{X}{\sim}|  的個數 !!
當我們買些物品,其中有些物品價格一樣,可以把式子寫成
  \sum_{i \in I} X_i = \sum_{[i] \in [I]} |[i]| \cdot X_{[i]} 


[多維屬性以及值域!!]
物品除了價格外,也許還有重量,形狀,排名,所以可以把 X 改定義為多維函數,而有時候論域上的不同,
如價格大概是正整數 p \in PRICE = \mathbb{N}
重量是實數w \in WEIGHT = \mathbb{R}
形狀應該可以記做 s \in SHAPE = \{circle,triangle,square\}
排名記做 r \in RANK = \{1,2,3,4,...|I|\}
  X : I  \longrightarrow  PRICE \times WEIGHT \times SHAPE \times  RANK 

而一般統計學蒐集的資料為,|I| \times 4 矩陣 A ,每一個 row 代表 X_i = (p,w,s,r)
我們可以用 [i] \equiv (p,w,s,r) 來表示同一種物品

[多維下標]
現實生活中,多維下標是比較常見的 ,舉下面明顯的例子:
"加加"買了兩種物品 \{One , Two\}
"阿元"買了三種物品 \{One , Three , Four \}
"減減"買了四種物品 \{One , Four , Five , Six\}....。
抽象的描述可以先定義集合  b \in  B := \{\text{阿元 , 加加 , 減減}\}  ,於是他們買個東西就可以寫成 depend set I_b := \{ i \in I | \text{buyer } b \text{ buy item } i    \}
很明顯我們還可以利用聯集重新建構出 \displaystyle{I' = \bigcup_{b \in B}I_b}  = \{One , Two , Three , Four , Five , Six \}  \subset I
我們還可以反轉,如果想要知道 Four 這個物品被誰買了就可以定義 B_i := \{b \in B | i \in I_b \} 更簡潔點可以寫成  i \in I_b  \iff  b \in B_i  ,所以 B_{Four} = \{\text{阿元,減減}\}

今天我另外定義了個數 n_{bi} \geq 0   \iff  \text{Buyer } b  \text{ 買了物品 } i  \text{ 買了 } n_{bi} \text{ 個 },價格為 p_{i} 元,則今天我要計算所有人花了多少錢買東西呢??
你可以看看每個人買了什麼,再把它加在一起
  \text{TotalCost} = \sum_{b\in B}\sum_{i\in I_b}n_{bi}p_i
當然你也可以這樣算 ,先把買來的東西收集起來,看看共有幾個,再乘以價格再加總 !!
\text{TotalCost} = \sum_{i\in I'}p_i \left[\sum_{b\in B_i}n_{bi}\right] =  \sum_{i\in I'} \sum_{b\in B_i} n_{bi}p_i

而如果你學過矩陣,你可以定義  N = [n_{bi}] ,它是 |I| \times |B| 矩陣,但是你會發現好像浪費很多空間,你實作上應該會得到這個結論 i \notin I_b   \iff n_{bi} = 0 
如果你學過圖論,你就發現 G(V,E) 是比較好表示的方法,G is Bipartite Graph,其中 V = B\cup I'(b,i) \in E \subset B\times I' \subset B \times I 
如果你學過 Indicator Function 你可以定義
\chi_{E}: B\times I  \longrightarrow \{0,1\}  \quad \quad  \chi_E(e) = 1 \iff  e \in E 

另外你可以定義"邊"的符號 e = (b,i)  \iff   i = Tail(e) , b=Head(e)

最後回到買東西算錢公式我們可以再加兩個式子 !!

\text{TotalCost} = \sum_{i\in I'} \sum_{b\in B_i}n_{bi}p_i = \sum_{b\in B}\sum_{i\in I_b}n_{bi}p_i =  \sum_{e\in E}n_{e} p_{Tail(e)} = \underbrace{\sum_{e \in B \times I}}_{\sum_{b\in B}\sum_{i\in I}}  n_{e}p_{Tail(e)} \cdot \chi_{E}(e)   



[小結]
這是集合論上在現實生活中的一些例子與表示 ~~  讓讀者瞭解利用 depend set 一對多的概念其實可以精確描述很多事情 ,當然現實生活中是複雜的離散結構。是多維下標,多維屬性的混合體。值得讀者去冒險探究啦!!


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

留言

這個網誌中的熱門文章

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)\...