1. 程式人生 > >《機器學習實戰1》

《機器學習實戰1》

2017.2.27
第一章 《機器學習基礎》

思維導圖

在這裡插入圖片描述

1、關鍵術語的解釋

特徵:測量所有可測屬性,而後再挑選出重要部分,也可以稱作屬性
分類:機器學習的主要任務就是分類,即根據目標變數對特徵進行分類
訓練集:通常我們為演算法輸人大量已分類資料作為演算法的訓練集。訓練集是用於訓練機器學習演算法的資料樣本集合
訓練樣本:特徵或者屬性通常是訓練樣本集的列,它們是獨立測量得到的結果,多個特徵聯絡在一起共同組成一個訓練樣本
目標變數:目標變數是機器學習演算法的預測結果,在分類演算法中目標變數的型別通常是標稱型的,而在迴歸演算法中通常是連續型的
測試集:當機器學習程式開始執行時,使用訓練樣本集作為演算法的輸人,訓練完成之後輸人測試樣本。測試過程提供的樣本集合即為測試集
知識表示

:假定分類程式,經過測試滿足精確度要求,是否我們就可以看到機器巳經學會了如何區分不同的鳥類了呢?這個過程稱為知識表示,知識表示可以採用規則集的形式,也可以採用概率分佈的形式。

監督學習:機器只需從輸入資料中預測合適的模型,並從中計算出目標變數的結果。主要任務是將例項黎據劃分到合適的分類中。機器學習的另一項任務是迴歸,它主要用於預測數值型資料。大多數人可能都見過迴歸的例子— 資料擬合曲鉍:通過給定資料點的最優擬合曲線。分類和迴歸屬於監督學習,之所以稱之為監督學習,是因為這類演算法必須知道預測什麼,即目標變數的分類資訊。

非監督學習:資料沒有類別資訊,也不會給定目標值。在無監督學習中,將資料集合分成由類似的物件組成的多個類的過程被稱為聚類;將尋找描述資料統計值的過程稱之為密度估計。此外,無監督學習還可以減少資料特徵的維度,以便我們可以使用二維或三維圖形更加直觀地展示資料資訊。

2、學習演算法分類

在這裡插入圖片描述
選擇演算法的方法:

首先考慮使用機器學習演算法的目的
如果想要預測目標變數的值,則可以選擇監督學習演算法,否則可以選擇無監督學習演算法。確定選擇監督學習演算法之後,需要進一步確定目標變數型別,如果目標變數是離散型,如是/否、1/2/3、― 冗或者紅/黃/黑等,則可以選擇分類器演算法;如果目標變數是連續型的數值,如0.0~ 100.00、-999999或者+00-00等,則需要選擇迴歸演算法。

如果不想預測目標變數的值,則可以選擇無監督學習演算法。進一步分析是否需要將資料劃分為離散的組。如果這是唯一的需求,則使用聚類演算法;如果還需要估計資料與每個分組的相似程度,則需要使用密度估計演算法。

3、開發機器學習應用程式的步驟

收集資料:使用很多方法收集樣本資料,如:製作網路爬蟲從網站上抽取資料等
準備輸入資料:得到資料之後,還必須確保資料格式符合要求,採用的python標誌的list列表的
格式,使用這種標準資料格式可以融合演算法和資料來源,方便匹配操作
分析輸入資料:此步驟主要是人工分析以前得到的資料。為了確保前兩步有效,最簡單
的方法是用文字編輯器開啟資料檔案,査看得到的資料是否為空值。此外,還可以進一步瀏覽數
據,分析是否可以識別出模式;資料中是否存在明顯的異常值,如某些資料點與資料集中的其他
值存在明顯的差異
訓練演算法:將前兩步得到的格式化資料輸入到演算法,從中抽取知識或資訊。這裡得到的知識需要
儲存為計算機可以處理的格式,方便後續步驟使用。如果使用無監督學習演算法,由於不存在目標變數值,故而也不需要訓練演算法,所有與演算法相關的內容都集中在第5步。
測試演算法:這一步將實際使用第4步機器學習得到的知識資訊。為了評估演算法,必須測試算
法工作的效果。對於監督學習,必須已知用於評估演算法的目標變數值;對於無監督學習,也必須用
其他的評測手段來檢驗演算法的成功率。無論哪種情形,如果不滿意演算法的輸出結果,則可以回到第
4步,改正並加以測試。問題常常會跟資料的收集和準備有關,這時你就必須跳回第1步重新開始。
使用演算法:將機器學習演算法轉換為應用程式,執行實際任務,以檢驗上述步驟是否可以
在實際環境中正常工作。此時如果碰到新的資料問題,同樣需要重複執行上述的步驟。

