认识

是一个经典的二元(y=0 或 y=1) 分类算法, 不是回归

输入特征还是线性回归, 输出是 [0,1] 的一个概率值, 其判别函数的形式为:

\(P(y=1|x) = \frac {1}{1+e^{-\theta ^Tx}}\)

至于为什么是这样的形式, 上篇的logist 函数推导已经说明了,不在赘述啦

  • \(x = [x_1, x_2, x_3...x_n]\)

  • \(\theta = [\theta_0, \theta_1, \theta_2...]\)
  • \(\theta ^T x = \theta _0 + \theta _1x_1 + \theta_2x_2 + \theta_3x_3...\)

里面的一大坨就是妥妥的线性模型呀.

判别: 当 \(P(y=1|x)\) 的值 大于0.5, 输出 1; 否则输出 0;

分类 vs 回归

对目标函数做一个推演:

\(P(y=1|x) = P= \frac {1}{1+e^{-\theta^T x}}\) 则:

\(P(y=0|x) = 1-P = 1 - \frac {1}{1+e^{-\theta^T x}} = \frac {1+e^{-\theta^T x}-1}{1+e^{-\theta^T x}} = \frac {1}{1+e^{\theta^Tx}}\) (注意, 负号没了,别化简错哦)

则两个类别概率的比值:

\(\frac {P(y=1)}{P(y=0)} = \frac {P}{1-P} = \frac { \frac {1}{1+e^{-\theta^T x}}}{ \frac {1}{1+e^{\theta^Tx}}}\)

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

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

\(=e^{\theta^T x}\)

log(两个类别概率的比值):

\(ln(\frac {P}{1-P}) = \theta ^Tx\)

这不就是最熟悉的 线性模型了嘛, 也可以这样说:

逻辑回归, 可看作对线性模型做了一个车 "逻辑" 变换, 输出是将值映射到 [0,1], 以0.5为界, 达到分类效果

也就说, 可以用线性的方式来, 研究 logist 这样 非线性的 问题.

模型应用case

年龄(x1) 收入(x2) 是否买车(1,0)
20 3 0
23 7 1
31 10 1
42 13 1
50 7 0
60 5 0

模型定义为:

