機器學習模型的特性總結

nothinger發表於2012-03-21

我寫這篇文章是緣於機器學習聯絡小組裡的一次討論

機器學習模型中有許多種不同方法可以用來解決分類和迴歸問題。對同一個問題來說,這些不同模型都可以被當成解決問題的黑箱來看待。然而,每種模型都源自於不同的演算法,在不同的資料集上的表現也各不相同。最好的方法是使用交叉比對的方式來決定在待測試資料上哪種模型的效果最好。

在此我嘗試對每種模型的演算法模式進行簡要總結,希望能幫助你找著適合特定問題的解決方法。

基於決策樹的方法

基本的學習方法是依據最有區分度的劃分條件,遞迴地將訓練資料劃分成具有同質成員的桶塊。“同質性”的衡量標準是基於輸出標籤而定的。當輸出標籤是數字值時,衡量標準是桶塊成員的方差;當輸出標籤是類別時,衡量標準是桶塊成員的熵或基尼係數。在學習過程中,基於輸入的不同的劃分條件將被一一嘗試(以貪心的方式):當輸入是類別時(星期一,星期二,星期三……),輸入會先被轉換成二元值(isMon, isTue, isWed…),然後依據二元值的真/假值情況作為決策邊界來評估同質性;當輸入是數字值或序號值時,訓練資料各輸入值之間的大小關係將被用作決策邊界。當進一步劃分該決策樹在同質性上已經不能得到明顯受益時,訓練過程就將停止。葉節點所表示的桶塊成員將對最終的預測結果進行投票:當輸出是類別時,佔大多數的成員決定最後的輸出類別;當輸出是數值時,各成員的平均值即為最後的輸出值。

決策樹的優點是,它對輸入和輸出資料的型別沒有嚴格限制,既可以是類別,也可以是二元值或數字值。決策節點的深度也揭露了不同輸入變數對最終結果的影響程度。然而,決策樹的侷限性在於,每個分裂點的決策邊界是一個具體的二元決策。而且在每一個時刻,決策條件只考慮一個(而不是綜合地考慮多個)輸入屬性。決策樹的另一個缺點在於,一旦習得了一棵決策樹,在後續就無法對其進行增量更新了。如果有新的訓練資料加入,就必須放棄這棵舊的決策樹,從頭再重新生成整棵新的決策樹。

然而,當決策樹和其他的一些整合方法——如隨機森林(Random Forest)方法和提升決策樹(Boosting Tree)方法——相結合後,可以解決上述的很多侷限性。例如,梯度提升決策樹在很多問題上都能取得比其他的機器學習模型更好的效果,同時它也是近年來最熱門的機器學習方法之一。

基於線性迴歸的方法

基本的假設是,輸出變數(數字值)可以表示為一系列輸入變數(也是數字值)的線性組合(加權和)。如 y = w1 * x1 + w2 * x2 + w3 * x3 ...。

訓練階段的最終目標是要在使得錯誤函式的損失(y, w1 * x1 + w2 * x2 + ...)最小的前提下,確定出係數w1,w2 ...梯度下降法是解決該問題的經典方法。它的主要思想是沿著損失函式的最大梯度方向不斷調整w1, w2等值。

線性迴歸方法的輸入變數要求必須是數字值。對二元變數來說,它將被表示為0和1。對類別性的變數來說,每個可能的值將被表示為一個獨立的二元變數(也是0和1)。對於輸出來說,如果它是一個二元變數(0,1),那麼將用一個迴歸函式將負無窮大到正無窮大的值域變換為0到1的範圍。這種方法被稱為邏輯迴歸並且使用另一種基於最大似然率的損失函式。

為了避免過度擬合,正則化技術(L1,L2)被用來對較大的w1,w2等值進行懲罰。L1和L2方法分別是將w1的絕對值和平方加到損失函式中。L1會更大程度地打壓冗餘或不相關的特徵(賦予非常小的權值/係數),可以被拿來選擇具有高影響度的特徵。

