机器学习之监督学习基础
1.機器學習分為:監督學習、無監督學習、半監督學習等幾類:?
(1)監督學習:從給定的訓練數據集中學習出一個函數,當新的數據到來時,可以根據這個函數預測結果。監督學習的訓練集要求是包括輸入和輸出,也可以說是特征和目標。訓練集中的目標是由人標注的。常見的監督學習算法包括回歸分析和統計分類。?
(2)無監督學習:與監督學習相比,訓練集沒有人為標注的結果。常見的無監督學習算法有聚類。?
(3)半監督學習:是監督學習和無監督學習相結合的一種學習方法。它主要考慮如何利用少量的樣本標注和大量的未標注樣本進行訓練和分類的問題。半監督學習對于減少標注代價,提高學習機器性能具有非常大的實際意義。?
2.監督學習主要研究的兩塊內容是分類和回歸,即分類和回歸歸屬于監督學習的范疇:?
(1) 分類:在監督學習中,如果預測的變量是離散的(例如 -1,+1 這種)我們就稱為分類。常見的分類算法有:決策樹,K近鄰算法(KNN),樸素貝葉斯,支持向量機(SVM),神經網絡,Logistic回歸等。?
(2) 回歸:在監督學習中,如果預測的變量是連續的,就稱其為回歸。在回歸分析中如果只包含一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸稱為一元線性回歸。如果回歸分析中包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關系,則稱為多元線性回歸。回歸和分類的主要區別是預測的值域不一樣,分類常用算法大多也適用于回歸。?
3.開發機器學習應用程序的步驟:?
(1) 收集數據。?
(2) 準備輸入數據:不同的算法對數據的格式要求可能不同,所以有時需要對收集的數據進行格式轉換。?
(3) 分析輸入數據:這一步只要通過觀察來確保數據集中沒有垃圾數據。?
(4) 訓練算法:機器學習算法從這一步才真正的開始學習,主要的通過特定的訓練集輸入到分類算法,確定算法模型的過程。 (5) 測試算法:用于檢測訓練算法階段訓練出來的模型是否靠譜,通常使用已知目標值的樣本作為輸入,觀察其準確率。?
(6) 使用算法:將機器學習算法轉換為應用程序,執行實際任務。?
python的語法清晰,易于操作純文本文件,開發文檔豐富,且有許多線程的數據函數庫(例如:NumPy)。鑒于這些特點,python是常用的機器學習程序的開發語言之一。?
二、監督學習常用算法
K-近鄰算法(KNN):?
簡述:簡單的說,k-近鄰算法采用測量不同特征值之間的距離方法進行分類。工作原理是:存在一個訓練樣本集,且樣本集中的每個數據都存在類別標簽。將待預測類別的一條數據輸入,計算這條數據與訓練樣本集中數據的距離(距離的計算方式一般是將數據特征值數值化,用概率統計等數學工具計算),然后選取訓練樣本集中與待測數據距離最近的K條數據(通常K是小于20的整數)。這K條訓練樣本中類別出現最頻繁的類別標簽即作為帶預測數據的類別標簽。?
一個python版本的KNN算法實現:?
ps:參數說明:待分類的輸入向量inX,訓練樣本集dataSet,類別標簽向量 labels,帶選取的k值。采用的是歐式距離公式。?
1.1 歸一化數值:?
簡述:在進行K鄰近算法計算時,需要計算待分類數據的每個特征值和訓練樣本每個特征值的距離,但是每個特征值的量級或單位可能是不同的(例如特征向量[0.1,12000,1.1,500]),所以需要將各個維度的特征值進行歸一化(說白了就是統一單位和量級,在同一把標尺下衡量各個特征的距離)。?
常用來歸一化數值的公式為:newValue = (oldValue-min)/(max-min)?
1.2 總結:k-近鄰算法(KNN)是分類數據最簡單最有效的算法。k-近鄰算法是基于實例的學習,使用算法時我們必須有接近實際數據的訓練樣本數據。k-近鄰算法必須保存全部的數據集,如果訓練數據集很大,必須使用大量的存儲空間。同時可能非常耗時。k-近鄰算法的另一個缺陷是無法給出任何數據的基礎結構信息,因此我們無法知曉平均樣本和典型事例樣本的具體特征。但是概率測量的分類方法則可以解決這個問題。?
2.決策樹:?
簡述:決策樹是由一個決策圖和可能的結果組成,用來創建到達目標的規劃。決策樹建立并用來輔助決策,是一種特殊的樹結構。決策樹是一個預測模型,他代表的對象屬性和對象值之間的一種映射關系。樹中每個結點表示某個對象,而每個分叉路徑則代表某個可能的屬性值。數據挖掘中決策樹是一種經常要用到的技術,可以用于分析數據,也可以用來預測。?
2.1決策樹的構建:?
在構造決策樹時,需要解決的第一個問題就是,當前數據集上哪個特征在劃分數據分類時起決定性作用。為了找到決定性的特征,劃分出最好的結果,必須評估每個特征。完成測試評估之后,原始數據被劃分為幾個數據子集。這些數據子集會分布在第一個決策點的所有分支上。如果某個分支下的數據屬于同一類型,則無需進一步對數據集進行分割。如果數據子集內的數據不屬于同一類型,則需要重復劃分數據子集的過程。如何劃分數據子集的算法和劃分原始數據集的方法相同,直到所有具有相同類型的數據都在一個數據子集。?
2.2 香農熵:?
熵定義為信息的期望值,是集合信息的一種度量方式。熵這個名字來源于信息論之父 克勞德.香農。?
計算香農熵的公式: H = -F(i=1,n)P(Xi)logxP(Xi), -F(i=i,n)代表求和函數。?
ps:另一個度量集合無序程度的方法是基尼不純度(Gini impurity),簡單的說就是從一個數據集中隨機選取子項,度量其被錯誤的劃分到其他組里的概率。?
2.3 構建樹的python代碼:?
3.樸素貝葉斯(基于概率論的分類方法):?
樸素貝葉斯是貝葉斯決策理論的一部分,貝葉斯理論的核心思想是為數據選擇高概率的類別。(而樸素貝葉斯之所以"樸素",是因為這個形式化過程只做最原始,最簡單的假設)?
3.1 貝葉斯公式:p(c|x) = p(x|c)p(c)/p(x)?
簡述:當x發生時c發生的概率等于當c發生時x的概率乘以c發生的概率除以x發生的概率。(以條件概率為基礎推導所得)?
3.2 樸素貝葉斯的條件假設(就說說究竟樸素在哪):?
由統計學得知,如果每個特征需要N個樣本,那么對于10個特征將需要N的10次方個樣本,樣本數是隨著特征數成指數增長的。但是如果特征之間相互獨立,則樣本數就可以從N的10次方,減少為 N*10個。所以樸素貝葉斯基于貝葉斯理論做出的兩個假設是:?
(1) 數據的特征之間相互獨立,即特征A發生與否不會影響特征B的發生的概率。?
(2) 各個特征之間同等重要(決策樹的理論則是一定要找出一個關鍵特征)。?
3.3 先驗概率和后驗概率:?
(1) 先驗概率:是通過現有掌握的部分資料計算出來的概率,通常由經驗豐富的專家純主觀的估計所得。(貝葉斯公式中的 p(x|c)即為先驗概率,通過訓練樣本計算所得) (2) 后驗概率:可以通過Bayes定理,用先驗概率和似然函數計算出來。(貝葉斯公式中的 p(c|x)即為后延概率,也是我們需要計算的概率)。?
ps:貝葉斯公式計算的過程即為,通過訓練樣本數據計算 先驗概率 P(x|c)和P(c),然后計算測試樣本的特征概率 p(x),由此可以推導出測試樣本的后驗概率 p(c|x).其實說白了樸素貝葉斯就是根據已知樣本的概率去推斷總體的概率,整個模型的準確性的關鍵就是樣本先驗概率的計算的準確性。?
3.3 實現貝葉斯計算的DEMO:?
4.支持向量機(SVM):?
簡述:支持向量機(SVM)是一種監督學習的方法,通俗來講它是一種二分類模型,其基本模型定義為特征空間上的間隔最大的線性分類器,即學習支持向量機的策略便是間隔最大話,最終可轉化為一個凸二次規劃問題的求解。?
4.1基礎概念:?
(1)分隔超平面:分隔超平面即為分類的決策邊界,分布在超平面一側的數據都屬于某個類別,而分布在另一側的數據則屬于另外一個類別。?
(2)支持向量(support vector):就是離分隔超平面最近的那些點。?
(3)SVM有很多實現,其中最流行的一種實現是SMO(最小優化算法)。?
(4)核方法或者說核技巧會將數據(有時是非線性數據)從一個低維的空間映射到一個高維的空間,可以將一個在低維空間中的非線性問題轉換成高維的線性問題來求解。?
4.2 SVM通俗解釋:?
SVM對數據進行分類的時候就是尋找一個最優化超平面的過程。這個最優化超平面使得離它比較近的點能有更大的間隔。也就是不考慮所有點都必須遠離超平面,而是只關心求得超平面能夠讓所有點中離它最近的點(支持向量)有更大間距。形象的說,如果要在紙上尋找一條折線,按照某條折線折疊后,里折線最近的點的間距比其它折線都要大。?
4.3 SVM的推到實現還是很復雜的,可以參考一篇blog?
http://blog.sina.com.cn/s/blog_4298002e010144k8.html?
5.人工神經網絡(ANN):?
簡述:簡稱神經網絡(NN),是一種模仿生物神經網絡的結構和功能的數學模型。現代神經網絡是一種非線性統計數據建模工具,常用來對輸入和輸出間的關系進行建模,或用來探索數據的模式。其一個比較貼切的定義是:人工神經網絡是由人工建立的以有向圖為拓撲結構的動態系統,它通過對連續或斷續的輸入作狀態響應而進行信息處理。?
5.1 人工神經網絡的特點:?
(1) 可以充分逼近任意復雜的非線性關系。?
(2) 所有定量或定性的信息都等勢分布儲存于網絡內各神經元,故有很強的魯棒性和容錯性。?
(3) 采用并行分布處理方法,使得快速進行大量運算稱為可能。?
(4) 可學習和自適應不知道或不確定的系統。?
(5) 能夠同時處理定量、定性標識。?
5.2 有監督的神經網絡模型訓練:?
將一組訓練集輸入人工神經網絡,根據網絡的實際輸出和期望輸出間的差別來調整鏈接權。監督學習算法的主要步驟包括:?
(1) 從樣本結合中取一個樣本(Ai,Bi) ps:Ai為輸入,Bi為期望輸出。?
(2) 計算人工神經網絡的實際輸出O。?
(3) 求D = Bi-O。?
(4) 根據D調整矩陣W。?
(5) 對每個樣本重復上述過程,直到整個樣本集來說,誤差不超過規定范圍。?
ps:1.BP算法是一種出色的監督學習算法。2.在訓練過程中通常要對數據做歸一化處理。?
總結
以上是生活随笔為你收集整理的机器学习之监督学习基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10 种机器学习算法的要点
- 下一篇: 机器学习和计算机视觉相关的数学