機器學習--迴歸算法

算法

線性迴歸(連續)

目標函數推導

預測值與誤差:
y(i)=θTx(i)+εi
由中心極限定理可知,誤差服從正態分佈:
p(εi)=12πσexp((εi)22σ2)
帶入可得:
p(εi)=12πσexp((y(i)θTx(i))22σ2)
極大似然估計:
L(θ)=m112πσexp((y(i)θTx(i))22σ2)
取對數:
L(θ)=m1log12πσexp((y(i)θTx(i))22σ2)
拆分:
L(θ)=mlog12π12σ2m1(y(i)θTx(i))2
最大化似然函數得到目標函數:
最小化:m1(y(i)θTx(i))2 也就是最小二乘法

目標函數求解

目標函數展開:
J(θ)=12(XθY)T(XθY))
θ 求導,令導數爲0:
θ=(XTX)1XTY
要令(XTX)1 求逆可執行,加入正則項(滿秩的方陣可逆),最終解爲:
θ=(XTX+λI)1XTY

防止過擬合:

加入正則項目,有三種:

  • L1-norm (LASSO迴歸) : λ|θi|
  • L2-norm (Ridge嶺迴歸): λθ2i
  • ElasticNet (混合前兩種) : λ(p|θi|+(1p)θ2i)

優缺點比較:

  • L1:
    • 優點:得到解滿足稀疏性要求(因爲在接近原點處正則項不會變小,L2會),有較高的求解速度。
    • 缺點:準確性、穩定性、魯棒性較差
  • L2:
    • 優點:準確性、穩定性、魯棒性較高
    • 缺點:求解速度較慢
  • ElasticNet:
    • 優點:可以同時考慮求解速度和穩定性

邏輯迴歸(二分類)

推導過程

預測和目標:P(y|x;θ)=h(x)y(1h(x))1y
其中預測函數 h(x)=11+eθTx
h(x)θj 求偏導是h(x)(1h(x))xji
似然函數:
L(θ)=mih(xi)yi(1h(xi))1yi
取對數再對θ 求偏導,將上式的h(x)(1h(x))xji 帶入可以得到目標函數的偏導數:
mi(yih(xi))xji
所以函數的求解過程類似於梯度下降法:
θj=θjα(yih(xi))xji

實現邏輯迴歸的代碼:

θj=θjα(yih(xi))xji

#alpha:步長,maxCycles:迭代次數,可以調整
def gradAscent(dataArray,labelArray,alpha,maxCycles):
    dataMat=mat(dataArray)    #size:m*n
    labelMat=mat(labelArray)      #size:m*1
    m,n=shape(dataMat)
    weigh=ones((n,1)) 
    for i in range(maxCycles):
        h=sigmoid(dataMat*weigh)
        error=labelMat-h    #size:m*1
        weigh=weigh+alpha*dataMat.transpose()*error
    return weigh

softmax迴歸(多分類)

解決多分類的問題,與邏輯迴歸類似

預測和目標的函數變爲:
P(y=k|x;θ)=eθTkxKl=1eθTlx

最後的跟新函數變爲:
θj=θjαI(yi=j)(1p(yi=j|xi;θ))xi

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章