11 分類的線性模型

2021-09-18 08:20:56 字數 2208 閱讀 1622

現在如果用這三個方法都用於二值分類的話,那麼它們各自的錯誤衡量就變為:

s表示用這個模型得出的分數,取值範圍應該跟原來是一樣的,線性回歸的s=wx取值範圍為實數r,logistic回歸的取值範圍為0-1(乙個概率)

ys:合起來表示正確的分數

把三個模型的錯誤衡量表示在同乙個座標軸上面。

cross entropy error :ce, logistic regression的error measure. 交叉熵錯誤

我們發現 如果平方錯誤小的時候=>0/1錯誤小 (但0/1錯誤小的時候不一定哦)

而 logistic錯誤小的時候《=》0/1錯誤小 (同時發生)

為了推導的方法,我們常常會把logistic回歸的錯誤衡量cross entropy error 進行乙個換底的操作。因為 log_2(1+exp(0))=1, 和0/1錯誤和sqr錯誤的值是一樣的。

scaled的交叉熵一定在0/1錯誤上面,這是0/1錯誤的乙個稍微緊緻的上界,使得我們的推導方便。

從上面的座標軸我們可以看出,sqr的錯誤和ce的錯誤都是0/1錯誤的上限

從上面可以看出 用回歸做分類是可行的,比如ce的error小的時候 0/1的ein和eout也會很小,這樣就可以進行分類了。

線性回歸可以給pla pocket或者邏輯斯特回歸做初始值,邏輯斯特回歸經常會比pocket方法在優化的時候更方便一些。

在pla演算法中,權值矩陣w每次更新的時候考慮乙個樣本,所以每次迭代iteration的時間複雜度是0(1),而在邏輯斯特回歸裡面每次更新都要計算所有樣本用模型計算的ein的梯度,計算的時間複雜度是o(n),這樣邏輯斯特回歸的速度就比較慢,我們想辦法讓每次迭代的時間複雜度改為o(1)。

我們這裡隨機的找乙個點算的,它的error代替整體的ein的平均值,然後計算梯度,這樣得到的梯度是隨機梯度。

每次隨機選擇乙個編號為n的樣本做引數更新 。

我們發現這個sgd的邏輯斯特回歸和pla的更新方式很接近,pla是如果某個樣本的真實值和算出來的值不一樣就更新。 sgd表示的是如果錯的多一點就更新得多一點

需要注意的兩個點:

停止條件(以為邏輯斯提回歸停止條件是梯度為0) sgd做法是迭代次數要盡量大

更新步長怎麼算,通常方法去η為0.1

one-versus-all decomposition

二分類的分類器組合 combine binary classifiers 但是對於分類器交叉的地方會有問題

所以我們用軟化的回歸合併方式 根據判斷的類別可能性來分類 (最大後驗概率)

對於邏輯斯特回歸出現的資料不平衡的問題,這裡我們用二分類的問題,但是針對的不是全部的資料。然後對某個樣本讓這幾個分類器進行投票來決定它是哪一類。

對於k個類 需要建立的分類器的個數為 k*(k-1)/2

從下面的例子可以看出在某些情況下ovo比ova省力氣

linear regression for classification +隨機梯度下降+多分類之logistic回歸+多分類之線性分類投票法

PRML 4 分類的線性模型

1.輸入變數 x 2.分類 c k,k 1,2,k,共k個離散值 3.決策邊界 決策面 決策區域 d維輸入空間中的 d 1 維超平面 y x constant 即w t x w 0 constant 4.變數,是乙個實數變數 t 二元表示方法中,目標變數 t in 其中t 1 表示類 c 1 而 t...

針對二分類問題的線性判別分析模型

針對二分類問題的線性判別分析模型 以下 片內容為周志華著 機器學習 習題3.5的程式 關於二分類問題的線性判別分析模型 周志華,機器學習,習題3.5,線性判別分類 導入庫 import numpy as np import matplotlib.pyplot as plt 存入訓練集 attrset...

純numpy寫線性回歸 及二分類模型

參照別人的寫法進行改進,資料標準化和資料集的切分,也完全手寫,不使用sklearn的相關方法。改進了下之前的 引用了sklearn中的資料集。通過引數設定,來指定使用線性回歸,還是二分類邏輯回歸。但是,不知道怎麼寫多分類的模型演算法。如可以,懇請高手指點下。純手寫numpy實現回歸和二分類模型 fr...