4、總結:

學習機器學習演算法,必須瞭解資料例項,每個資料例項由多個特徵值組成。分類是基本的機
器學習任務,它分析未分類資料,以確定如何將其放人已知群組中。為了構建和訓練分類器,必
須首先輸人大量巳知分類的資料,我們將這些資料稱為訓練樣本集。

5、問題

非監督學習還是不懂,什麼是非監督學習,如果說是不需要有一個最終結果,那麼它這種學習方式又有什麼用呢???

機器(計算機)學習分為有監督和無監督兩個類,基本上可以從他們會不會得到一個特定的標籤(label)輸出來區分。
這裡標籤指的是用來描述某一個物體屬性的話語。比如人類有兩種,我們要區分這兩種人,就根據生理特徵,分別對兩種人打上標籤,一種是[男人],另一種是[女人]。

有監督學習(Supervised Learning)
先來問題化地解釋一下有監督學習:你有一些問題和他們的答案,你要做的有監督學習就是學習這些已經知道答案的問題。然後你就具備了經驗了,這就是學習的成果。然後在你接受到一個新的不知道答案的問題的時候,你可以根據學習得到的經驗,得出這個新問題的答案。(試想一下高考不正是這樣,好的學習器就能有更強的做題能力,考好的分數,上好的大學…)。
我們有一個樣本資料集,如果對於每一個單一的資料根據它的特徵向量我們要去判斷它的標籤(演算法的輸出值),那麼就是有監督學習。通俗的說,有監督學習就是比無監督學習多了一個可以表達這個資料特質的標籤。

我們再來看有監督學習,分為兩個大類:
1.迴歸分析(Regression Analysis):迴歸分析,其資料集是給定一個函式和它的一些座標點,然後通過迴歸分析的演算法,來估計原函式的模型,求出一個最符合這些已知資料集的函式解析式。然後它就可以用來預估其它未知輸出的資料了,你輸入一個自變數它就會根據這個模型解析式輸出一個因變數,這些自變數就是特徵向量,因變數就是標籤。 而且標籤的值是建立在連續範圍的。

2.分類(Classification):其資料集,由特徵向量和它們的標籤組成,當你學習了這些資料之後,給你一個只知道特徵向量不知道標籤的資料,讓你求它的標籤是哪一個?其和迴歸的主要區別就是輸出結果是離散的還是連續的。**

無監督學習(Unsupervised Learning)
“Because we don’t give it the answer, it’s unsupervised learning”。
還是先來問題化地解釋一下無監督學習:我們有一些問題,但是不知道答案,我們要做的無監督學習就是按照他們的性質把他們自動地分成很多組,每組的問題是具有類似性質的(比如數學問題會聚集在一組,英語問題會聚集在一組,物理…)。

所有資料只有特徵向量沒有標籤,但是可以發現這些資料呈現出聚群的結構,本質是一個相似的型別的會聚集在一起。把這些沒有標籤的資料分成一個一個組合,就是聚類(Clustering)。比如Google新聞,每天會蒐集大量的新聞,然後把它們全部聚類,就會自動分成幾十個不同的組(比如娛樂,科技,政治…),每個組內新聞都具有相似的內容結構。

無監督學習還有一個典型的例子就是雞尾酒會問題(聲音的分離),在這個酒會上有兩種聲音,被兩個不同的麥克風在不同的地方接收到,而可以利用無監督學習來分離這兩種不同的聲音。注意到這裡是無監督學習的原因是,事先並不知道這些聲音中有哪些種類(這裡的種類就是標籤的意思)。

而且雞尾酒問題的程式碼實現只要一行,如下:
在這裡插入圖片描述
[注]:內容參考吳恩達在Coursera上的機器學習課程。

自己的思考(舉例)

監督學習,比如上述的高考,每天學習指定的書本上的知識點,知道高考會考的這些知識點,那麼我通學習課本的知識,就知道對應知識點的答案,就能在高考上寫出正確的答案出來。

非監督學習,依舊是高考,但是不是學習課本上的知識,學習的是課外知識,看課外的書,並不知道這些課外知識高考會不會考到,也就是學習的途中不能給出高考會考的知識點的答案,但是這些課外知識存在可能性對結果產生影響,這種資料直接內在的聯絡,就是所謂的非監督學習。