天天看點

《Python機器學習——預測分析核心算法》——1.1 為什麼這兩類算法如此有用

本節書摘來異步社群《python機器學習——預測分析核心算法》一書中的第1章,第1.1節,作者:【美】michael bowles(鮑爾斯),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

有幾個因素造就了懲罰線性回歸和內建方法成為有用的算法集。簡單地說,面對實踐中遇到的絕大多數預測分析(函數逼近)問題,這兩類算法都具有最優或接近最優的性能。這些問題包含:大資料集、小資料集、寬資料集(wide data sets)[1]、高瘦資料集(tall skinny data sets)[2]、複雜問題、簡單問題,等等。rich caruana及其同僚的兩篇論文為上述論斷提供了證據。

在這兩篇論文中,作者選擇了各種分類問題,用各種不同的算法來建構預測模型。然後測試這些預測模型在測試資料中的效果,這些測試資料當然不能應用于模型的訓練階段,對這些算法根據性能進行打分。第一篇論文針對11個不同的機器學習問題(二進制分類問題)對比了9個基本算法。所選問題來源廣泛,包括人口統計學、文本處理、模式識别、實體學和生物學。表1-1列出了此篇論文所用的資料集,所用名字與論文中的一緻。此表還展示了針對每個資料集做預測時使用了多少屬性(特征)以及正例所占的百分比。

術語“正例”(positive example)在分類問題中是指一個實驗(輸入資料集中的一行資料)其輸出結果是正向的(positive)。例如,如果設計的分類器是判斷雷達傳回信号是否表明出現了一架飛機,那麼正例則是指在雷達視野内确實有一架飛機的那些結果。正例這個詞來源于這樣的例子:兩個輸出結果分别代表出現或不出現。其他例子還包括在醫學檢測中某種疾病出現或不出現,退稅中是否存在欺騙。

不是所有的分類問題都處理出現或不出現的問題。例如通過計算機分析一個作家發表的作品或者其手寫體的樣本來判斷此人的性别:男性或女性,在這裡性别的出現或不出現是沒有什麼意義的。在這些情況下,指定哪些為正例、哪些為負例則有些随意,但是一旦標明,在使用中要保持一緻。

在第1篇論文的某些資料集中,某一類的資料(例子)要遠多于其他類的資料(例子),這叫作非平衡(unbalanced)。例如,2個資料集letter.p1 和letter.p2.都是用于解決相似的問題:在多種字型下正确地分出大寫字母。letter.p1的任務是在标準字母的混合集中正确區分出大寫字母o,letter.p2的任務是将字母正确劃分成a-m和n-2的兩類。表1-1中的“正例百分比”一欄反映了這種資料非平衡的差異性。

《Python機器學習——預測分析核心算法》——1.1 為什麼這兩類算法如此有用

表1-1還顯示了每個資料集所使用的屬性(特征)的數量。特征就是基于此進行預測的變量。例如,預測一架飛機能否按時到達目的地,可能導入下列屬性(特征):航空公司的名字、飛機的制造商和制造年份、目的地機場的降水量和航線上的風速與風向等等。基于很多特征做預測很可能是一件很難說清楚是福還是禍的事情。如果導入的特征與預測結果直接相關,那麼當然是一件值得祝福的事情。但是如果導入的特征與預測結果無關,就是一件該詛咒的事情了。那麼如何區分這兩種屬性(該祝福的屬性、該詛咒的屬性)則需要資料來說話。第3章将進行更深入的讨論。

