2020机器学习线性模型(5)

作者: zidea | 来源:发表于2020-01-22 06:17 被阅读0次
    machine_learning.jpg

    我们依旧回归一下上一次内容,上一次我们介绍一下对数几率模型,其实本质是线性模型,但是他是一个泛化的线性模型,他是一个 sigmoid 函数,这是一个指数函数
    f(z) = \frac{1}{1 + e^{-z}}
    我们将线性组合带入 sigmoid 函数替换 z,就可以将一个线性模型值域压缩到 0 到 1 之前,这样我们就可以线性模型来做分类问题。这也就是我们构建的线性模型。

    f(x) = \frac{1}{1 + e^{-\theta^Tx}}

    今天我们先讨论一下对数几率模型的损失函数
    L = \frac{1}{2N} \sum_i (h_{\theta}(x^{(i)}) - y^{(i)})^2
    这是之前我们通过最小二乘法来计算线性模型损失函数。那么对数几率函数的损失函数是什么样子呢?

    p(y=1|x,\theta) = \frac{1}{1 + e^{-\theta^Tx}}
    计算在给定样本 x 和参数 \theta 条件下,计算 x 样本属于 y=1 类别的概率。如果大于 0.5 分为 1 类而小于 0.5 分为 0 类。

    J(\theta) = - \frac{1}{N}\left( \sum_{i=1}^N \sum_{j=0}^1 I(y^{(i)} = j) \log p(y^{(i)} = j|x^{(i)},\theta) \right)

    这就是对数几率函数损失函数样子,我们来一起看一看这个公式是如何描述对数几率函数好坏的。首先从左向右来看,第一个我们对所有样本数据从 1 到 N 然后在将遍历类别这里是而分类为只有 0 和 1 。然后用 I 函数进行计数,I 函数内内容为 true 则计数为 1 否则为 0。这样一来也就是函数模型也好
    I(y^{(i)} = j) \log p(y^{(i)} = j|x^{(i)},\theta)
    这部分内容值越大,因为我们在损失函数都是求最小值来评估模型为好模型,所以在前面加了负号。现在还是停留在 2 分类问题,随后会扩展到多分类问题。还有一点我们这里使用是log 大家可能已经很清楚,也就是解决概率小数越乘越小的问题,把乘积变成连加来解决这个问题。

    J(\theta) = -\frac{1}{N} \left( \sum_i^N y^{(i)} \log h_{\theta}(x^{i}) + (1 - y^{(i)}) \log (1 - h_{\theta}(x^{i})) \right)

    \theta - \alpha \frac{\partial J}{\partial \theta}

    p(y=1|x,\theta) = \frac{1}{1 + e^{-\theta^{T}x}}

    我们对方程两边同时乘以e^{\theta^Tx} 可以得到下面的式子。

    \frac{1}{1 + e^{-\theta^{T}x}} = \frac{e^{\theta^Tx}}{ (1 + e^{-\theta^T x})e^{\theta^Tx} } = \frac{e^{\theta^Tx}}{e^{\theta^Tx} + 1}
    这个公式是为了之后做多分类做好前期准备
    p(y=1|x,\theta) = 1 - \frac{1}{1 + e^{-\theta^{T}x}}
    1 - \frac{1}{1 + e^{-\theta^{T}x}} = \frac{1}{e^{\theta^Tx}+1}

    然后我们对于超过2分类可以使用 softmax 来解决,我们可以类似上面形式来表示

    p(y^{(i)}=k|x_i \theta) = \frac{e^{\theta_k^T x^{(i)}}}{\sum_{j=1}^k e^{\theta_j^T x^{(i)}}}

    上面就是有 k 个类别线性模型。
    最后希望大家关注我们微信公众号


    wechat.jpeg

    相关文章

      网友评论

        本文标题:2020机器学习线性模型(5)

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