美文网首页
Logistic regression

Logistic regression

作者: 想跳舞的兔子 | 来源:发表于2018-08-18 15:10 被阅读0次

    本文讲述如何用深度学习的角度来对机器学习里的Logistic Regression进行实现。

    1. 我们对数据样本的样式进行定义。

    假设我们有一系列训练样本x_{1},x_{2},...,x_{m},对应的类别为y_{1},y_{2},...,y_{m}.其中x\in\mathbb{R}^{n*1},y\in\mathbb{R}^{1}y\in\mathbb\{1,0\}(因为Logistic是适用于两类问题的,所以这里的target是两值)
    X=\begin{bmatrix} x_{1} &x_{2} &... &x_{m} \end{bmatrix},
    Y=\begin{bmatrix} y_{1} &y_{2} &... &y_{m} \end{bmatrix}
    X\in\mathbb{R}^{n*m},Y\in\mathbb{R}^{1*m}.
    从上述可以得知,我们需要求的模型是给定x,求出其对应的类别概率\hat{y}=P(y=1|x)
    用线性模型来拟合我们的数据\hat{y}=w^{T}x+b的基础上,为了使y的范围可以限定在{0,1}之内,我们引入一个函数:\sigma(z)=\frac{1}{1+e^{-z}},\sigma(z)\in(0,1)
    z\rightarrow+\infty(很大)的时候,e^{-z}很小,\sigma(z)\approx1
    z\rightarrow-\infty(很小)的时候,e^{-z}很大,\sigma(z)\approx0
    我们可以把拟合模型改写为
    \hat{y}=\sigma(w^{T}x+b)
    **其中w^{T}x+b可以通过对样本x添加一项x0=1在程序中改写为\theta^{T}x其中x\in\mathbb{R}^{(n+1)*1},\theta\in\mathbb{R}^{(n+1)*1}.
    \theta=\begin{bmatrix} \theta_0\\ \theta_1\\ \theta_2\\ ...\\ \theta_n \end{bmatrix},即 \theta_0=b,\begin{bmatrix} \theta_1\\ \theta_2\\ ...\\ \theta_n \end{bmatrix}=w

    2. 对模型的损失函数求梯度。

    \hat{y}=\sigma(w^{T}x+b),其中 \sigma(z)=\frac{1}{1+e^{-z}}
    给定\{(x^{(1)},y^{(1)}),...,(x^{(m)},y^{(m)})\},希望\hat{y^{(i)}}\approx y^{(i)}
    损失函数(Loss(error)function):原线性模型的损失函数公式为
    L(\hat{y},y)=\frac{1}{2}(\hat(y)-y)^2,但是在当前公式下使用这个公式得到的损失函数,无法拟合,所以,我们根据Logistic模型的特性,对判错进行误差(loss)统计,可以得到
    如下公式:
    L(\hat{y},y)=-(ylog\hat{y}+(1-y)log(1-\hat{y}))
    我们可以分成两种情况来看这公式。
    y=1:L(\hat{y},y)=-log\hat{y}
    此时,\hat{y}\rightarrow1,L(\hat{y},y)\rightarrow0
    y=0:L(\hat{y},y)=-log(1-\hat{y})
    此时,\hat{y}\rightarrow0,L(\hat{y},y)\rightarrow0
    反之则loss的值变大。
    Cost Function:J(w,b)=\frac{1}{m} \sum_{i=1}^{m}L(\hat{y}^{(i)},y^{(i)})
    =-\frac{1}{m} [\sum_{i=1}^{m}y^{(i)}log\hat{y^{(i)}}+(1-y^{(i)})log(1-\hat{y}^{(i)})]
    梯度下降:
    我们希望找到w,b的值,使cost function值最小。
    我们以如下这个简单的模型来做例子。

    example.png
    其中 Vectorization.png

    4. 神经网络编程准则

    只要可能,避免显式的for循环。

    avoidloop.png
    使用numpy的系统函数来进行矩阵或者向量的批量模式运算。
    matrixexp.png
    把之前的编程伪代码用上述规则进行如下修改:vectCaculation.png
    VectorizationCa.png VectorizationProgramm.png

    未完待续。。。

    相关文章

      网友评论

          本文标题:Logistic regression

          本文链接:https://www.haomeiwen.com/subject/hfnxiftx.html