TensorFlow 学习(五) 二分类logistic回归模型

逻辑回归的损失函数是对数损失函数,对数损失函数的方程式与信息论中的熵测量密切相关。它也是似然函数的负对数(假设“y‘ ’” 属于伯努利分布)。实际上,最大限度地降低损失函数的值会生成最大的似然估计值。对数损失函数的方程式如下图

                                                               Log Loss = \sum_{(x,y)\in D} -ylog(y') - (1 - y)log(1 - y')

其中:

  • (x,yD 是包含很多有标签样本 (x,y) 的数据集。
  • “ y ” 是有标签样本中的标签。由于这是逻辑回归,因此 “y” 的每个值必须是 0 或 1。
  • “ y' ” 是对于特征集“x”的预测值(介于 0 和 1 之间)

假设预测函数 hypothesis 在 0 和 1 之间 (概率):

                                                               h_w\left(x;w,b\right ) = \frac{1}{1 + e^{-(w^ T x + b)}}

其中:

  • h_w\left(x;w,b\right ) 是逻辑回归模型针对特定样本的输出。
  •  w^ T x + b是 b + w1x1 + w2x2 + … wNxN
    • “w” 值是该模型学习的权重
    • “b” 值是该模型学习的偏差。
    • “x” 值是特定样本的特征值。

请注意, 该假设函数也称为对数几率

假设函数推理过程:

假设 函数h_w\left(x;w,b\right ) = p, 服从伯努利分布,为正的概率为 p, 为负的概率为 1 - p.

逻辑回归中该样本为正的概率  h_w\left(x;w,b\right )  为负的概率  1 -h_w\left(x;w,b\right ) 

odds优势比是事件发生概率和不发生概率之间的比值: 

                                                                     odds = \frac{p}{1 - p}

我们可以将[0,1]之间的任意数映射到[0,∞]之间的任意实数。但是,线性回归的输出还可以是负数,我们还需要另一步变换将[0,∞]的实数域映射到这个实数域R空间;

然后,在众多非线性函数中,log函数的值域为整个实数域且单调,因此,我们可以计算优势比的对数(ln 是log 底数为 e的数):

                                                         \eta = ln(odds) = ln(\frac{p}{1 - p}) =w^ T x + b

求解过程, \eta=w^ T x + b, 取消 ln底数

                                                                      \frac{p}{1 - p} = e ^ \eta

然后消除分子 p, 两边加 1

                                                                 \frac{p+1-p}{1-p} = e ^ \eta + 1

                                                                    \frac{1}{1-p} = e ^ \eta + 1

由上面可得

为负的概率 :                                            1 - p =\frac{1}{e ^ \eta + 1}

为正的概率:                                             p =\frac{e^\eta}{e ^ \eta + 1}

需要的是为正的概率, 分子分母同除以 {e^\eta}, 化简可得:

                                                                   p = \frac{1}{1+e^{-\eta}}

而  \eta = w ^T x + b  所以最终假设样本为正的概率为:

                                                    h_w\left(x;w,b\right )= p = \frac{1}{1+e^{-(w^{T} x+b)}}

极大对数似然推理(逻辑回归(0和1分类)):

假设有 M 个样本,样本值分别为 y_1,y_2,y_3,...y_m,设  p_i = P(y_i = 1| x_i)  为给定条件下得到  y_i = 1  的概率,

同样地, y_i = 0   的概率为  P(y_i = 0 | x_i) = 1 - p_i,所以得到一个样本值的概率为P(y_i) = p_i ^ {y_i} (1-p_i)^ {1-y_i},

注意,大写p(没有下标 i): 是函数形式,小写p(有小标 i): 是一个值(概率)

则取对数似然依据

运用对数运算和差 \log_{e} MN = log_{e}M + log_{e}N           ,            \log_eN^{m} = m \log_eN

                                                 ln(P(y_i))=\sum_{i = 1}^{m}ln(p_i^{y_i} (1-p_i)^{1-y_i})

                                                                  =\sum_{i = 1}^{m}ln(p_i^{y_i}) + ln ((1-p_i)^{1-y_i})                     

                                                                  = \sum_{i = 1}^{m}y_i ln(p_i) + (1 - y_i)ln(1-p_i)

当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。所以加个负号

                                                                   logloss = \sum_{i = 1}^{m}-y_i ln(p_i) - (1 - y_i)ln(1-p_i)

又根据  p(即p_i)  上面的公式  p =\frac{e^\eta}{e ^ \eta + 1}   ,  1 - p =\frac{1}{e ^ \eta + 1}  

                                                                 \sum_{i = 1}^{m}-y_i ln(p_i) - (1 - y_i)ln(1-p_i)

由于该极大似然函数无法直接求解,一般是进行梯度下降来不断接近最优解。

梯度下降有三种方式:

  • 批梯度下降:   会获得全局最优解,缺点是在更新每个参数的时候需要遍历所有的数据,计算量会很大,并且会有很多的冗余计算,导致的结果是当数据量大的时候,每个参数的更新都会很慢。
  • 随机梯度下降: 以高方差频繁更新,优点是使得随机梯度会跳到新的和潜在更好的局部最优解,缺点是使得收敛到局部最优解的过程更加的复杂。
  • 小批量梯度下降:  结合了随机梯度下降和批梯度下降的优势,每次梯度更新的时候使用n个样本。减少了参数更新的次数,可以达到更加稳定收敛结果。(深度学习一般使用该方法优化)

TensorFlow 简单实现:

主要是这两个函数求解

h_W\left(x;W\right ) = \frac{1}{1+e^{-(W^{T} x)}} =Sigmoid(W^{T}x)

Loss(W) = \sum_{i}{y^{(i)}log{1\over{h_{W}(x^{i})}}+(1-y^{(i)})log{1\over{1-h_{W}(x^{i})}}}

源码参考GitHub地址:TensorFlow逻辑回归实现

猜你喜欢

转载自blog.csdn.net/qq_35200479/article/details/83316887