上一堂講到三種不同的線性模型都可以用在二元分類,並且還可以透過二元分類來達成多類別分類,這一堂課會教到該如何將線性模型延伸轉換成非線性模型。
前面都講到線性模型,線性模型可以很容易的計算出線性分數,再結合不同的轉換作輸出,線性模型好處在於VC維度是可以很容易的受到控制的,所以確保作好Ein,Eout就可以表現的好。但是如果遇到像右邊比較複雜的資料,可能就沒辦法使用線性模型達成,勢必需要結合其它手法來突破限制。
再重新看一次這組比較複雜的資料,可以發現他雖然沒辦法線性分割,但似乎是「圓圈」可分的問題,也就是在圓圈內和圓圈外是不同的類別。那該如何把本來線性可分的問題轉成圓圈可分,再透過前面教到的演算法來解決呢?
接著我們先把原本的圓圈作符號的替換,可以整理成像之前一樣的向量內積式。他的意義在於,如果本來可以這個問題在X維度上用圓圈分出兩種類別,那麼在Z維度上將可以用直接用直線來分出兩種類別,即線性可分問題,這樣的轉換又稱為特徵轉換。所以我們知道問題在X維是圓圈可分,轉成在Z維是線性可分,但是相反來說的是不是在Z維是線性可分,在X維就是圓圈可分呢?
在Z維是線性可分,但是在X維其實不一定會是圓圈。因為在二次曲線可能性不止是圓圈,還有可能是橢圓或是雙曲線,甚至就算是圓圈還可能分成圓內和圓外,那該如何找到所有二次曲線的可能性呢?
我們可以列出所有能表式二次曲線的項都列出來(包含常數、一次項和二次項),所以在Z維的perceptron就會對應到在X維的某個二次曲線可能的分類方式,當然也有可能會退化成一次方程式。
所以到現在可以發現,如果能夠在Z維找到一個好的perceptron,就可以在X維找到一個可分割類別的二次曲線。之前學習的內容都是在X維裡面使用x和y來找到好的perceptron,現在要在Z維找到好的perceptron,自然就需要使用在Z維上的資料,再使用學習到的二元分類方法來處理。
首先可以透過一個函式Φ來將X維資料轉成Z維,再使用演算法來找出一個線性分割的perceptron。於是我們就可以把X維的資料,把它丟到Z維看看轉換到Z維的這筆資料究竟是什麼類別,就可以知道這筆資料該分成什麼類別。所以當我們把原本學到的方法透過特徵轉換到二次式甚至是多項式,可大大延伸演算法的應用範圍!
比如說本來維度很高的手寫辨識資料,可以應用特徵轉換建立intensity和symmetry組成的兩維問題。
這樣的特徵轉換好看起很多好處,但是究竟會有什麼壞處呢?前面只講到兩次項而已,如果今天要把特徵轉成Q次項的話,他的複雜度將會是O(Q^d),其中d是除常數項以外的項次,Q是要作的Q次項轉換。所以可以發現,透過這個轉換會讓計算還有儲存都多花費額外的力氣,可能是很困難的。
除了計算和儲存的困難,在VC維也會因為Q變大而變大,造成模型的複雜度變高。
上面給出了一組資料且有兩種分類結果,雖然右邊的Ein為0(即所有資料都可以分對),但是相比起左邊的分類結果反而讓人比較喜歡。雖然左邊的分類結果有些點是分錯的Ein不是0,但是線性的模型的泛化能力會比較好,雖然特徵轉換的維度比較低,Ein比較大,但是確有可能得到一個比較好的Eout;右邊的模型其特徵轉換的維度比較高,雖然讓Ein可以作的很好,但有可能得到較差的Eout,這就是機器學習上特徵還有模型選擇的trade-off!
那到底該選擇哪個維度的轉換才是最好的呢?也許就先把資料作視覺化看看資料長什麼樣子就能決定了,像是正圓圈只要作二次曲線轉換就可以了。看似好像一下子就可以找到特徵轉換的維度來達到好的學習效果,但是這樣的過程其實包含了過多的人為介入,而這樣的介入也許可以得到不錯的學習結果與好的Ein,但是背後隱含了機器會受到你的主觀想法和偏見影響,也容易讓你對學習的結果有過度的樂觀。所以在機器學習中要非常的小心,也許我們可以先偷看資料,然後用腦袋解析一次來找到最好的維度轉換與好的Ein,但是這個學習的結果在拿來應用時卻可能會得到不好的效果。
在多維度的轉換過程中,當轉換成Q維時,其中也包含了Q-1維的項次,Q-1維能作到的事Q維也能作到,Q-1維就等同於在Q維中某些項次為0,這其實是一個巢狀的涵蓋蓋念。
維度越高,可調整的自由變數就越多,所以VC維也就越多;又因為可調整的自由變數越多,所以也就越有可能找到更好的結果來產生更好的Ein。再來就可以畫出之前也看過的圖,Ein會隨著VC維而下降,而模型複雜度則會隨著VC維而上升,其中我們最在乎的Eout會先下降再上升。所以如果一開始就使用很高維度的特徵轉換是會得到好的Ein,但也會付出模型複雜度的代價,造成Eout效果不好。
安全的作法是先從低維轉換開始,再持續往右邊移動,直接找到好的Ein與好的Eout。雖然線性分類也許可以作到的是有限的,但是線性的泛化能力比較好,反而最後可以作到的事情是比較多的。
這一堂課教的是把原本線性的模型作特徵轉換變成非線性,並說明其中轉換的流程該如何作,但要特別注意的是維度的轉換是會付出計算、儲存和模型複雜度代價的,在選擇維度轉換記得要從簡單的開始,慢慢的往高維度找到最好的模型。