機器學習實戰(1)—— 機器學習基礎

老闆:小韓啊,來來來!工程是否是寫夠了啊?算法

我:(what!!!)emmmm,還行還行。網絡

老闆:一看你就是寫夠了。最近公司要搞機器學習,你帶頭來學習一下吧!機器學習

我:行啊,工程代碼我早就不想寫了。那就學習一下吧!編輯器

老闆:好,那就先去看《機器學習》吧!性能

荒廢了大四很久的時間,最近,本身總算是慢慢提起學習的興趣,開始學習機器學習了。之前歷來沒有接觸過機器學習,因此在學習的初期,本身也向學長學姐請教了一下,因而決定從《機器學習實戰》這本書開始入門機器學習。學習

爲何選擇這本書,其實,整體來看,這本書比較基礎,適合入門。對於一些數學定理,也就是拿過來用,並不注重這些定理的高深的推導過程。這對我一個數學渣渣來講,正好能夠接受。測試

做爲一名標準的理工男,我也算是第一次寫文章,可能會有語病問題。有些東西可能寫的很差,說的不明白,還望你們見諒。網站

好了,開篇的廢話我也很少說了,直接進入「機器學習」的世界!設計

1.1 何謂機器學習

除卻一些可有可無的狀況,咱們很難直接從原始數據自己得到所需信息。3d

例如,對於垃圾郵件的檢測,偵測一個單詞是否存在並無太大的做用,然而當某幾個特定單詞同時出現時,再輔 以考察郵件長度及其餘因素,咱們就能夠更準確地斷定該郵件是否爲垃圾郵件。

簡單地說,機器學習就是把無序的數據轉換成有用的信息,讓機器向咱們的大腦同樣去學習去判斷。

其實,書中還有更多的信息去介紹機器學習的背景,由於大部分都是理論套話,這裏我就不給你們列出了,有興趣的能夠直接去看《機器學習實戰》這本書。

咱們接下來直接看一下與機器學習有關的術語。

1.2 關鍵術語

在踏入任何一個領域以前,咱們都有必要去了解該領域所讀應的術語,機器學習也不例外。

好了,老闆來了。

老闆:小韓啊,看的怎麼樣了?機器學習裏面的一些術語明白了嗎??

我:明白了!明白了!So Easy!

老闆:hhhh,好。那你給我係統的介紹一下吧。

我:好嘞!(求升職加薪臉)

下面,咱們就從一個鳥類分類系統來介紹機器學習中的相關術語。

這類系統很是有趣,一般與機器學習中的專家系統有關。開發出可以識別鳥類的計算機軟件,鳥類學者就能夠退休了。由於鳥類學者是研究鳥類的專家,所以咱們因此說建立的是一個專家系統。

下表是咱們用於區分不一樣鳥類須要使用的四個不一樣的屬性值,咱們選用體重、翼展、有無腳蹼以及後背顏色做爲評測基準。現實中,你可能會想測量更多的值。一般的作法是測量全部可測屬性,然後再挑選出重要部分。下面測量的這四種值稱之爲特徵,也能夠稱做屬性,咱們接下來一概將其稱爲特徵。表中的每一行都是一個具備相關特徵的實例

編號 體重(克) 翼展(釐米) 腳蹼 後背顏色 種屬
1 1000.1 125.0 棕色 紅尾鵟
2 3000.7 200.0 灰色 鷺鷹
3 3300.0 220.3 灰色 鷺鷹
4 4100.0 136.0 黑色 普通潛鳥
5 3.0 11.0 綠色 瑰麗蜂鳥
6 570.0 75.0 黑色 象牙喙啄木鳥

老闆:等一下,你這光有文字,太抽象了。

我:那你等一下,我給你畫張圖,你就明白了。

老闆:不錯不錯,這樣好理解多了!

若是你看到了一隻象牙喙啄木鳥,請立刻通知我!並且千萬不要告訴任何人。在我到達以前, 必定要看住它,別讓它飛跑了。(任何發現活的象牙喙啄木鳥的人均可以獲得5萬美圓的獎勵)

