热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LR的原理,损失函数,求解方法

LR的原理,损失函数,求解方法_背诵版LR的原理损失函数求解方法LR的原理逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层逻辑

LR的原理,损失函数,求解方法_背诵版

  • LR的原理
  • 损失函数
  • 求解方法


LR的原理

  逻辑回归本质上是线性回归,只是在特征到结果的映射中加入了一层逻辑函数,g(z)=11+e−z{\rm{g}}(z) = \frac{1}{{1 + {e^{ - z}}}}g(z)=1+ez1,即:先把特征线性求和z=w0+w1∗x1+...,+wn∗xn{\rm{z}} = {w_0} + {w_1}*{x_1} + ..., + {w_n}*{x_n}z=w0+w1x1+...,+wnxn,然后使用函数g(z)作为假设函数来预测。
  逻辑回归用来分类0/1问题,也就是预测结果属于0或者属于1的二值分类问题,有模型:
p(y=1∣x)=g(wTx)=11+e−wTxp(y = 1|x) = g({w^T}x) = \frac{1}{{1 + {e^{ - {w^T}x}}}} p(y=1x)=g(wTx)=1+ewTx1
p(y=0∣x)=1−g(wTx)=e−wTx1+e−wTxp(y = 0|x) = 1 - g({w^T}x) = \frac{{{e^{ - {w^T}x}}}}{{1 + {e^{ - {w^T}x}}}} p(y=0x)=1g(wTx)=1+ewTxewTx

损失函数

  对于训练数据集,特征数据x={x1,x2,...,xm}x = \{ {x_1},{x_2},...,{x_m}\}x={x1,x2,...,xm}和对应的分类标签y={y1,...,ym}{\rm{y}} = \{ {y_1},...,{y_m}\}y={y1,...,ym}。假设m个样本相互独立,那么它们的联合分布为各边缘分布的乘积,得到似然函数:
L(w)=∏i=1mg(wTx)yi∗(1−g(wTx))1−yiL(w) = {\prod\limits_{i = 1}^m {g({w^T}x)} ^{{y_i}}}*{(1 - g({w^T}x))^{1 - {y_i}}} L(w)=i=1mg(wTx)yi(1g(wTx))1yi
取对数:
e(w)=ln⁡L(w)=∑i=1myi∗ln⁡g(wTx)+(1−y)ln⁡(1−g(wTx))e(w) = \ln L(w) = \sum\limits_{i = 1}^m {{y_i}*\ln g({w^T}x)} + (1 - y)\ln (1 - g({w^T}x)) e(w)=lnL(w)=i=1myilng(wTx)+(1y)ln(1g(wTx))

求解方法

  与线性回归类似,我们使用梯度上升的方法(类似与梯度下降方法),那么随机梯度上升更新规则为:w:=w+α∗∇we(w)w: = w + \alpha *{\nabla _w}e(w)w:=w+αwe(w)

∂∂wje(w)=∂∂wj{∑i=1m{yilng(wTxi)+(1−yi)ln(1−g(wTxi))}=∂∂wj∑i=1m[yig(wTxi)−1−yi1−g(wTxi)]g(wTxi)′=∂∂wj∑i=1m[yi−g(wTxi)](wTxi)′=∑i=1m[yi−g(wTxi)]wj\begin{array}{l} \frac{\partial }{{\partial {w_j}}}e(w) = \frac{\partial }{{\partial {w_j}}}\{ \sum\limits_{i = 1}^m {\{ {y_i}ln\;g({w^T}{x_i})} + (1 - {y_i})ln\;(1 - g({w^T}{x_i}))\} \\ \;\;\;\;\;\;\;\;\;\;\;\;\; = \frac{\partial }{{\partial {w_j}}}\sum\limits_{i = 1}^m {[\frac{{{y_i}}}{{g({w^T}{x_i})}} - \frac{{1 - {y_i}}}{{1 - g({w^T}{x_i})}}]g({w^T}{x_i})'} \\ \;\;\;\;\;\;\;\;\;\;\;\;\; = \frac{\partial }{{\partial {w_j}}}\sum\limits_{i = 1}^m {[{y_i} - g({w^T}{x_i})]({w^T}{x_i})'} \\ \;\;\;\;\;\;\;\;\;\;\;\;\; = \sum\limits_{i = 1}^m {[{y_i} - g({w^T}{x_i})]{w_j}} \end{array} wje(w)=wj{i=1m{yilng(wTxi)+(1yi)ln(1g(wTxi))}=wji=1m[g(wTxi)yi1g(wTxi)1yi]g(wTxi)=wji=1m[yig(wTxi)](wTxi)=i=1m[yig(wTxi)]wj


推荐阅读
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
author-avatar
钟z4z萍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有