美文网首页程序员自然科普
52ML系列(1)--Logistic Regression逻辑

52ML系列(1)--Logistic Regression逻辑

作者: beckhz | 来源:发表于2019-03-03 20:46 被阅读221次

    现在前面

    希望对这段时间的机器学习做一个温故与总结,于是有了写52ML系列博客的想法

    逻辑回归解决什么问题

    逻辑回归是一个分类模型,输出样本属于某个类别的概率,但个人认为它也是一个回归问题,因为这个概率需要一个基于回归产生的分数。

    什么意思呢?比如现在要做一个模型:根据毛发、耳朵长短、抓不抓老鼠,可不可爱等信息判断一个动物是不是猫,这看上去是一个二分类问题,要么是要么不是,输出为:1 or -1。但是我们换一个问法,判断这个动物是猫的概率?那么输出应该是一个[0,1]之间的值。这就跟我们一般的二分类问题有些不一样了,学术上称作软二分类问题('soft' binary classification),这种问题交给逻辑回归来处理就对了


    逻辑回归模型思路

    那么逻辑回归是如何解决这种问题呢?思路是我们可以利用毛发、耳朵长短、抓不抓老鼠,可不可爱等特征算出某种类似得分的东西,得分越高越有可能是猫对不对?那么接下来,再将得分按某种操作转化为百分比,就得到了概率。

    那么问题就变成了两部分:算得分,求概率。

    算得分,最直接的想法就是利用线性回归模型
    s=\sum_{i=0}^{N}\omega_{i}x_{i}
    s就是我们的得分。当然\omega是待求的模型参数,我们先放在那里,下面考虑第二部分。

    如何将得分转化为概率?注意到得分的取值可能是(-\infty,+\infty),而结果是[0,1]之间的概率值,这是一种映射关系,那么怎么找到这种映射关系呢?不用找了,前辈们告诉你sigmoid函数天然的完成了这种映射,函数长这样:\theta(z)=\frac{1}{1+e^{-z}}

    函数图形长图1这样:


    图1

    sigmoid函数很好的将(-\infty,+\infty)限制映射在[0,1]之间,得分越高,概率越高;相反得分越低,概率越低。

    ok,现在我们有了逻辑回归的基本模型思路了,下面开始建立模型。


    模型建立

    考虑用平方误差做代价函数
    J(W)=\frac{1}{N}\sum_{i=0}^N(\theta(W^Tx_i )- y_i)^2
    但是这个函数并不是凸函数,无法用梯度下降找到最优解。

    最大似然

    换一种考虑方式:

    考虑数据集D=\{(x_1,-1),(x_2,1),(x_3,-1)...(x_n, 1)\},想象上帝创造了这么一个函数f(x)提供一种概率分布能够产生这个数据集:
    P(y|x) = \{\ _{1-f(x)\ \ \ \ for\ y = -1}^{f(x)\ \ \ \ \ \ \ for \ y = +1}
    那么这个数据集的产生概率可以表示为:
    P_f(D) = P(x_1)f(1-x_1)\cdot P(x_2)f(x_2)\cdot P(x_3)f(1-x_3)\cdots P(x_n)f(x_n)
    如果我们找到了一个跟f(x)很像的函数h(x),那么也就代表我们求出了逻辑回归的模型。这个函数h(x)称作似然函数 (likelihood)

    如何找到函数h(x)呢?

    如果h(x)≈f(x),那么
    P_h(D) ≈ P_f(D)
    其中
    P_h(D) = P(x_1)h(1-x_1)\cdot P(x_2)h(x_2)\cdot P(x_3)h(1-x_3)\cdots P(x_n)h(x_n)
    P_f(D)是上帝创造的,概率通常是很大,因此我们只要找到能让P_h(D)最大的那个h(x)就可以了,这就是所谓的最大似然

    用数学的方法表示就是这样:
    \max_h\prod_{i=0}^Nh(y_ix_i)

    tips:
    根据
    sigmoid
    函数的特殊性:1-\theta(z) = \theta(-z),因此当y_i=-1时,h(y_ix_i) = 1-h(-x_i)

    接下来将放置已久的\omega带入:
    \max_h\prod_{i=0}^N\theta(y_iW^Tx_i)
    采用log变换将连乘改成连加,并添加负号转化为求最小值问题,再引入一个求平均的操作:
    \min_h\frac{1}{N}\sum_{i=0}^N-ln\theta(y_iW^Tx_i)
    带入sigmoid函数:
    \min_h\sum_{i=0}^Nln(1+exp(-y_iW^Tx_i))
    ok, 这是一个凸函数,称作交叉熵误差函数
    下面的操作不说也知道,梯度下降撸起吧。。。


    PS

    这个ps挺大的。。。因为内容还有点多
    上面的模型用的标签是(+1,-1),那么对于(0,1)这种情况呢?
    只需将概率模型修改下:
    \{_{P(0|x;\omega) = 1- \theta(z)}^{P(1|x;\omega) = \theta(z)}\\
    合并后得到:
    p(y|x) = \theta(z)^y(1-\theta(z))^{1-y}
    依然用极大似然:
    \max_{\theta}\prod_{i=0}^N\theta(z_i)^y(1-\theta(z_i))^{1-y}
    依然取对数将连乘转连加,并添加符号转化为求最小值,再引入平均:
    \min_h\frac{1}{N}\sum_{i=0}^N-[yln\frac{\theta(z_i)}{1-\theta(z_i)}+ln(1-\theta(z_i)]
    带入sigmoid函数之后依旧梯度下降开撸吧。。。


    参考引用:

    • 台湾大学林轩田《机器学习基石》课程
    • 《统计学习方法》——李航
    • 七月在线课程

    相关文章

      网友评论

        本文标题:52ML系列(1)--Logistic Regression逻辑

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