機器學習的主要任務就是分類。接下來咱們就利用上表進行分類,標識出象牙喙啄木鳥從而獲取5萬美圓的獎勵。

你們都想從衆多其餘鳥類中分辨出象牙喙啄木鳥,並從中獲利。

簡單的作法是安裝一個餵食器,而後僱用一位鳥類學者,觀察在附近進食的鳥類。若是發現象牙喙啄木鳥,則通知咱們。這種方法太昂貴了,並且專家在同一時間只能出如今一個地方。

咱們能夠自動化處理上述過程,安裝多個帶有照相機的餵食器,同時接入計算機用於標識前來進食的鳥。 一樣咱們能夠在餵食器中放置稱重儀器以獲取鳥的體重,利用計算機視覺技術來提取鳥的翅長、 腳的類型和後背色彩。假定咱們能夠獲得所需的所有特徵信息,那該如何判斷飛入進食器的鳥是 不是象牙喙啄木鳥呢?

這個任務就是分類,有不少機器學習算法很是善於分類。本例中的類別就是鳥的物種,更具體地說,就是區分是否爲象牙喙啄木鳥。 最終咱們決定使用某個機器學習算法進行分類,首先須要作的是算法訓練,即學習如何分類。 一般咱們爲算法輸入大量已分類數據做爲算法的訓練集訓練集是用於訓練機器學習算法的數據樣本集合,那麼上表是包含六個訓練樣本的訓練集,每一個訓練樣本有4種特徵、一個目標變量。目標變量是機器學習算法的預測結果,在分類算法中目標變量的類型一般是標稱型的, 而在迴歸算法中一般是連續型的。訓練樣本集必須肯定知道目標變量的值,以便機器學習算法能夠發現特徵和目標變量之間的關係。正如前文所述,這裏的目標變量是物種,也能夠簡化爲標稱型的數值。咱們一般將分類問題中的目標變量稱爲類別,並假定分類問題只存在有限個數的類別。

老闆:那你繼續畫圖!

我:遵命!

注意:特徵或者屬性一般是訓練樣本集的列,它們是獨立測量獲得的結果,多個特徵聯繫在一 起共同組成一個訓練樣本。

好了,咱們如今已經有了數據,也作好了分類訓練的工做,接下來就是測試工做了。

爲了測試機器學習算法的效果,一般使用兩套獨立的樣本集:訓練數據測試數據

  1. 當機器學習程序開始運行時,使用訓練樣本集做爲算法的輸入,訓練完成以後輸入測試樣本。
  2. 輸入測試樣本時並不提供測試樣本的目標變量,由程序決定樣本屬於哪一個類別。比較測試樣本預測的目標變量值與實際樣本類別之間的差異,就能夠得出算法的實際精確度。

後面咱們將會引入更好地使用測試樣本和訓練樣本信息的方法,這裏就再也不詳述。

假定這個鳥類分類程序,通過測試知足精確度要求,是否咱們就能夠看到機器已經學會了如何區分不一樣的鳥類了呢?這部分工做稱之爲知識表示,某些算法能夠產生很容易理解的知識表示,而某些算法的知識表示也許只能爲計算機所理解。知識表示能夠採用規則集的形式,也能夠採用機率分佈的形式,設置能夠是訓練樣本集中的一個實例。在某些場合中,人們可能並不想創建一個專家系統,而僅僅對機器學習算法獲取的信息感興趣。此時,採用何種方式表示知識就顯得很是重要了。


好了,說了這麼多,可能會有點多,這裏由於是術語,定義我也不能本身胡謅,我就結合西瓜書,給你們稍微總結一下基本的術語,可能說的不是很清楚,若是有什麼不對的地方,歡迎你們指正。固然,在後面的學習中,咱們會接觸到更多的術語,這裏我就很少贅述了。

  1. 實例(樣本):表中每一行是關於一個事件或者對象的描述。
  2. 特徵(feature):反映事件或對象在某方面的表現或性質的事項,也叫作屬性(attribute),例如體重、是否有腳蹼等。
  3. 屬性值(attribute value):屬性上的取值。
  4. 數據集(data set):樣本的集合。
  5. 訓練集(training set):用做訓練的數據集。
  6. 測試集(test set):用做測試的數據集。

