数学表达式: 从恐惧到单挑 (10. Logistic 回归)

2024-01-03 13:59

本文主要是介绍数学表达式: 从恐惧到单挑 (10. Logistic 回归),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

10. Logistic 回归

logistic 回归用于分类, 特别是二分类 (仅有两个类别).

10.1 分割超平面

  • 线性分类模型的目标, 是找到一个超平面, 把正例、负例分割.
  • 问题: 如何评价每个超平面的性能?
  • 方案之一, 是最小化错分对象的数量, 但如果多个超平面都满足条件怎么办?
  • 哪个超平面是最优的, 就体现不同算法的设计理念.
  • 方案方二, 就是根据每个对象到超平面的距离, 来计算其损失. 如果正确分类, 则离超平面越远越好; 如果错误分类, 则离超平面越近越好.

在这里插入图片描述图 1. 分割超平面

10.2 点到直线的距离

  • m m m 维空间上, m m m维向量 w \mathbf{w} w 确定了一条直线.
  • 为方便起见, 令 w \mathbf{w} w 为列向量.
  • x \mathbf{x} x w \mathbf{w} w 的距离为 x w \mathbf{x}\mathbf{w} xw.
  • 这个距离带符号. 正号代表 x \mathbf{x} x w \mathbf{w} w 的某一边, 负号则表示另一边.
  • 参见《高等数学》.

10.3 sigmoid 函数

在这里插入图片描述

  • x \mathbf{x} x 到超平面的距离 (带符号) 取值范围为 ( − ∞ , + ∞ ) (-\infty, +\infty) (,+), 希望将其转成概率.
  • 如果距离为负而且离超平面很远, 则它为正例的概率就接近 0;
  • 如果距离为正而且离超平面很远, 则它为正例的概率就接近 1.
  • 使用 sigmoid 函数将距离转成 (我们以为的) 概率.
    P ( y = 1 ∣ x ; w ) = 1 1 + e − x w (1) P(y = 1 \vert \mathbf{x}; \mathbf{w}) = \frac{1}{1 + e^{-\mathbf{xw}}} \tag{1} P(y=1x;w)=1+exw1(1)
    源码: p(y = 1 \vert \mathbf{x}; \mathbf{w}) = \frac{1}{1 + e^{-\mathbf{xw}}}

10.4 优化目标

  • 统一 y i y_i yi 不同取值 (0 或 1):
    P ( y i ∣ x i ; w ) = P ( y i = 1 ∣ x i ; w ) y i ( 1 − P ( y i = 1 ∣ x i ; w ) ) 1 − y i (2) P(y_i \vert \mathbf{x}_i; \mathbf{w}) = P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w})^{y_i} (1 - P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w}))^{1 - y_i} \tag{2} P(yixi;w)=P(yi=1xi;w)yi(1P(yi=1xi;w))1yi(2)
    显然, 这个概率越大越好.
    要针对全部对象进行优化, 可将相应的概率相乘 (最大似然, maximal likelihood):
    arg max ⁡ w L ( w ) = ∏ i = 1 n P ( y i ∣ x i ; w ) (4) \argmax_\mathbf{w} L(\mathbf{w}) = \prod_{i = 1}^n P(y_i \vert \mathbf{x}_i; \mathbf{w}) \tag{4} wargmaxL(w)=i=1nP(yixi;w)(4)

