线性模型之对数几率回归

释放双眼,带上耳机,听听看~!

线性模型之对数几率回归

广义线性模型:\\(y=g^{-1}(w^Tx+b)\\)

  • \\(g^{-1}(x)\\),单调可微函数

如果用线性模型完成分类任务如何做?

  • 根据线性模型可知,找到一个单调可微函数将分类任务的真实标记\\(y_i\\)与线性模型的预测值联系起来即可。

广义线性模型对样本要求不必要服从正态分布、只需要服从指数分布簇(二项
分布、泊松分布、伯努利分布、指数分布等)即可;广义线性模型的自变量可
以是连续的也可以是离散的.

logistic回归

logistic/sigmoid函数:

  • \\(p=h_\\theta(x)=g(\\theta^Tx+b)=\\frac{1}{1+e^{-\\theta^Tx+b}}\\)
  • \\(ln\\frac{y}{1-y} = \\theta^Tx+b\\)
    • \\(ln\\frac{y}{1-y}\\):对数几率,将预测的结果逼近真实标记的对数几率
  • \\(g^`(z)=g(z)(1-g(z))\\)

将y视为类后验概率估计\\(h_\\theta(x)=P(y=1|x)\\),则:

  • \\(P(y=1|x;\\theta)=(h_\\theta(x))\\)
  • \\(P(y=0|x;\\theta)=1-(h_\\theta(x))\\)
  • \\(P(y|x;\\theta)=(h_\\theta(x))^y(1-h_\\theta(x))^{1-y}\\)

第一步:似然函数:

  • \\(L(\\theta)=\\prod_{i=1}^mp(y^{(i)}|x^{(i)};\\theta)=\\prod_{i=1}^m(h_\\theta(x^{(i)}))^{y^{(i)}}(1-h_\\theta(x^{(i)}))^{1-y^{(i)}}\\)

第二步:取对数似然函数:

  • \\(l(\\theta)=L(\\theta)=\\sum^m_{i=1}(y^{(i)}logh_\\theta(x^{(i)})+(1-y^{(i)})log(1-h_\\theta(x^{(i)})))\\)

Logistic损失函数:\\(-l(\\theta)=\\sum^m_{i=1}(-y^{(i)}ln(h_\\theta(x^{(i)}))-(1-y^{(i)})ln((1-h_\\theta(x^{(i)}))))\\)$

第三步:对属于j类别\\(\\theta\\)求导:

  • \\(\\frac{\\partial l(\\theta)}{\\partial \\theta_j} =\\sum^m_{i=1}(\\frac{y^{(i)}}{g(\\theta^Tx^{(i)})}-\\frac{1-y^{(i)}}{1-g(\\theta^Tx^{(i)})})\\cdot g(\\theta^Tx^{(i)})(1-g(\\theta^Tx^{(i)}))\\cdot\\frac{\\partial \\theta^Tx^{(i)}}{\\partial \\theta_j}\\)
  • =\\(\\sum^m_{i=1}(y^{(i)}(1-g(\\theta^Tx^{(i)}))-(1-y^{(i)})g(\\theta^Tx^{(i)})\\cdot x^{(i)}_j\\)
  • =\\(\\sum^m_{i=1}(y^{(i)}-g(\\theta^Tx^{(i)})\\cdot x^{(i)}_j\\)

第四步:梯度求解

  • 批量梯度下降:
    • for j=1 to n:
      \\(\\theta_j=\\theta_j +\\alpha\\sum^m_{i=1}(y^{(i)}-h_\\theta(x^{(i)}))x_j^{(i)}\\)
  • 随机梯度下降法(SGD)
    • for j=1 to n:
      \\(\\theta_j=\\theta_j +\\alpha(y^{(i)}-h_\\theta(x^{(i)}))x_j^{(i)}\\)
    • 与批量梯度下降法主要体现在权重不同

import numpy as np

# 假设空间函数:h(x)
def sigmoid (xArr):
    xMat = np.mat(xArr)
    return xMat.T * xMat

# 批量梯度下降法
# alpha:学习率 maxCycle:学习的迭代次数 
def gradAscent (dataMatin,labels, alpha=0.1, maxCycle=100):
    
    dataMatrix= np.mat(dataMatin)
    labelsMatrix = np.mat(labels).T 
    m,n = np.shape(dataMatrix)
    # 初始化权重
    weights = np.ones((n,1))
    for k in maxCycle:
        # error, dataMatrix 为m*n的矩阵
        error = labelsMatrix - sigmoid(dataMatrix *weights)
        weights = weights + alpha * dataMatrix.T * error
    return weight

# 随机梯度下降法
# alpha:学习率
def gradAscent (dataMatin,labels, alpha=0.1):
    
    dataMatrix= np.mat(dataMatin)
    labelsMatrix = np.mat(labels).T 
    m,n = np.shape(dataMatrix)
    # 初始化权重
    weights = np.ones((n,1))
    # m为样本数
    for i in range(m):
        # error, dataMatrix 为m*n的矩阵
        error = labelsMatrix[i] - sigmoid(dataMatrix[i] * weights)
        weights = weights + alpha * error * dataMatrix[i]
    return weights

softmax回归

  • softmax回归是logistic回归的一般化,适用于K分类的问题,第k类的参数为向量\\(θ_k\\),组成的二维矩阵为\\(θ_{k*n}\\)
  • softmax函数的本质就是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,其中向量中的每个元素取值都介于(0,1)之间。
  • logistics回归概率函数:
    • \\(p(y=1|x;\\theta)=\\frac{1}{1+e^{-\\theta^Tx}}\\)
  • softmax回归概率函数:
    • \\(p(y=k|x;\\theta)=\\frac{e^{\\theta^T_kx}}{\\sum_{j=1}^{k}e^{-\\theta^T_jx}} \\quad k=1,2.\\dots,K\\)
  • softmax假设函数:
  • softmax损失函数:
    • \\(J(\\theta)=-\\frac{1}{m}\\sum^m_(i=1)\\sum^k_(j=1)I(y^{(i)}=j)ln(\\frac{e^{\\theta^T_jx^{(i)}}}{\\sum_{l=1}^{k}e^{-\\theta^T_lx^{(i)}}})\\)
      • 解法同上:logistics回归的对数似然函数
    • 函数\\(I(y^{(i)}=j)\\)
      • \\(if(y^{(i)}=j): \\quad I(y^{(i)}=j)=1 \\quad else \\quad I(y^{(i)}=j)=0\\)
      • 存在的意思:使不是j类别的样本损失为0,使似然函数最大化
  • 对第i个样本的属于j类别\\(\\theta\\)分量求导:(\\(0<i<m\\)\\(1<j<k\\)
    • \\(\\nabla_{\\theta_j}J(\\theta)=\\nabla-I(y^{(i)}=j)ln(\\frac{e^{\\theta_j^Tx^{(i)}}}{\\sum_{l=1}^Ke^{\\theta_l^Tx^{(i)}}})\\)
    • \\(ln(\\frac{e^{\\theta_j^Tx^{(i)}}}{\\sum_{l=1}^Ke^{\\theta_l^Tx^{(i)}}}) = \\theta_j^Tx^{(i)}-ln(\\sum_{l=1}^Ke^{\\theta_l^Tx^{(i)})}\\)
    • \\(\\nabla_{\\theta_j}J(\\theta)=-I(y^{(i)}=j)(1-\\frac{e^{\\theta^T_jx^{(i)}}}{\\sum_{l=1}^{k}e^{-\\theta^T_lx^{(i)}}})x^{(i)}\\)
  • 第j类别\\(\\theta\\)更新:
    • 批量梯度下降
      • \\(\\theta_j=\\theta_j+\\alpha \\sum_{i=1}^{m}I(y^{(i)}=j)(1-p(y^{(i)}=j|x^{(i)};\\theta))x^{(i)}\\)
    • 随机梯度下降
      • \\(\\theta_j=\\theta_j+\\alpha I(y^{(i)}=j)(1-p(y^{(i)}=j|x^{(i)};\\theta))x^{(i)}\\)

给TA打赏
共{{data.count}}人
人已打赏
随笔日记

算法详解之最近公共祖先(LCA)

2020-11-9 5:44:28

随笔日记

坚定有序推进网贷专项整治 多措并举支持和推动机构良性退出或转型发展

2020-11-9 5:44:30

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索