老闆:小夥子幹得不錯啊!

我:還行,還行!

老闆:今晚給你加雞腿,你就在公司好好幹!

我:(臉上笑嘻嘻,心裏mmp)

1.3 機器學習的主要任務

上面的例子中,咱們已經介紹了機器學習是如何解決分類問題的,它的主要任務就是將實例數據劃分到合適的分類中去。

機器學習的另外一項任務是迴歸(regression),它用於預測數值型數據。大多數人都見多回歸的例子——數據擬合曲線:經過給定數據點的最優擬合曲線。

分類和迴歸術語監督學習,之因此稱之爲監督學習,是由於這類算法必須知道預測什麼,即目標變量的分類信息。

與監督學習相對應的就是無監督學習,此時數據沒有類別信息,也不會給定目標值。

  1. 將數據集合分紅由相似的對象組成的多個類的過程被稱爲聚類
  2. 將尋找描述數據統計值 的過程稱之爲密度估計

此外,無監督學習還能夠減小數據特徵的維度,以便咱們可使用二維或三維圖形更加直觀地展現數據信息。

下面這個表格是《機器學習實戰》這本書上的,由於我也是入門級,因此就直接拿過來用了。

1.監督學習的用途

分類 迴歸
k-近鄰算法 線性迴歸
樸素貝葉斯算法 局部加權線性迴歸
支持向量機(SVM) Ridge線性迴歸
決策樹 Lasso最小回歸係數估計

2.無監督學習的用途

聚類 密度估計
K-均值 最大指望算法
DBSCAN Parzen窗設計

好吧,這麼多東西都是啥玩意?我也不知道。後面,咱們慢慢學習,揭開這神祕的面紗!

1.4 如何選擇合適的算法

老闆:小韓啊,最近機器學期看得怎麼樣了啊?

我:還行還行啦,基本的術語都搞明白了啊,也瞭解了一些算法和機器學習的分類了。

老闆:不錯,不錯。那你知道如何選擇合適的機器學習算法嗎?

我:那固然了。書上寫的仍是很明白的!

老闆:那你給我講講!

老闆啊,這麼多機器學習算法,咱們該如何進行選擇呢?其實,有兩個問題須要咱們考慮。

  1. 咱們使用機器學習算法的目的,想要算法完成何種任務。好比,是預測明天下雨的機率仍是對投票者按照興趣分組呢?
  2. 須要分析和收集的數據是什麼

簡單點,就是目的和數據,也就是咱們用什麼數據作什麼用。

首先考慮使用機器學習算法的目的。若是想要預測目標變量的值,則能夠選擇監督學習算法, 不然能夠選擇無監督學習算法。肯定選擇監督學習算法以後,須要進一步肯定目標變量類型,若是目標變量是離散型,如是/否、1/2/三、A/B/C或者紅/黃/黑等,則能夠選擇分類器算法;若是目標變量是連續型的數值,如0.0~100.00、-999~999或者+∞~-∞等,則須要選擇迴歸算法。 若是不想預測目標變量的值,則能夠選擇無監督學習算法。進一步分析是否須要將數據劃分爲離散的組。若是這是惟一的需求,則使用聚類算法;若是還須要估計數據與每一個分組的類似程度,則須要使用密度估計算法。

好吧,這麼多字,有點煩哦,不如來一張圖片。

在大多數狀況下,上面給出的選擇方法都能幫助讀者選擇恰當的機器學習算法,但這也並不是一成不變。

其次須要考慮的是數據問題。咱們應該充分了解數據,對實際數據瞭解得越充分,越容易建立符合實際需求的應用程序。主要應該瞭解數據的如下特性:

  1. 特徵值是離散型變量仍是連續型變量
  2. 特徵值中是否存在缺失的值
  3. 何種緣由形成缺失值
  4. 數據中是否存在異常值
  5. 某個特徵發生的頻率如何(是否罕見得如同海底撈針)等等。

充分了解上面提到的這些數據特性能夠縮短選擇機器學習算法的時間。

