揭開機器學習的面紗

uebpk8056 8年前發布 | 18K 次閱讀 數據挖掘 機器學習

你周圍的人是否都在談論著“機器學習”?而你是否也聽說過一些算法技術卻仍舊缺乏一個全局的認識?本文也許就是一個好的起點……

智力的新紀元

在科學界,機器學習是目前很熱門的話題。通過把計算機和人類的能力相結合,一些相當復雜甚至是難以想象的問題正在被逐個突破。

如今的機器可以更容易地處理不斷產生的大量數據,也能夠對復雜的科學發現進行破譯。另一方面,研究人員已經承認機器學習具有用于廣泛領域的潛力,并且最終可以付諸實踐。

當開始著手研究機器學習,我們會發現這其中很多的算法技術對于統計學家、工程師、程序員、數學家和金融工程師而言也許并不陌生。這是因為這些算法技術實際上已經被研究很多年了。“機器學習”是一個相對而言的新名詞,但對于數據科學家而言這并不是一個完全陌生的領域。

本文匯總了原作者在研究初時遇到的一些有趣的實例,從而有助于理解機器學習的相關內容是如何聯系在一起,并列出其知識體系各部分之間的不同之處,最終針對現有的項目,選擇最佳的方案。

雖然本文并沒有提出什么新的觀點,甚至算不上專業,但原作者希望本文可以幫助那些對入門機器學習仍有疑惑的人。

“機器學習”是什么?

在機器學習領域,我們讓機器自主學習。他們通過給定數據集里的案例進行學習。人們只需要利用機器得到的結論去改善方案、提高效率、實現自動化流程和任務。

讓我們引用該領域兩位巨擘的話來更精確地解釋:

“機器學習是讓計算機在不被明確編程的情況下運作的科學。” ——安德魯·吳(Coursera)

“一種計算機程序,如果它的任務記為T,用P來測度性能,并通過經驗E來改善的話,它就會不斷地從經驗E中學習,從而滿足某類任務T和性能指標P。”——湯姆·米歇爾(1997)

我曾經聽說過這個!

聽起來,“機器學習”(簡稱為ML)和你之前了解的其他科學十分相似。現在,讓我們看看它們之間究竟有什么不同。

或許,你對“人工智能”(簡稱為AI)更加熟悉。人工智能是通過復制人類的基本意識來開發系統項目從而獨立完成預設好的目標的科學。很大程度上,機器學習可以算作是通過創造算法來調整機器行為從而接近經驗數據的人工智能。

很多機器學習的內容來源于統計學科,只不過叫法不同罷了。與傳統的統計學科不同,在機器學習中機器不對數據做推斷,它得到的結論也不會被最初的諸多假設所限定。回想一下你在統計學中聽到了多少次“假設X服從正態分布”或者“給定獨立同分布的隨機變量”。你有想過這些假設在現實中真的可能成立嗎?

然而,機器學習方法的一個缺點在于我們很難得到對變量之間關系的直觀解釋,而這恰恰是統計推理所擅長的。為了實現更精確的預測,機器學習得到的模型會變得相當復雜以至于難以去解釋。

失去解釋性是絕大多數數據科學家不愿意見到的,但這也是為了解決復雜問題必須付出的代價。通常來說,在機器學習中最重要的是解決整個問題而不需要去分析細節。你能夠不依賴其他技術發現數據背后隱藏的信息嗎?嘗試在下面這個色彩豐富的圖中找出隱藏的三個物體,你能看到什么?

“機器學習”和“數據挖掘”也很相似。然而數據挖掘主要是為了發現數據中未知的模式和關系,機器學習則是在實際應用中通過先前得來的信息來處理新的數據集。

問題的關鍵在于平衡好性能和解釋性的關系,比如說,預測準確性 vs 解釋性。

如果你仍舊對機器學習與其他學科的異同留有困惑,你可以在 “這里” 和 "這里" 找到機器學習和人工智能、統計、數據挖掘、深度學習的比較。

揭開機器學習的面紗

理解機器學習和學習如何入門最好的方法莫過于理解其知識體系各部分之間的不同之處。熟悉機器學習的人可能知道機器學習的主要模式就是監督學習和無監督學習了。

簡而言之,監督學習就是我們已經通過之前已知的數據知道結果了。

此時,我們想建立一個模型來預測未知數據的結果。我們將已有的數據和結果輸入機器,讓它從這兩者之間的關系中不斷學習從而建立模型。

在無監督學習中,我們則是希望發現數據中未知的結構或者是趨勢。原數據不含任何的標簽,但我們希望可以對數據進行整合(分組或者聚類),或是簡化數據(降維、移除不必要的變量或者檢測異常值)。

我們進一步區分這兩個模式的子類別,并在下圖中展示出來:

監督學習可以根據預測變量的類型再細分。如果預測變量是連續的,那這就屬于回歸問題。

而如果預測變量是獨立類別(定性或是定類的離散值),那這就屬于分類問題了。

舉例來說,如下兩圖所示:

  1. 預測 S&P500 指數下周的回報率。由于回報率是連續變量,這就是回歸問題。
  2. 預測歐元兌美元的趨勢是上升還是下降。這里只有兩種可能性:牛市或熊市。這就是分類問題。

無監督學習可以再細分為聚類分析、密度估計和降維。

聚類分析中,數據通過相似性或者距離來分組。密度估計中,模式和數據用分布函數或是定義的形狀表示。降維中,通過移除重復或者不必要的變量實現更簡潔的數據結構。

我們也可以根據學習的類型和所需解決的問題對特定的方法進行分類,如下圖所示:

“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"

在機器學習中有很多不同的詞實際上代表同一樣東西。下圖是對于輸入和輸出變量的常見的一些表達方式:

你也可以在 "Glossary" 找到更多與機器學習相關的術語。

 

 

來自:http://datartisan.com/article/detail/197.html

 

 本文由用戶 uebpk8056 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!