機器學習有多種類型,能夠根據以下規則進行分類:算法
在監督學習中,用來訓練算法的訓練數據包含了答案,稱爲標籤。網絡
下面是一些重要的監督學習算法機器學習
在非監督學習中,你可能猜到了,訓練數據是沒有加標籤的。系統在沒有老師的條件下進行學習。性能
下面是一些最重要的非監督學習算法:學習
一些算法能夠處理部分帶標籤的訓練數據,一般是大量不帶標籤數據加上小部分帶標籤數據。這稱做半監督學習。測試
多數半監督學習算法是非監督和監督算法的結合。例如,深度信念網絡(deep belief networks)是基於被稱爲互相疊加的受限玻爾茲曼機(restricted Boltzmann machines,RBM)的非監督組件。RBM 是先用非監督方法進行訓練,再用監督學習方法進行整個系統微調。rest
強化學習很是不一樣。學習系統在這裏被稱爲智能體(agent),能夠對環境進行觀察,選擇和執行動做,得到獎勵(負獎勵是懲罰)。而後它必須本身學習哪一個是最佳方法(稱爲策略,policy),以獲得長久的最大獎勵。策略決定了智能體在給定狀況下應該採起的行動。ip
在批量學習中,系統不能進行持續學習:必須用全部可用數據進行訓練。這一般會佔用大量時間和計算資源,因此通常是線下作的。首先是進行訓練,而後部署在生產環境且中止學習,它只是使用已經學到的策略。這稱爲離線學習。ci
若是你想讓一個批量學習系統明白新數據(例如垃圾郵件的新類型),就須要從頭訓練一個系統的新版本,使用所有數據集(不只有新數據也有老數據),而後停掉老系統,換上新系統。資源
在在線學習中,是用數據實例持續地進行訓練,能夠一次一個或一次幾個實例(稱爲小批量)。每一個學習步驟都很快且廉價,因此係統能夠動態地學習到達的新數據。
也許最簡單的學習形式就是用記憶學習。若是用這種方法作一個垃圾郵件檢測器,只需標記全部和用戶標記的垃圾郵件相同的郵件 —— 這個方法不差,但確定不是最好的。
不只能標記和已知的垃圾郵件相同的郵件,你的垃圾郵件過濾器也要能標記相似垃圾郵件的郵件。這就須要測量兩封郵件的類似性。一個(簡單的)類似度測量方法是統計兩封郵件包含的相同單詞的數量。若是一封郵件含有許多垃圾郵件中的詞,就會被標記爲垃圾郵件。
這被稱做基於實例學習:系統先用記憶學習案例,而後使用類似度測量推廣到新的例子。
另外一種從樣本集進行概括的方法是創建這些樣本的模型,而後使用這個模型進行預測。這稱做基於模型學習。
將你的數據分紅兩個集合:訓練集和測試集。正如它們的名字,用訓練集進行訓練,用測試集進行測試。對新樣本的錯誤率稱做推廣錯誤(或樣本外錯誤),經過模型對測試集的評估,你能夠預估這個錯誤。這個值能夠告訴你,你的模型對新樣本的性能。
若是訓練錯誤率低(即,你的模型在訓練集上錯誤很少),可是推廣錯誤率高,意味着模型對訓練數據過擬合。
通常使用 80% 的數據進行訓練,保留20%用於測試。
所以,評估一個模型很簡單:只要使用測試集。如今假設你在兩個模型之間猶豫不決(好比一個線性模型和一個多項式模型):如何作決定呢?一種方法是兩個都訓練,,而後比較在測試集上的效果。
如今假設線性模型的效果更好,可是你想作一些正則化以免過擬合。問題是:如何選擇正則化超參數的值?一種選項是用 100 個不一樣的超參數訓練100個不一樣的模型。假設你發現最佳的超參數的推廣錯誤率最低,好比只有 5%。而後就選用這個模型做爲生產環境,可是實際中性能不佳,偏差率達到了 15%。發生了什麼呢?
答案在於,你在測試集上屢次測量了推廣偏差率,調整了模型和超參數,以使模型最適合這個集合。這意味着模型對新數據的性能不會高。
這個問題一般的解決方案是,再保留一個集合,稱做驗證集合。用測試集和多個超參數訓練多個模型,選擇在驗證集上有最佳性能的模型和超參數。當你對模型滿意時,用測試集再作最後一次測試,以獲得推廣偏差率的預估。
爲了不「浪費」過多訓練數據在驗證集上,一般的辦法是使用交叉驗證:訓練集分紅互補的子集,每一個模型用不一樣的子集訓練,再用剩下的子集驗證。一旦肯定模型類型和超參數,最終的模型使用這些超參數和所有的訓練集進行訓練,用測試集獲得推廣偏差率。