本書涵蓋的算法與上述論文中提到的其他算法的比較結果如表1-2所示。針對表1-1列出的問題,表1-2列出了性能打分排前5名的算法。本書涵蓋的算法脫穎而出(提升決策樹(boosted decision trees)、随機森林(random forests)、投票決策樹(bagged decision trees)和邏輯回歸(logistic regression)。前3個屬于內建方法。在那篇論文撰寫期間懲罰回歸還沒有獲得很好的發展,是以在論文中沒有對此進行評價。邏輯回歸是屬于與之相對比較接近的算法,可以用來評測回歸算法的性能。對于論文中的9個算法各有3種資料規約方法,是以一共是27種組合。前5名大概占據性能評分排名的前20%。第1行針對covt資料集的算法排名可以看到:提升決策樹算法占第1名、第2名;随機森林算法占第4名、第5名;投票決策樹算法占第3名。出現在前5名但是本書沒有涵蓋的算法在最後一列列出(“其他”列)。表中列出的算法包括:k最近鄰(k nearest neighbors, knns)、人工神經網絡(artificial neural nets, anns)、支援向量機(support vector machine, svms)。

《Python機器學習——預測分析核心算法》——1.1 為什麼這兩類算法如此有用

在表1-2中,邏輯回歸隻在一個資料集下進入前5。原因是針對表1-2中的資料集規模及其所選的特征,不能展現邏輯回歸的優勢。相對于資料集的規模(每個資料集有5 000個示例)采用的特征太少了(最多也就200個)。選取的特征有限,是以現有的資料規模足以選出一個合适的預測模型,而且訓練資料集規模又足夠小,使得訓練時間不至太長,是以其他算法也可以獲得很好的結果。

注意

正如将在第3章、第5章和第7章中所看到的那樣,當資料含有大量的特征,但是沒有足夠多的資料或時間來訓練更複雜的內建方法模型時,懲罰回歸方法将優于其他算法。

caruana等人的最新研究(2008年)關注在特征數量增加的情況下,上述算法的性能。也就是說這些算法面對大資料表現如何。有很多領域的資料擁有的特征已遠遠超過了第一篇論文中的資料集的規模。例如,基因組問題通常有數以萬計的特征(一個基因對應一個特征),文本挖掘問題通常有幾百萬個特征(每個唯一的詞或詞對對應一個特征)。線性回歸和內建方法随着特征增加的表現如表1-3所示。表1-3列出了第2篇論文中涉及的算法的評分情況,包括算法針對每個問題的性能得分,最右列是此算法針對所有問題的平均得分。算法分成2組,上半部分是本書涵蓋的算法,下半部分是其他算法。表1-3中的算法依次為:bstdt(boosted decision tress)-提升決策樹;rf(random forests)-随機森林;bagdt(bagged decision trees)-投票決策樹;bstst(boosted stumps)-提升二叉樹:lr(logistic regression)-邏輯回歸;svm(support vector machines)-支援向量機;ann(artificial neural nets)-人工神經網絡;knn(distance weighted knn)-距離權重k最近鄰;prc(voted perceptrons)-表決感覺器;nb(naive bayes)-樸素貝葉斯。nb(naive bayes)-樸素貝葉斯。

表1-3中的問題是依其特征規模依次排列的,從761個特征到最終的685569個特征。線性(邏輯)回歸在11個測試中的5個進入前3。而且這些優異的分數主要集中在更大規模的資料集部分。注意提升決策樹(表1-3标為bstdt)和随機森林(表1-3标為rf)其表現仍然接近最佳。它們針對所有問題的平均得分排名第1、第2。

《Python機器學習——預測分析核心算法》——1.1 為什麼這兩類算法如此有用

本書涵蓋的算法除了性能外,在其他方面也有優勢。懲罰線性回歸模型一個重要優勢就是它訓練所需時間。當面對大規模的資料時,訓練所需時間就成為一個需要考量的因素。某些問題的模型訓練可能需要幾天到幾周,這往往是不能忍受的,特别是在開發早期,需要盡早在多次疊代之後找到最佳的方法。懲罰線性回歸方法除了訓練時間特别快,部署已訓練好的模型後進行預測的時間也特别快,可用于高速交易、網際網路廣告的植入等。研究表明懲罰線性回歸在許多情況下可以提供最佳的答案,在即使不是最佳答案的情況下,也可以提供接近最佳的答案。

而且這些算法使用十分簡單,可調參數不多,都有定義良好、結構良好的輸入資料類型。它們可以解決回歸和分類的問題。當面臨一個新問題的時候,在1~2小時内完成輸入資料的處理、訓練模型、輸出預測結果是司空見慣的。

這些算法的一個最重要特性就是可以明确地指出哪個輸入變量(特征)對預測結果最重要。這已經成為機器學習算法一個無比重要的特性。在預測模型建構過程中,最消耗時間的一步就是特征提取(feature selection)或者叫作特征工程(feature engineering)。就是資料科學家選擇哪些變量用于預測結果的過程。根據對預測結果的貢獻程度對特征打分,本書涵蓋的算法在特征提取過程中可以起到一定的輔助作用,這樣可以抛掉一些主觀臆測的東西,讓預測過程更有一定的确定性。