揭開機器學習的面紗
你周圍的人是否都在談論著「機器學習」?而你是否也聽說過一些演算法技術卻仍舊缺乏一個全局的認識?本文也許就是一個好的起點……
智力的新紀元
在科學界,機器學習是目前很熱門的話題。通過把計算機和人類的能力相結合,一些相當複雜甚至是難以想像的問題正在被逐個突破。
如今的機器可以更容易地處理不斷產生的大量數據,也能夠對複雜的科學發現進行破譯。另一方面,研究人員已經承認機器學習具有用於廣泛領域的潛力,並且最終可以付諸實踐。
當開始著手研究機器學習,我們會發現這其中很多的演算法技術對於統計學家、工程師、程序員、數學家和金融工程師而言也許並不陌生。這是因為這些演算法技術實際上已經被研究很多年了。「機器學習」是一個相對而言的新名詞,但對於數據科學家而言這並不是一個完全陌生的領域。
本文匯總了原作者在研究初時遇到的一些有趣的實例,從而有助於理解機器學習的相關內容是如何聯繫在一起,並列出其知識體系各部分之間的不同之處,最終針對現有的項目,選擇最佳的方案。
雖然本文並沒有提出什麼新的觀點,甚至算不上專業,但原作者希望本文可以幫助那些對入門機器學習仍有疑惑的人。
「機器學習」是什麼?
在機器學習領域,我們讓機器自主學習。他們通過給定數據集里的案例進行學習。人們只需要利用機器得到的結論去改善方案、提高效率、實現自動化流程和任務。
讓我們引用該領域兩位巨擘的話來更精確地解釋:
「機器學習是讓計算機在不被明確編程的情況下運作的科學。」 ——安德魯·吳(Coursera)
「一種計算機程序,如果它的任務記為T,用P來測度性能,並通過經驗E來改善的話,它就會不斷地從經驗E中學習,從而滿足某類任務T和性能指標P。」——湯姆·米歇爾(1997)
我曾經聽說過這個!
聽起來,「機器學習」(簡稱為ML)和你之前了解的其他科學十分相似。現在,讓我們看看它們之間究竟有什麼不同。
或許,你對「人工智慧」(簡稱為AI)更加熟悉。人工智慧是通過複製人類的基本意識來開發系統項目從而獨立完成預設好的目標的科學。很大程度上,機器學習可以算作是通過創造演算法來調整機器行為從而接近經驗數據的人工智慧。
很多機器學習的內容來源於統計學科,只不過叫法不同罷了。與傳統的統計學科不同,在機器學習中機器不對數據做推斷,它得到的結論也不會被最初的諸多假設所限定。回想一下你在統計學中聽到了多少次「假設X服從正態分布」或者「給定獨立同分布的隨機變數」。你有想過這些假設在現實中真的可能成立嗎?
然而,機器學習方法的一個缺點在於我們很難得到對變數之間關係的直觀解釋,而這恰恰是統計推理所擅長的。為了實現更精確的預測,機器學習得到的模型會變得相當複雜以至於難以去解釋。
失去解釋性是絕大多數數據科學家不願意見到的,但這也是為了解決複雜問題必須付出的代價。通常來說,在機器學習中最重要的是解決整個問題而不需要去分析細節。你能夠不依賴其他技術發現數據背後隱藏的信息嗎?嘗試在下面這個色彩豐富的圖中找出隱藏的三個物體,你能看到什麼?
「機器學習」和「數據挖掘」也很相似。然而數據挖掘主要是為了發現數據中未知的模式和關係,機器學習則是在實際應用中通過先前得來的信息來處理新的數據集。
問題的關鍵在於平衡好性能和解釋性的關係,比如說,預測準確性 vs 解釋性。
如果你仍舊對機器學習與其他學科的異同留有困惑,你可以在「這裡」和"這裡"找到機器學習和人工智慧、統計、數據挖掘、深度學習的比較。
揭開機器學習的面紗
理解機器學習和學習如何入門最好的方法莫過於理解其知識體系各部分之間的不同之處。熟悉機器學習的人可能知道機器學習的主要模式就是監督學習和無監督學習了。
簡而言之,監督學習就是我們已經通過之前已知的數據知道結果了。
此時,我們想建立一個模型來預測未知數據的結果。我們將已有的數據和結果輸入機器,讓它從這兩者之間的關係中不斷學習從而建立模型。
在無監督學習中,我們則是希望發現數據中未知的結構或者是趨勢。原數據不含任何的標籤,但我們希望可以對數據進行整合(分組或者聚類),或是簡化數據(降維、移除不必要的變數或者檢測異常值)。
我們進一步區分這兩個模式的子類別,並在下圖中展示出來:
監督學習可以根據預測變數的類型再細分。如果預測變數是連續的,那這就屬於回歸問題。
而如果預測變數是獨立類別(定性或是定類的離散值),那這就屬於分類問題了。
舉例來說,如下兩圖所示:
- 預測 S&P500 指數下周的回報率。由於回報率是連續變數,這就是回歸問題。
- 預測歐元兌美元的趨勢是上升還是下降。這裡只有兩種可能性:牛市或熊市。這就是分類問題。
無監督學習可以再細分為聚類分析、密度估計和降維。
聚類分析中,數據通過相似性或者距離來分組。密度估計中,模式和數據用分布函數或是定義的形狀表示。降維中,通過移除重複或者不必要的變數實現更簡潔的數據結構。
我們也可以根據學習的類型和所需解決的問題對特定的方法進行分類,如下圖所示:
「MLmastery」和「analyticsV」等博文對機器學習主要的演算法做了清晰實用的解釋。
其他細節
機器學習技術在應用之前使用「訓練+檢驗」的模式(通常被稱作」交叉驗證「)。
機器會不斷地嘗試參數的組合,因此我們要警惕「過擬合」和「運行時間」的問題。在訓練階段過高的準確性往往會造成過度優化,以至於在檢驗階段會有較差的結果。同時,為了減小成本函數到足夠的水平,演算法也會花很長時間直至收斂到最終的結果。
關於實際應用
機器學習可謂是無處不在,在日常生活中有大量相關實例,只是我們沒有意識到。比如說,機器學習被用於搜索引擎、過濾垃圾郵件、面部識別、社交網路分析、市場細分、數據分析、欺詐檢測和風險分析等。
泛泛而談是不足以說明問題的。通過將機器學慣用於金融領域的實例,我們能看到將這些複雜的演算法用於實際會帶來多大的便利。
無監督學習技術可以用於分析和理解金融數據。比如說,主成分分析(PCA)可以用於資產配置,K 均值可用來債券市場回報率的聚類,其他聚類方法可以再現 S&P 500指數的組成,ISOMAPS 演算法可以分類不同行業的股票。
監督學習技術則非常適合用於分析金融數據。它可以實現預測和幫助制定投資風險策略。舉例來說,近鄰演算法、神經網路、決策樹、隨機森林和貝葉斯這些都可以用來監測股市的市場變動趨勢。
更多相關鏈接
不知道從何開始?可以嘗試「在Coursera上的機器學習課程」或者用Python的」tool scikit-learn「。當然,你也可以在」Kaggle「上進行學習,」泰坦尼克號實例很適合初學者。
想知道究竟什麼演算法才適合解決你的問題?不如去看看「scikit learn」和「Azure」。
如果你想開始編程並嘗試一些實例,「caret Package」中包含大量的相關細節、函數和案例。你也可以從」Python and R codes「中學到機器學習主要的演算法。
不喜歡本文?想了解更多或想換個角度看?"detailed post"介紹了機器學習的入門知識,或是閱讀"innovative introductory visualisation"。
在機器學習中有很多不同的詞實際上代表同一樣東西。下圖是對於輸入和輸出變數的常見的一些表達方式:
原文鏈接:Machine Learning: A Brief Breakdown
原文作者: libesa
譯作者:Vector
推薦閱讀:
※李宏毅機器學習2016 第三講 梯度下降
※重新理解Bias和Variance
※XGBoost/GBDT相關blog推薦
※為什麼深度學習突然在改變你的生活
※Python3《機器學習實戰》學習筆記(三):決策樹實戰篇之為自己配個隱形眼鏡
TAG:机器学习 |