1. 程式人生 > 其它 >10機器學習之監督學習

10機器學習之監督學習

監督學習的目標

利用一組帶有標籤的資料,學習從輸人到輸出的對映,然後將這種對映關係應用到未知資料上,達到分類或迴歸的目的。

  • 分類:當輸出是離散的,學習任務為分類任務。
  • 迴歸:當輸出是連續的,學習任務為迴歸任務。



分類

分類任務:


分類學習

輸人:一組有標籤的訓練資料(也稱觀察和評估),標籤表明了這些資料(觀察)的所署類別。

輸出:分類模型根據這些訓練資料,訓練自己的模型引數,學習出一個適合這組資料的分類器,當有新資料(非訓練資料)需要進行類別判斷,就可以將這組新資料作為輸人送給學好的分類器進行判斷。


分類學習-評價

訓練集(training set):顧名思義用來訓練模型的已標註資料,用來建立模型,發現規律。

測試集(testing set):也是已標註資料,通常做法是將標註隱藏,輸送給訓練好的模型,通過結果與真實標註進行對比,評估模型的學習能力。

訓練集/測試集的劃分方法根:據已有標註資料,隨機選出一部分(70%)資料作為訓練資料,餘下的作為測試資料,此外還有交叉驗證法,自助法用來評估分類模型。


分類學習-評價標準

精確率(P):精確率是針對我們預測結果而言的,(以二分類為例)它表示的是預測為正的樣本中有多少是真正的正樣本。那麼預測為正就有兩種可能了,一種就是把正類預測為正類(TP),另一種就是把負類預測為正類(FP)。

召回率(R):是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了。那也有兩種可能,—種是把原來的正類預測成正類(TP),另一種就是把原來的正類預測為負類(FN)。

假設:手上有60個正樣本,40個負樣本,我們要找出所有的正樣本,分類演算法查找出50個,其中只有40個是真正的正樣本。

  • TP:將正類預測為正類數40

  • FN:將正類預測為負類數20

  • FP:將負類預測為正類數10

  • TN:將負類預測為負類數30

準確率(accuracy)= 預測對的/所有 = (TP+TN)/(TP+FN+FP+TN)=70%

精確率(precision) = TP/(TP+FP) = 80%

召回率(recall) = TP/(TP+FN) = 66.7%


Sklearn vs.分類

與聚類演算法被統一封裝在sklearn.cluster模組不同,sklearn庫中的分類演算法並未被統一封裝在一個子模組中,因此對分類演算法的import方式各有不同。

Sklearn提供的分類函式包括:

  • k近鄰(knn)
  • 樸素貝葉斯(naivebayes)
  • 支援向量機(svm)
  • 決策樹(decision tree)
  • 神經網路模型(Neural networks)等

其中有線性分類器,也有非線性分類器。

以下圖片展示了,分別用線性分類器和非線性分類器,分類的結果。


分類演算法的應用

金融:貸款是否批准進行評估

醫療診斷:判斷一個腫瘤是惡性還是良性

欺詐檢測:判斷一筆銀行的交易是否涉嫌欺詐

網頁分類:判斷網頁的所屬類別,財經或者是娛樂?



迴歸分析

迴歸:統計學分析資料的方法,目的在於瞭解兩個或多個變數間是否相關、研究其相關方向與強度,並建立數學模型以便觀察特定變數來預測研究者感興趣的變數。迴歸分析可以幫助人們瞭解在自變數變化時因變數的變化量。一般來說,通過迴歸分析我們可以由給出的自變數估計因變數的條件期望。

迴歸任務:


Sklearn vs.迴歸

Sklearn提供的迴歸函式主要被封裝在兩個子模組中,分別是sklearn.linear_model和sklearn.preprocessing。

sklearn.linear_modlel封裝的是一些線性函式。

線性迴歸函式:

  • 普通線性迴歸函式( LinearRegression )
  • 嶺迴歸(Ridge )
  • Lasso ( Lasso )

非線性迴歸函式:

多項式迴歸則通過呼叫sklearn.preprocessing子模組進行擬合。


迴歸應用

迴歸方法適合對一些帶有時序資訊的資料進行預測或者趨勢擬合,常用在金融及其他涉及時間序列分析的領域。

  • 股票趨勢預測
  • 交通流量的預測