\(P(y=1|x, \theta) = \frac {1}{1+e^{\theta'x}}\)

求解出: \(\theta_0 = -0.04, \ \theta_1 = -0.2, \theta_2 = 0.92\)

即模型: \(P(y=1|x, \theta) = \frac {1}{1+e^{-0.04 -0.2 x_1 + 0.92x_2}}\)

  • 预测 : 现在来了一个 22岁, 收入是 8的人, 买车的概率为: 0.23 < 0.5 即输出 0 不买 (瞎算的哈)
  • 参数1: 年龄 -0.2 表示, 如果年龄增加 1岁, 买车和不买车的概率比值 与之前 降低 \(e^{-0.2} =0.82\) 倍
  • 参数2: 收入 0.92 表示, 如果收入 增加1(万), 买与不买的概率比值 比之前 增加 \(e^{0.92} =2.58\)倍

统一形式

从上知逻辑回归是二元(0, 1) 分类嘛, 因此:

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

\(P(y=0|\theta, x) = 1- \frac {1}{1+e^{-\theta'x}} =\frac {1+e^{\theta^Tx}} {1+e^{-\theta^Tx}}\)

将上面两个式子结合起来可写为:

\(P(y|\theta, x) = [P(y=1|\theta, x)]^y + [1-P(y=y|\theta, x)]^{1-y}​\)

\(\theta ^T, \ \theta'\) 都表示转置, 不是求导哈, 这样写一来是可以, 二是为了写latex 方便,编辑公式太难了.

y = 1 或 y= 0

目标函数(Loss)

既然是概率问题, 而优化的参数是 theta, 当然采用 极大似然

即将每一个样本点都考虑进来, 概率之积最大的情况下, 对参数 做优化.

\(max \ L(\theta, x) = \prod \limits _{i=i}^n P(y_i |\theta, x_i)\), 标准化后, 等价于:

\(min \ L(\theta, x) =- \prod \limits _{i=i}^n P(y_i |\theta, x_i)\) 将之前的合并形式展开得:

\(L(\theta, x) = - \prod \limits _{i=1} ^n [P(y_i=1|\theta, x_i)]^y [1-P(y_i=1| \theta, x_i)]^{1-y_i}\)

对其取 log, 乘法变加法, 利于推导和能让计算机运算, 毕竟存储 小数是有 "精度的嘛".

\(log[L(\theta, x)] = -\sum \limits_{i=1}^n y \ logP(y_i=1|\theta, x_i) + (1-y_i)log(1-P(y_i=1|\theta, x_i))\)

  • y = 0 或 1, 因此将 y 从"次方" 拿下来是合理的
  • 目的是最优, 做log变换也是也是成立的

将其写得简洁一波.

令 \(\phi(x) = \frac {1}{1+e^{-x}} \ 即本例的 P(y=1 | x, \theta) = \frac{1}{1+e^{- \theta ^Tx}} 可写为 \phi(\theta'x)\)

则最终loss 可简写为:

\(L(\theta, x) = -\sum \limits _{i=1}^n [y_i log \phi(\theta'x_i)] +[(1-y_i)log(1- \phi(\theta'x_i))]\)

对 theta 求一阶偏导数(求解)

\(\sum\) 表示i..n 求和, 体谅一波 latex 有些难编写

\(\phi(x)' = \phi(x) (1-\phi(x))\) 分数求导即可轻易证明

注意求导的链式法则哦

\(\nabla_{\theta} = (-\sum y_i \frac {\phi(\theta'x_i)(1-\phi(\theta'x_i)) x_i}{\phi(\theta'x_i)} + (1-y_i) \frac {-\phi(\theta'x_i)(1-\phi(\theta'x_i))x_i}{1- \phi(\theta' x_i)})\)

\(=-\sum (x_i[y_i-\phi(\theta' x_i) - (1-y_i)(\phi(\theta'x))])\)

\(=-\sum (x_i[y_i- y_i \phi(\theta' x_i) - \phi(\theta'x_i) + y_i \phi(\theta'x_i)])\)

\(=\sum \phi(\theta'x_i - y_i)x_i\)

其中: \(\phi(x) = \frac {1}{1+e^{-x}} \ 而 \phi(x)' = \phi(x) (1-\phi(x))\)

如需求解参数 theta, 将 \(\phi(x)\) 反代回去即可

即: \(\sum \limits _{i=1}^n \frac {x_i}{1+e^{(y_i - \theta'x_i)}} = 0\)

...

就这样吧, 不想整了, 此处的目的主要在于能求解出 theta 的 一阶偏导数的形式.

证明 loss 函数是凸函数

  • 定义证明: \(f(ax + (1-a)y) \le af(x) + (1-a)f(y)\)
  • 一阶展开: \(f(x + a) > f(x) + af(x)' + e_i\)

  • 求二阶导: 海塞矩阵 Hessian Matrix半正定即可.

Hessian: 对多元函数求二阶偏导数构成的矩阵啦.

栗子: 二元函数 f(x, y) 的Hessian: [[二阶偏x, 偏x偏y], [偏y偏x, 偏y]], 组成2x2的矩阵

半正定: \(\forall _x \ 满足x^TAx \ge 0\) , 则A是半正定

简单证明

$
由上L(\theta, x) = \frac {-1}{n} \sum ylog\phi(\theta^tx) + (1-y)log(1-\phi(\theta^tx)) \
其中 \phi(x) = \frac{1}{1+e^{-x}},  \phi(x)^{'} = \phi(x)(1-\phi(x)) \
里面是一个复合函数, 只需证明 log(\phi(theta^x))的二阶导数"\ge0" \
对于 F(x) = log\phi(\theta^tx) \
F(\theta)^{'} = \frac{\phi(\theta^tx)(1-\phi(\theta^tx))}{\phi(\theta^tx)} = 1-\phi(\theta^tx) >= 0 \
F(\theta)^{''} = (\frac{1}{1+e^{-\theta^tx}})' = \frac{e^{-\theta^tx}}{(1+e^{-\theta^tx)^2}} >= 0 \
因此目标函数是凸函数.
$

严格证明

已知损失函数为:

\(L(\theta, x) = -\sum \limits _{i=1}^n [y_i log \phi(\theta'x_i)] +[(1-y_i)log(1- \phi(\theta'x_i))]\)

\(\phi(x) = \frac {1}{1+e^{-x}}\), 易推得 \(\phi(x)' = \phi (x) (1-\phi(x))\)

y = 1或0

其实,只需考虑 \(f(\theta, x) = -log \phi(\theta'x)\) , 第二项 其实跟第一项是一样的(log 的性质, 展开, 不信自己推).

先对 theta 求一阶导:

\(\nabla _\theta = -\frac {\phi(\theta' x)(1-\phi(\theta'x))}{\phi(\theta'x)}x = [\phi(\theta' x) -1]x\)

再对 theta 求二阶导:

\(\nabla^2_\theta = \nabla _\theta([\phi(\theta'x) -1]x)\)

跟 x 没有关系,看作常数, 只跟 theta 相关

注意求导的链式法则哦

x 是向量

\(=\phi(\theta'x)(1-\theta'x)xx\)

\(=\phi(\theta'x)(1-\theta'x)xx^T\)

用半正定判别式: \(z^T Az 的符号\)

\(\forall_z \ z^T \phi(\theta'x)(1-\phi(\theta'x))xx^T z\)

其中,

\(\phi(\theta'x)(1-\phi(\theta'x))\) 是实数, 可以移动位置

x, z 都是列向量

即调换下位置可为:

\(\phi(\theta'x)(1-\phi(\theta'x)) z^T xx^T z\)

\(z^Tx\ 和 xz^T 是相等的 表示内积, 是个实数,\)

即可再化简为:

\(\phi(\theta'x)(1-\phi(\theta'x))( z^T x)^2\)

因为 \(\phi(x) \in [0,1]\) 所以该式子 大于或等于0 恒成立, 第二项也类似, 两个半正定的线性组合, 也是半正定, 即证海塞矩阵是半正定的, 即证 loss 是 凸函数

总体感觉, 逻辑回归的推导, 相对于 SVM 还是要简单许多的呀, 都不用对偶, 直接偏导就可以了, 难度也不大, 但用处却是非常大的, 结合了线性模型, 同时, 它是凸函数, 意味着求解时, 可以通过梯度下降法来找到全局最优解 . 毕竟是我最喜欢的三个算法之一了, 另两个是 SVM 和 决策树, 当然 LR已经包含了呀.

逐步将经典的ML算法都手推一遍, 才本质上来认识世界, 真的能到达

随心所欲不逾矩呢?

还是,

万物并作,吾以观复?

ML-逻辑回归推导的更多相关文章

  1. Spark ML逻辑回归

    import org.apache.log4j.{Level, Logger} import org.apache.spark.ml.classification.LogisticRegression ...

  2. ML 逻辑回归 Logistic Regression

    逻辑回归 Logistic Regression 1 分类 Classification 首先我们来看看使用线性回归来解决分类会出现的问题.下图中,我们加入了一个训练集,产生的新的假设函数使得我们进行 ...

  3. 【Coursera】线性回归和逻辑回归

    一.线性回归 1.批量梯度下降法 每次对参数进行一次迭代时,都要扫描一遍输入全集 算法可以收敛到局部最优值 当迭代多次之后,每次迭代参数的改变越小 2.随机梯度下降法 对于一个输入样本,对参数进行一次 ...

  4. 大叔学ML第五:逻辑回归

    目录 基本形式 代价函数 用梯度下降法求\(\vec\theta\) 扩展 基本形式 逻辑回归是最常用的分类模型,在线性回归基础之上扩展而来,是一种广义线性回归.下面举例说明什么是逻辑回归:假设我们有 ...

  5. ML(4)——逻辑回归

    Logistic Regression虽然名字里带“回归”,但是它实际上是一种分类方法,“逻辑”是Logistic的音译,和真正的逻辑没有任何关系. 模型 线性模型 由于逻辑回归是一种分类方法,所以我 ...

  6. 逻辑回归(Logistic Regression)推导

    出自BYRans博客:http://www.cnblogs.com/BYRans/ 本文主要讲解分类问题中的逻辑回归.逻辑回归是一个二分类问题. 二分类问题 二分类问题是指预测的y值只有两个取值(0或 ...

  7. 逻辑回归 之 Logist 推导

    Logist从概率角度认识 可以咱学校教材大二版的<> - 山大版, 来整一波, 为了简化推导形式呢, 这里就假设2个样本空间的形式来展开, 基于(条件概率) 全概率与贝叶斯 作为核心. ...

  8. 逻辑回归原理,推导,sklearn应用

    目录 逻辑回归原理,推导,及sklearn中的使用 1 从线性回归过渡到逻辑回归 2 逻辑回归的损失函数 2.1 逻辑回归损失函数的推导 2.2 梯度下降法 2.3 正则化 3 用逻辑回归进行多分类 ...

  9. [机器学习] Coursera ML笔记 - 逻辑回归(Logistic Regression)

    引言 机器学习栏目记录我在学习Machine Learning过程的一些心得笔记,涵盖线性回归.逻辑回归.Softmax回归.神经网络和SVM等等.主要学习资料来自Standford Andrew N ...

  10. Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression

    原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...

随机推荐

  1. 整合SpringTask实现定时任务

    一.框架介绍 SpringTask是Spring自主研发的轻量级定时任务工具,相比于Quartz更加简单方便,且不需要引入其他依赖即可使用. 二.Corn表达式 概述 Cron表达式是一个字符串,包括 ...

  2. Nginx的代理配置(六)

    一.正向代理 1. 指令说明 (1) resolver 这个用于设置DNS服务器的ip .DNS服务器的主要工作是进行域名解析,将域名映射为对应IP地址. 语法:resolver address .. ...

  3. [随笔]冲NOIP一等奖。。

    唉不想多说了. 真是一段“传奇”的经历啊. 还是那句话..“是的我上次什么都没说就走了...”这次也一样. 我还是太单纯的以为我们是肯定能够参加北大的夏令营的..然而结果真是意料之外啊. 本来我以为我 ...

  4. 洛谷P2194 【HXY烧情侣】

    首先请允许我吐槽一下这个题面 这个题面透露出血腥与暴力,电影院里还藏汽油 所以情侣们,要是想看电影就在家里看吧 毕竟出来容易被烧 在家里看虽然观影效果不如在电影院里 但是, 起码咱生命安全啥的有保障啊 ...

  5. jquery.pagination.js的使用

    html页面 //要显示内容表格 <table id="gifts"> <tr class='first'> <th>时间</th> ...

  6. git拆分仓库

    1.git filter-branch拆分当前分支 修改仓库目录,改成拆分后的结构 创建一个当前分支的拷贝分支 git filter-branch -f --tag-name-filter cat - ...

  7. 基于Kafka的实时计算引擎如何选择?Flink or Spark?

    1.前言 目前实时计算的业务场景越来越多,实时计算引擎技术及生态也越来越成熟.以Flink和Spark为首的实时计算引擎,成为实时计算场景的重点考虑对象.那么,今天就来聊一聊基于Kafka的实时计算引 ...

  8. 如何将vscode的终端放到右侧

    这个问题我之前上百度搜了一下,只有百度经验有, 但是百度经验的图片看不清,而且按照百度经验的回答,我找不到它说的用户设置 于是我问了一下同学,很简单. 右击终端那条框,我们可以得到下面这张截图 点击将 ...

  9. why’s kafka so fast

    As we all know that Kafka is very fast, much faster than most of its competitors. So what’s the reas ...

  10. 修改Linux桌面高分屏下QT程序界面的缩放

    问题 Linux下的高分屏在Gnome.KDE中有缩放因子一说,但是对QT程序(常用如 WPS.网易云音乐等)无效,这里只是简记修改QT程序的缩放方法 解决 su #切换root用户 cp /etc/ ...