咱們只能在必定程度上縮小算法的選擇範圍,通常並不存在好的算法或者能夠給出好結果的算法,同時還要嘗試不一樣算法的執行效果。對於所選的每種算法,均可以使用其餘的機器學習技術來改進其性能。在處理輸入數據以後,兩個算法的相對性能也可能會發生變化。後續章節咱們將進一步討論此類問題,通常說來發現好算法的關鍵環節是反覆試錯的迭代過程。

1.5 開發機器學習應用程序的步驟

在《機器學習實戰》這本書中,開發和使用機器學習算法開發應用程序,一般遵循如下的步驟。

  1. 收集數據。咱們可使用不少方法收集樣本數據,如:製做網絡爬蟲從網站上抽取數據、 從RSS反饋或者API中獲得信息、設備發送過來的實測數據(風速、血糖等)。提取數據的方法非 常多,爲了節省時間與精力,可使用公開可用的數據源。
  2. 準備輸入數據。獲得數據以後,還必須確保數據格式符合要求。在這本書中採用的格式是Python語言的List。使用這種標準數據格式能夠融合算法和數據源,方便匹配操做。此外還須要爲機器學習算法準備特定的數據格式,如某些算法要求特徵值使用特定的格式, 一些算法要求目標變量和特徵值是字符串類型,而另外一些算法則可能要求是整數類型。
  3. 分析輸入數據。此步驟主要是人工分析之前獲得的數據。爲了確保前兩步有效,簡單的方法是用文本編輯器打開數據文件,查看獲得的數據是否爲空值。此外,還能夠進一步瀏覽數據,分析是否能夠識別出模式;數據中是否存在明顯的異常值,如某些數據點與數據集中的其餘 值存在明顯的差別。經過一維、二維或三維圖形展現數據也是不錯的方法,然而大多數時候咱們 獲得數據的特徵值都不會低於三個,沒法一次圖形化展現全部特徵。本書的後續章節將會介紹提 煉數據的方法,使得多維數據能夠壓縮到二維或三維,方便咱們圖形化展現數據。 這一步的主要做用是確保數據集中沒有垃圾數據。若是是在產品化系統中使用機器學習算法 而且算法能夠處理系統產生的數據格式,或者咱們信任數據來源,能夠直接跳過第3步。此步驟須要人工干預,若是在自動化系統中還須要人工干預,顯然就下降了系統的價值。
  4. 訓練算法。機器學習算法從這一步才真正開始學習。根據算法的不一樣,第4步和第5步是機器學習算法的核心。咱們將前兩步獲得的格式化數據輸入到算法,從中抽取知識或信息。這裏 獲得的知識須要存儲爲計算機能夠處理的格式,方便後續步驟使用。 若是使用無監督學習算法,因爲不存在目標變量值,故而也不須要訓練算法,全部與算法相關的內容都集中在第5步。
  5. 測試算法。這一步將實際使用第4步機器學習獲得的知識信息。爲了評估算法,必須測試算法工做的效果。對於監督學習,必須已知用於評估算法的目標變量值;對於無監督學習,也必須用 其餘的評測手段來檢驗算法的成功率。不管哪一種情形,若是不滿意算法的輸出結果,則能夠回到第 4步,改正並加以測試。問題經常會跟數據的收集和準備有關,這時你就必須跳回第1步從新開始。
  6. 使用算法。將機器學習算法轉換爲應用程序,執行實際任務,以檢驗上述步驟是否能夠 在實際環境中正常工做。此時若是碰到新的數據問題,一樣須要重複執行上述的步驟。

這些都是書上的原內容,我以爲總結得很好,因此就直接拿過來給你們看了。

老闆:小韓啊,機器學習你也算是基本入門了。不只掌握了機器學習的相關術語,還掌握瞭如何選擇機器學習算法和開發機器學習應用程序的步驟,總的來講仍是很不錯的!

我:謝謝老闆誇獎,那加工資不?

老闆:你說啥?工做過輕鬆了?好,那明天就給你安排新的任務,幹得好能夠考慮加雞腿!!!

我:溜了溜了,今天就到這裏了!


最後,歡迎你們關注個人公衆號,有什麼事情歡迎你們給我留言!!!

相關文章
相關標籤/搜索