機器學習實戰-概論

機器學習的分類:

機器學習有多種類型,能夠根據以下規則進行分類:算法

  • 是否在人類監督下進行訓練(監督,非監督,半監督和強化學習)
  • 是否能夠動態漸進學習(在線學習 vs 批量學習)
  • 它們是否只是經過簡單地比較新的數據點和已知的數據點,或者在訓練數據中進行模式識別,以創建一個預測模型,就像科學家所作的那樣(基於實例學習 vs 基於模型學習)

監督學習:

在監督學習中,用來訓練算法的訓練數據包含了答案,稱爲標籤。網絡

下面是一些重要的監督學習算法機器學習

  • K近鄰算法
  • 線性迴歸
  • 邏輯迴歸
  • 支持向量機(SVM)
  • 決策樹和隨機森林
  • 神經網絡

非監督學習:

在非監督學習中,你可能猜到了,訓練數據是沒有加標籤的。系統在沒有老師的條件下進行學習。性能

下面是一些最重要的非監督學習算法:學習

  • 聚類
    K均值
    層次聚類分析(Hierarchical Cluster Analysis,HCA)
    指望最大值
  • 可視化和降維
    主成分分析(Principal Component Analysis,PCA)
    核主成分分析
    局部線性嵌入(Locally-Linear Embedding,LLE)
    t-分佈鄰域嵌入算法(t-distributed Stochastic Neighbor Embedding,t-SNE)
  • 關聯性規則學習
    Apriori 算法
    Eclat 算法

半監督學習:

一些算法能夠處理部分帶標籤的訓練數據,一般是大量不帶標籤數據加上小部分帶標籤數據。這稱做半監督學習。測試

多數半監督學習算法是非監督和監督算法的結合。例如,深度信念網絡(deep belief networks)是基於被稱爲互相疊加的受限玻爾茲曼機(restricted Boltzmann machines,RBM)的非監督組件。RBM 是先用非監督方法進行訓練,再用監督學習方法進行整個系統微調。rest

強化學習:

強化學習很是不一樣。學習系統在這裏被稱爲智能體(agent),能夠對環境進行觀察,選擇和執行動做,得到獎勵(負獎勵是懲罰)。而後它必須本身學習哪一個是最佳方法(稱爲策略,policy),以獲得長久的最大獎勵。策略決定了智能體在給定狀況下應該採起的行動。ip

批量學習:

在批量學習中,系統不能進行持續學習:必須用全部可用數據進行訓練。這一般會佔用大量時間和計算資源,因此通常是線下作的。首先是進行訓練,而後部署在生產環境且中止學習,它只是使用已經學到的策略。這稱爲離線學習。ci

若是你想讓一個批量學習系統明白新數據(例如垃圾郵件的新類型),就須要從頭訓練一個系統的新版本,使用所有數據集(不只有新數據也有老數據),而後停掉老系統,換上新系統。資源

在線學習:

在在線學習中,是用數據實例持續地進行訓練,能夠一次一個或一次幾個實例(稱爲小批量)。每一個學習步驟都很快且廉價,因此係統能夠動態地學習到達的新數據。

基於實例學習:

也許最簡單的學習形式就是用記憶學習。若是用這種方法作一個垃圾郵件檢測器,只需標記全部和用戶標記的垃圾郵件相同的郵件 —— 這個方法不差,但確定不是最好的。

不只能標記和已知的垃圾郵件相同的郵件,你的垃圾郵件過濾器也要能標記相似垃圾郵件的郵件。這就須要測量兩封郵件的類似性。一個(簡單的)類似度測量方法是統計兩封郵件包含的相同單詞的數量。若是一封郵件含有許多垃圾郵件中的詞,就會被標記爲垃圾郵件。

這被稱做基於實例學習:系統先用記憶學習案例,而後使用類似度測量推廣到新的例子。

基於模型學習:

另外一種從樣本集進行概括的方法是創建這些樣本的模型,而後使用這個模型進行預測。這稱做基於模型學習。

機器學習的挑戰:

  • 錯誤的數據
  1. 訓練數據量不足(至少數千以上)
  2. 沒有表明性的訓練數據
  3. 低質量數據(異常值和噪聲太多,須要手工修正)
  4. 不相關的特徵(特徵選擇,特徵提取)
  5. 過擬合訓練數據(簡化模型,收集更多訓練數據,減小數據噪聲)
  6. 欠擬合訓練數據(更多參數的強模型,用更好的特徵訓練算法)

測試和確認:

將你的數據分紅兩個集合:訓練集和測試集。正如它們的名字,用訓練集進行訓練,用測試集進行測試。對新樣本的錯誤率稱做推廣錯誤(或樣本外錯誤),經過模型對測試集的評估,你能夠預估這個錯誤。這個值能夠告訴你,你的模型對新樣本的性能。

若是訓練錯誤率低(即,你的模型在訓練集上錯誤很少),可是推廣錯誤率高,意味着模型對訓練數據過擬合。

通常使用 80% 的數據進行訓練,保留20%用於測試。

所以,評估一個模型很簡單:只要使用測試集。如今假設你在兩個模型之間猶豫不決(好比一個線性模型和一個多項式模型):如何作決定呢?一種方法是兩個都訓練,,而後比較在測試集上的效果。

如今假設線性模型的效果更好,可是你想作一些正則化以免過擬合。問題是:如何選擇正則化超參數的值?一種選項是用 100 個不一樣的超參數訓練100個不一樣的模型。假設你發現最佳的超參數的推廣錯誤率最低,好比只有 5%。而後就選用這個模型做爲生產環境,可是實際中性能不佳,偏差率達到了 15%。發生了什麼呢?

答案在於,你在測試集上屢次測量了推廣偏差率,調整了模型和超參數,以使模型最適合這個集合。這意味着模型對新數據的性能不會高。

這個問題一般的解決方案是,再保留一個集合,稱做驗證集合。用測試集和多個超參數訓練多個模型,選擇在驗證集上有最佳性能的模型和超參數。當你對模型滿意時,用測試集再作最後一次測試,以獲得推廣偏差率的預估。

爲了不「浪費」過多訓練數據在驗證集上,一般的辦法是使用交叉驗證:訓練集分紅互補的子集,每一個模型用不一樣的子集訓練,再用剩下的子集驗證。一旦肯定模型類型和超參數,最終的模型使用這些超參數和所有的訓練集進行訓練,用測試集獲得推廣偏差率。

相關文章
相關標籤/搜索