机器学习--回归算法

算法

线性回归(连续)

目标函数推导

预测值与误差:
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

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