前一篇打完之後發現進度嚴重 Delay,到目前為止還沒有 show 出 RBFNN 的程式,感覺在 IThome 不夠有 IT 感,但是一直沒有時間打出來,還是想多分享一些觀念問題。在此我還是要先拉回到輻狀基底函數,討論怎麼選這個函數,還有怎麼樣選擇函數中心。
如果你有印象,在前一篇文章我們提到了 RBF 就是一個由中心與輻狀組合而出來的函數,從現在 DAY2 開始,我們要開始將思維拓展到高維度了哦,希望中學時期的空間平面概念你能回憶起來,輻狀基底函數在處理高維度的資料的時候,他的中心點是一個向量值,因此在 DAY1 中介紹的絕對值不夠用,我們需要衡量二維、三維資料距離中心點距離的計算工具,因此就要先介紹一個東西是模(Norm),同時將我們的 RBF 用更專業的方法表達:
這樣就明白了,好我們現在要來介紹一個常見的 RBF 函數,也就是高斯函數(Gaussian function)他的數學很恐怖,但是就是中學時期學的常態分佈的函數圖形:
只是在這邊我們要重新理解高斯函數,在 RBF 中我們不會稱呼什麼期望值、標準差或變異數,而是用中心點(center)和輻狀寬度(width)來稱呼,有時候我們就簡稱中心和寬度。
假設我們現在手上有一筆 2016 年11 月的資料,是黃金與白銀的每日收盤價格:
現在,我們要仿照 DAY1 的方式,去選擇我們關注的點,現在我們沒有任何內部消息可以知道任何事情,所以對我們來說最好的方式就是先隨便亂選一些,好,就算是隨便亂選我們應該也要有個原則。
隨機選取法的方式,就是在我們的資料最大最小區間裡面,去隨機選擇,以這個黃金與白銀的價格資料,我們可以看到他的最大和最小的值勾勒出了一塊矩形區域:
好,假設我們在裡面隨機挑了兩個中心點
兩個中心點分別是左圖紫色和綠色的叉叉位置,那對照到我們的資料上面,這兩個中心點關注的這兩筆資料的位置又在哪呢?看右圖就能清楚明白,他們緊盯著資料就像形成了一個「目光柵欄」,如果我們選擇的中心點越多,這些柵欄能攔截到的資訊也就越多,但可能會過度判斷,所以中心也不能選太多。
這兩個眼睛未來將會成為我們的「資料專家」幫我們看出來資料點在哪些情況下的組合的訊息含量,能貼近你想解決的問題。
對了,輻狀基底函數若採高斯函數,我們還要決定輻狀寬度呀!沒錯,所以我們還要決定他的寬度,原則上幅度寬度要盡量不要讓每個中心彼此互相干擾到,也就是說我的某個中心的幅度寬度不能太大,大到遮住了另一個中心,就看不到另一個中心的訊息含量了,這就是幅度寬度選擇的一個基礎原則,見下圖:
這邊我們會將我們挑選的中心兩兩相比較,取出彼此距離最遠的兩個中心之間的距離,除以中心點個數開根號,這是一種幅度寬度的計算方法,還有很多種其他方法。
但仔細看上圖,奇怪,怎麼有好多資料沒有被關注到呢?沒錯的,這就是隨機選取法的缺點,隨機選取法忽視了你的資料特性,所以這就帶出來另一種方法就是先把資料做一個聚類分析,看看聚類分析之後資料分成各個關聯性較高的群體,再從這些群體中挑選中心!這就是一個更好的想法呢!如下圖:
不知道你有沒有注意到呢?黃金與白銀在中間有一段時間急遽的下跌,但因為我們的資料蒐集來只有每日的資料,所以下跌那段期間的訊息就像是蒸發掉一樣了
因此用聚類選取法的時候,你會發現你的中心依據你的資料特性選擇中心之後,他居然沒有關注到中間那段急遽下跌期間,那個部分的訊息可能就擷取不到了!
當然那段消失的區間是否重要,要看你的資料和問題是否需要重視那段劇烈變化(資料點跳躍),這沒有一定的標準,所以聚類選取和隨機選取都可以,但你要先明白你要解決的問題是什麼,資料特性是否需要依賴呢?這我們會在未來資料預處理的時候,談到時間序列可以先轉換成差值(例如價格的變動值)或狀態變數(價格上漲或下跌兩個狀態)。