機器學習基礎 Logistic回歸2

2022-07-17 12:30:14 字數 1427 閱讀 2479

梯度上公升法在每次更新回歸系統時都需要遍歷整個資料集,該方法在處理100個左右的資料集時尚可,但如果有數十億樣本和成千上萬的特徵,那麼該方法的計算複雜度太高了。

隨機梯度上公升演算法偽**:

所有回歸係數初始化為1

對資料集中每個樣本

計算該樣本的梯度

使用alpha*gradient更新回歸係數值

返回回歸係數值

def stocgradascent0(datamatrix, classlabels):

m,n = shape(datamatrix)

alpha = 0.01

weights = ones(n) #initialize to all ones

for i in range(m):

h = sigmoid(sum(datamatrix[i]*weights))

error = classlabels[i] - h

weights = weights + alpha * error * datamatrix[i]

return weights

回歸係數經過大量迭代才能達到穩定值,並且仍然有區域性波動的現象。

對於隨機梯度演算法中存在的問題,可以通過改進的隨機梯度上公升演算法來解決。

def stocgradascent1(datamatrix, classlabels, numiter=150):

m,n = shape(datamatrix)

weights = ones(n) #initialize to all ones

for j in range(numiter):

dataindex = range(m)

for i in range(m):

alpha = 4/(1.0+j+i)+0.0001 #apha decreases with iteration, does not

randindex = int(random.uniform(0,len(dataindex)))#go to 0 because of the constant

index=dataindex[randindex]

h = sigmoid(sum(datamatrix[index]*weights))

error = classlabels[index] - h

weights = weights + alpha * error * datamatrix[index]

del(dataindex[randindex])

return weights

改進:1.alpha在每次迭代的時候都會調整,這會緩解資料的波動或者高頻波動。雖然alpha會隨著迭代次數不斷減小,但永遠不會減到0,保證了新資料在多次迭代之後仍然具有一定的影響。

2.通過隨機選取樣本來更新回歸係數。這種方法將減少週期性的波動。

機器學習基礎 Logistic回歸基礎

logistics回歸模型要解決的是分類問題,在之前的二元分類問題中,我們將資料分成正例和負例,但是像pla演算法一樣,用單位階躍函式來處理的這種瞬間跳躍的過程有時很難處理。於是,我們希望能得到正例的概率值是多少。我們在pla和線性回歸演算法中都用資料的加權來計算乙個分數s,在logistic回歸中...

機器學習之線性回歸以及Logistic回歸

1 線性回歸 回歸的目的是 數值型資料的目標值。目標值的計算是通過乙個線性方程得到的,這個方程稱為回歸方程,各未知量 特徵 前的係數為回歸係數,求這些係數的過程就是回歸。對於普通線性回歸使用的損失函式一般為平方誤差。把其用最小二乘法進行優化得到的關於係數w求導所得到的矩陣形式的表示式求得的 w便為最...

機器學習 logistic

一 面對缺失資料集的方法 1.使用可用特徵的均值來填補缺失值 2.使用特殊值來填補缺失值,如 1 3.忽略有缺失值的樣本 4.使用相似樣本的均值添補缺失值 5.使用另外的機器學習演算法 缺失值。二 預處理資料做兩件事 如果測試集中一條資料的特徵值已經確實,那麼我們選擇實數0來替換所有缺失值,因為本文...