10.5 求解

  • 相乘计算困难, 将其求一个对数, 不改变单调性
    log ⁡ L ( w ) = ∑ i = 1 n log ⁡ P ( y i ∣ x i ; w ) = ∑ i = 1 n y i log ⁡ P ( y i = 1 ∣ x i ; w ) + ( 1 − y i ) log ⁡ ( 1 − P ( y i = 1 ∣ x i ; w ) ) = ∑ i = 1 n y i log ⁡ P ( y i = 1 ∣ x i ; w ) 1 − P ( y i = 1 ∣ x i ; w ) + log ⁡ ( 1 − P ( y i = 1 ∣ x i ; w ) ) = ∑ i = 1 n y i x i w − log ⁡ ( 1 + e x i w ) (4) \begin{aligned}\log L(\mathbf{w}) & = \sum_{i = 1}^n \log P(y_i \vert \mathbf{x}_i; \mathbf{w}) \\ & = \sum_{i = 1}^n y_i \log P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w}) + (1 - y_i) \log(1 - P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w})) \\ & = \sum_{i = 1}^n y_i \log \frac{P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w})}{1 - P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w})} + \log (1 - P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w}))\\ & = \sum_{i = 1}^n y_i \mathbf{x}_i \mathbf{w} - \log (1 + e^{\mathbf{x}_i \mathbf{w}}) \end{aligned}\tag{4} logL(w)=i=1nlogP(yixi;w)=i=1nyilogP(yi=1xi;w)+(1yi)log(1P(yi=1xi;w))=i=1nyilog1P(yi=1xi;w)P(yi=1xi;w)+log(1P(yi=1xi;w))=i=1nyixiwlog(1+exiw)(4)
    源码: \begin{aligned}\log L(\mathbf{w}) & = \sum_{i = 1}^n \log P(y_i \vert \mathbf{x}i; \mathbf{w}) \
    & = \sum
    {i = 1}^n y_i \log P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w}) + (1 - y_i) \log(1 - P(y_i = 1 \vert \mathbf{x}i; \mathbf{w})) \
    & = \sum
    {i = 1}^n y_i \log \frac{P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w})}{1 - P(y_i = 1 \vert \mathbf{x}_i; \mathbf{w})} + \log (1 - P(y_i = 1 \vert \mathbf{x}i; \mathbf{w}))\
    & = \sum
    {i = 1}^n y_i \mathbf{x}_i \mathbf{w} - \log (1 + e^{\mathbf{x}_i \mathbf{w}}) \end{aligned}\tag{4}

  • w \mathbf{w} w 求偏导
    ∂ log ⁡ L ( w ) ∂ w = ∑ i = 1 n y i x i − e x i w 1 + e x i w x i = ∑ i = 1 n ( y i − e x i w 1 + e x i w ) x i (5) \begin{aligned} \frac{\partial \log L(\mathbf{w})}{\partial \mathbf{w}} & = \sum_{i = 1}^n y_i \mathbf{x}_i - \frac{e^{\mathbf{x}_i \mathbf{w}}}{1 + e^{\mathbf{x}_i \mathbf{w}}} \mathbf{x}_i\\ & = \sum_{i = 1}^n \left(y_i - \frac{e^{\mathbf{x}_i \mathbf{w}}}{1 + e^{\mathbf{x}_i \mathbf{w}}}\right) \mathbf{x}_i\end{aligned} \tag{5} wlogL(w)=i=1nyixi1+exiwexiwxi=i=1n(yi1+exiwexiw)xi(5)
    源码: \begin{aligned} \frac{\partial \log L(\mathbf{w})}{\partial \mathbf{w}} & = \sum_{i = 1}^n y_i \mathbf{x}_i - \frac{e^{\mathbf{x}_i \mathbf{w}}}{1 + e^{\mathbf{x}_i \mathbf{w}}} \mathbf{x}i\
    & = \sum
    {i = 1}^n \left(y_i - \frac{e^{\mathbf{x}_i \mathbf{w}}}{1 + e^{\mathbf{x}_i \mathbf{w}}}\right) \mathbf{x}_i\end{aligned} \tag{5}

  • 令该偏导为 0, 无法获得解析式, 因此用梯度下降.
    w t + 1 = w t − α ∂ log ⁡ L ( w ) ∂ w (6) \mathbf{w}^{t + 1} = \mathbf{w}^t - \alpha \frac{\partial \log L(\mathbf{w})}{\partial \mathbf{w}} \tag{6} wt+1=wtαwlogL(w)(6)

10.6 作业

自己推导一遍, 并描述这个方法的特点 (不少于 5 条).

这篇关于数学表达式: 从恐惧到单挑 (10. Logistic 回归)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/565929

相关文章

SpringBoot @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

uva 10014 Simple calculations(数学推导)

直接按照题意来推导最后的结果就行了。 开始的时候只做到了第一个推导,第二次没有继续下去。 代码: #include<stdio.h>int main(){int T, n, i;double a, aa, sum, temp, ans;scanf("%d", &T);while(T--){scanf("%d", &n);scanf("%lf", &first);scanf

uva 10025 The ? 1 ? 2 ? ... ? n = k problem(数学)

题意是    ?  1  ?  2  ?  ...  ?  n = k 式子中给k,? 处可以填 + 也可以填 - ,问最小满足条件的n。 e.g k = 12  - 1 + 2 + 3 + 4 + 5 + 6 - 7 = 12 with n = 7。 先给证明,令 S(n) = 1 + 2 + 3 + 4 + 5 + .... + n 暴搜n,搜出当 S(n) >=

uva 11044 Searching for Nessy(小学数学)

题意是给出一个n*m的格子,求出里面有多少个不重合的九宫格。 (rows / 3) * (columns / 3) K.o 代码: #include <stdio.h>int main(){int ncase;scanf("%d", &ncase);while (ncase--){int rows, columns;scanf("%d%d", &rows, &col