1. 程式人生 > >大資料系列之實時計算Spark(十三)機器學習

大資料系列之實時計算Spark(十三)機器學習

1.機器學習簡介

機器學習可能是當下最火的話題了。之前我們所做的一些工作,比如說java開發,安卓等等,其實無非就是在來回的寫方法,呼叫方法,而機器學習說的通俗一點可能就是找函式。要知道,我們現在面對的是巨大的資料量,對於這麼多的資料量,我們不太可能找到一個描述資料的方法或是函式,比如說給了上億行的資料,每行資料都有幾十個維度,那我們在找這個方法或是函式來描述這些資料簡直是太難了。由於計算機相比人類來說,最超群的可能就是計算了,如果我們利用計算機的計算能力,讓計算機去幫助我們找到這個函式或是方法,那就跟我們之前一直在做的工作一樣了。

機器學習是科學的一個分支,涉及程式設計系統,他們會自動學習和改進的經驗。在這裡,學習意味著認識和理解輸入的資料。根據所提供的資料,並做出明智的決定。這些演算法從特定的資料和過去的經驗,統計,概率論,邏輯,組合優化,搜尋,強化學習和控制理論的原則,建立知識。機器學習是一個廣闊的領域(視覺處理,語言處理,預測,模式識別,遊戲,資料探勘,專家系統,機器人等。注意:深度學習是機器學習的一個分支)。有幾種方法來實現機器學習技術,但是最常用的是監督學習和無監督學習。

                         

                       

2.監督學習

 利用一組已知類別的樣本調整分類器引數,使其達到所要求效能的過程,也稱為監督訓練或有教師學習。

監督學習是從標記的訓練資料來推斷一個功能的機器學習任務。訓練資料包括一套訓練示例。在監督學習中,每個例項都是由一個輸入物件(通常為向量)和一個期望的輸出值(也稱為監督訊號)組成。監督學習演算法是分析該訓練資料,併產生一個推斷的功能,其可以用於映射出新的例項。一個最佳的方案將允許該演算法來正確地決定那些看不見的例項的類標籤。這就要求學習演算法是在一種“合理”的方式從一種從訓練資料到看不見的情況下形成。監督學習從可用的訓練資料中處理學習功能。監督學習演算法分析訓練資料併產生一個推斷的函式,用來對映新的案例。常見的監督學習有:電子郵件的垃圾分類,按照內容標記網頁,聲音識別等等。有許多監督學習演算法,比如神經網路、支援向量機(svm)以及樸素貝葉斯分類器等。

                          

3.無監督學習

現實生活中常常會有這樣的問題:缺乏足夠的先驗知識,因此難以人工標註類別或進行人工類別標註的成本太高。很自然地,我們希望計算機能代我們完成這些工作,或至少提供一些幫助。根據類別未知(沒有被標記)的訓練樣本解決模式識別中的各種問題,稱之為無監督學習。常用的無監督學習演算法主要有主成分分析方法PCA等,等距對映方法、區域性線性嵌入方法、拉普拉斯特徵對映方法、黑塞區域性線性嵌入方法和區域性切空間排列方法等。從原理上來說PCA等資料降維演算法同樣適用於深度學習,但是這些資料降維方法複雜度較高,並且其演算法的目標太明確,使得抽象後的低維資料中沒有次要資訊,而這些次要資訊可能在更高層看來是區分資料的主要因素。所以現在深度學習中採用的無監督學習方法通常採用較為簡單的演算法和直觀的評價標準。無監督學習裡典型例子是聚類。聚類的目的在於把相似的東西聚在一起,而我們並不關心這一類是什麼。因此,一個聚類演算法通常只需要知道如何計算相似度就可以開始工作了。聚類演算法一般有五種方法,最主要的是劃分方法和層次方法兩種。劃分聚類演算法通過優化評價函式把資料集分割為K個部分,它需要K作為 輸人蔘數。典型的分割聚類演算法有K-means演算法, K-medoids演算法、CLARANS演算法。層次聚類由不同層次的分割聚類組成,層次之間的分割具有巢狀的關係。它不需要輸入引數,這是它優於分割聚類 演算法的一個明顯的優點,其缺點是終止條件必須具體指定。典型的分層聚類演算法有BIRCH演算法、DBSCAN演算法和CURE演算法等。

無監督學習使用的是未被標籤化的資料集。這對於分析可用資料以及找出模式和趨勢是一個非常強大的工具。最常見應用就是類似於邏輯分組的聚類中。非監督學習的常見手段是:kmean,自我組織的map,層次聚類。

                   

4.機器學習應用程式開發步驟

 (1).收集資料。我們可以使用很多方法收集樣本資料,如:製作網路爬蟲從網站抽取資料、從RSS反饋或者API中得到資訊、裝置發過來的實際測試資料。提取資料的方法非常多,為了節省時間與精力,可以使用公開可用的資料來源。

(2).準備輸入資料。得到資料之後,還必須確保資料格式符合要求。

(3).分析輸入資料。主要是人工分析以前得到的資料。

(4).訓練演算法。機器學習演算法從這一步才真正開始學習。

(5).測試演算法。為了評估演算法,必須使用測試資料來測試演算法工作的效果。

(6).使用演算法。將機器學習演算法轉換為應用程式,執行實際任務,以檢驗上述步驟是否可以在實際環境中正常工作。此時如果碰到新的資料問題,同樣需要重複執行上述的步驟。

  

5.機器學習路線

                           

數學基礎非常的重要。

推薦:吳恩達網易公開課:機器學習視訊

李航:統計學習方法

機器學習書籍:

機器學習實戰

周志華:機器學習