線性模型的強大在於,它在算分和學習上都具有非常好的效果。基於隨機梯度下降的學習演算法具有很高的可擴充套件性,可以用來處理增量學習問題。線性模式的缺點在於其對於輸入特徵的線性假設通常是不成立的。因此,一種重要的方法是請相關領域的專家對每一個輸入特徵進行轉換。另一種常用的方法是使用各種不同的轉換函式,如1/x, x^2, log(x)等,寄希望於這些函式中的一個會和輸出具有線性關係。線性度可以通過觀察殘差(y – predicted_y)是否是正態分佈的(利用高斯分佈的常態機率圖) 來判斷。

神經網路

神經網路可以表示為多層感知器(每一個感知器都是一個邏輯迴歸單元,具有多個二元輸入和一個二元輸出)。因為有多個層次,這相當於z = logit(v1 * y1 + v2 * y2 + ...),其中y1 = logit(w11 * x1 + w12 * x2 + ...)。

多層模型使得神經網路可以學習輸入x和輸出z之間的非線性關係。典型的學習技術是“反向錯誤傳播”,錯誤從輸出層被反向傳播到輸入層來調整相應權值。

需要注意的是,神經網路只接受二元輸入。這意味著我們需要將類別型輸入轉換成多個二元變數。對於數值型輸入變數,我們可以將其轉換成1/0字串。類別型變數和數值型輸出可以通過相應方式進行轉換。

貝葉斯網路

貝葉斯網路實質上就是一個依賴圖,圖中的每個節點代表一個二元變數,每條邊(有向的)代表依賴關係。如果節點A和節點B均有一條邊指向節點C,這意味著C的概率取決於A和B的布林值的不同組合。如果節點C指向節點D,那麼節點D也依賴於A和B的值。

該方法的學習過程是要對每個節點找出其所有進入邊的聯合概率分佈,這可以通過計算A、B和C點的觀察值獲得,然後就可以更新節點C上的聯合概率分佈表。一旦我們對每個節點都有了相應的聯合概率分佈表,我們就可以利用貝葉斯規則,通過已觀察節點(輸入變數)來計算任意隱藏節點(輸出變數)的概率。

貝葉斯網路的長處在於它具有很高的可擴充套件性並且可以增量式地學習,因為我們只需計算已觀察節點並且更新相應的概率分佈表即可。和神經網路一樣,貝葉斯網路需要所有輸入資料為二元值,類別型變數需要如前述轉換成多個二進位制變數。通常來說,數值型變數並不太適合貝葉斯網路。

支援向量機

支援向量機可以接受數值型輸入和二元輸出。它的核心思想是要找出一個能最大區別兩類輸出的線性平面。類別型輸入將被轉換成數值型輸入,同時類別型輸出可以被模擬為多個二元輸出。

使用一個不同的損失函式,支援向量機也可以完成迴歸的功能(稱為SVR)。我自己還沒有用過這種方法,所以對此我不便多說。

支援向量機的優點在於它可以處理非常多維的資料。另外,藉助核函式,它還可以處理非線性關係。

最近鄰

最近鄰方法並不是以習得一個模型為目的。其主要思想是要從訓練集中找出K個近似的資料點,並且用它們來對輸出進行插值運算——對於類別型和數值型的輸出來說分別是佔大多數的類別和數值平均值(或者是加權平均值)。K是一個可調的引數,需要用交叉驗證的方法來選擇其最優值。

最近鄰方法需要定義一個距離函式來尋找得最近的鄰居。對於數值型輸入來說,通常會將輸入正規化再除去標準差。當輸入是獨立的時,通常使用歐幾里德距離,否則就使用馬氏距離(Mahalanobis Distance,表示輸入特徵對之間的關聯度)。對於二元屬性,則使用傑卡德距離(Jaccard Distance)。

K近鄰方法好在它很樸素簡潔,因為無需去訓練一個模型。當有新資料到來時,增量式學習就可以自動開始(舊資料已經可以刪除)。然而,該方法需要把資料組織成一棵可感知距離(distance aware)的樹,即需要在O(logN)而非O(N)的時間複雜度裡找到最近鄰居。K近鄰方法的另一個缺點是不能處理多維資料。此外,不同因子的權值調優(通過對不同權值組合的交叉比對)是一項沉悶乏味的工作。

原文標題:Characteristics of Machine Learning Model

原文連結:http://horicky.blogspot.com/2012/02/characteristics-of-machine-learning.html#links

樂譯文萃看好文章!

相關文章