機器學習實戰(第一篇)-機器學習基礎

      最近在從事一些大數據分析的項目,接觸到了時下非常熱門的機器學習的概念。作爲剛剛進入這一行的從業人員,我也經歷了迷茫期,不知道該如何去學習這一門新興學科。在網上查閱資料的時候,也沒有發現能夠有由淺入深介紹機器學習知識的資料。於是,自己想結合自己的學習過程,記錄我是如何學習機器學習這一門新學科的。

       與學習任何一門知識一樣,我們先從基礎的概念層面對機器學習做一個底層的全面理解和認知。本篇文章中我會從四個方面介紹機器學習的基礎概念。

1. 機器學習的簡單概述

  • 機器學習能讓我們自數據集中受到啓發,換句話說,我們會利用計算機來彰顯數據背後的真實含義。
  • 機器學習就是把無序的數據轉換成有用的信息。
  • 如何使用機器學習算法進行分類:首先需要做的是算法訓練,也就是學習如何分類;通常使用兩套獨立的樣本集:訓練數據和測試數據。當機器學習程序開始運行時,使用訓練樣本集作爲算法的輸入,訓練完成之後輸入測試樣本。
  • 通常我們爲算法輸入大量已分類數據作爲算法的訓練集。訓練集是用於訓練機器學習算法的數據樣本集合。

2. 機器學習的主要任務

    監督學習:這類算法必須知道預測什麼,即目標變量的分類信息,監督學習按目標不同分爲以下兩類
  •     分類:將實例數據劃分到合適的分類中;
  •     迴歸:主要用於預測數值型數據;
    無監督學習:沒有類別信息,也不會給定目標值;包含
  •     聚類:將數據集合分成類似的對象組成的多個類的過程;
  •     密度估計:將尋找描述數據統計值的過程

3. 如何選擇合適的算法

    選擇算法的時候必須考慮下面兩個問題:一.使用機器學習的目的,想要完成何種任務,比如是預測明天下雨的概率還是對投票者按照興趣分組;二.需要分析或收集的數據是什麼。
    首先考慮使用機器學習算法的目的:如果想要預測目標變量的值,則可以選擇監督學習算法,否則可以選擇無監督學習方法。
     確定使用監督學習算法之後,需要進一步確定目標變量類型,如果目標變量是離散型,如是/否、1/2/3、A/B/C等,則可以選擇分類器算法;如果目標變量是連續型的數值,如0.0-100.00,-999-999,則需要選擇迴歸算法
      如果不想預測目標變量的值,則可以選擇無監督學習算法。進一步分析是否需要將數據劃分爲離散的組。如果這是唯一的需求,則使用聚類算法;如果還需要估計數據與每個分組的相似程度,則需要使用密度估算算法
      其次需要考慮的是數據問題。在實施具體機器學習策略之前,我們應該充分了解數據,對實際數據瞭解的越充分,越容易創建符合實際需求的應用程序。主要應該瞭解數據的以下特性:
  • 特徵值是離散型變量還是連續型變量;
  • 特徵值是否存在缺失的值;
  • 何種原因造成缺失值;
  • 數據中是否存在異常值;
  • 某個特徵發生的頻率如何

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

     一般在開發機器學習應用程序時,我們可以遵循以下的步驟:
  • 收集數據:我們可以使用很多方法收集樣本數據。如:製作網絡爬蟲從網站上抽取數據、從RSS反饋或API中得到信息、設備發送過來的實測數據(風速、水溫)。提取數據的方法非常多,爲了節省時間與精力,可以使用公開可用的數據源;
  • 準備輸入數據:得到數據後,還必須確保數據格式符合要求,一般我們可以使用Python語言的List類型,使用這種標準數據格式可以融合算法和數據源,方便匹配操作;此外,我們還需要爲機器學習算法準備特定的數據格式。
  • 分析輸入數據:此步驟主要是人工分析以前得到的數據。爲了確保前兩步有效,最簡單的方法就是使用文本編輯器打開數據文件,查看數據是否爲空值。此外,還可以進一步瀏覽數據,分析是否可以識別出模式;數據是否存在明顯的異常值;這一步主要是確保數據集中沒有垃圾數據。
  • 訓練算法:機器學習算法從這一步才真正開始學習。我們將前面得到的格式化數據輸入到算法,從中抽取知識或信息。這裏得到的知識需要存儲爲計算機可以處理的格式,方便後續步驟使用。如果使用無監督學習算法,由於不存目標變量值,故而也不需要訓練算法,所有與算法相關的內容都集中在第五步。
  • 測試算法:這一步將實際使用第四步機器學習中得到的知識信息。爲了評估算法,必須測試算法工作的效果。對於監督學習,必須已知用於評估算法的目標變量值;對於無監督學習,也必須用其他的評估手段來檢測算法的成功率。無論哪種情形,如果不滿意算法的輸出結果,則可以回到第四步,改正並加以測試。
  • 使用算法:將機器學習算法轉換爲應用程序,執行實際任務,以檢驗上述步驟是否可以在實際環境中正常工作。

5. 學習機器學習的工具

       工欲善其事,必先利其器。鑑於此,我們需要首先確定我們將要使用的工具。我學習過程中選用的是Python,主要有以下三個原因:Python的語法清晰;易於操作純文本文件;使用廣泛,存在大量的開發文檔。
    
發佈了105 篇原創文章 · 獲贊 238 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章