微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

LR逻辑回归

功能

与线性回归一样,LR通过对训练数据的拟合,得到一个回归模型,对测试数据进行预测


特点

线性回归是用来估计连续型回应变量与一组预测变量之间关系的方法

逻辑回归用来估计非连续型(分类型)变量与一组预测变量之间关系的方法(非0即1,如新闻广告点击、是否患病)

对于01问题之所以用LR而不是线性回归,我是这么理解的

黑点和白点表示01两类样本,如果用线性回归,大体是红线的分类结果,显然误差较大;而如果用S型曲线则可以很精准的分类了。

因此说到底LR算法就是找了一个描述S型曲线的函数(就是sigmoid)对结果进行映射。


算法步骤

假设有n组样本,每组样本包含m个特征,那么LR模型将会有m+1个权重w


1) sigmoid函数映射(逻辑变换)

p取0~1,表示该样本属于1类的概率

2)最大似然求解权重

对所有样本,目标是预测值与实际值一致的概率最大

这里假设p3的实际值为0

接下来就很简单了,对式子取对数化为累加形式,再求导即可得到理论上取极值的权重


寻优算法

上一节中提到利用最大似然求解权重,但实际应用中很难对其求导,因此一般使用迭代寻优算法求得近似值

1)梯度下降法(GD)

基本思想就是从初始值出发,向着当前值与实际值的梯度方向前进,最终到达实际值附近结束

中a为步长,y为实际值


2)随机梯度下降法(SGD)

梯度下降是一种batch训练方式,每次对所有样本训练。但对于大量样本,这样是不经济的,随机梯度下降每次训练一个样本(公式同上),可以实现模型的在线更新


3)FTRL算法(Follow-the-regularized-leader

google 2013年提出的一种在线学习算法,“在处理诸如逻辑回归之类的带非光滑正则化项(例如1范数,做模型复杂度控制和稀疏化)的凸优化问题上性能非常出色”。

FTRL的理论推导可参考google的论文,下面是其工程实现的伪代码

算法输入有4个参数:alpha、beta、L1、L2,分别代表了步长,学习率,1范式和2范式正则化


正则化

FTRL算法里有正则化参数,正则化就是防止模型出现过拟合

“对于线性回归或逻辑回归的损失函数构成的模型,可能会有些权重很大,有些权重很小,导致过拟合(就是过分拟合了训练数据),使得模型的复杂度提高,泛化能力较差(对未知数据的预测能力)”(来源:http://blog.csdn.net/pakko/article/details/37878837)


正则化的目标就是,在保证特征数目不变的情况下,减小某些特征的权重,从而达到降低模型复杂度的效果


上式为加了正则化的梯度下降公式,式中lambd就是正则化参数


工业应用上的优化

理论上每个feature的score一个float值(一般被归一化到[ 0,1 ]),应用上可以按score的分布将每个feature进行切分。如年龄feature,如果以20岁作为步长,可以切分为5段(假设取值为0~100),这样当一个样本落在某个区间,该区间的子feature置1,其余为0。


参考资料

[1]H. Brendan McMahan and Matthew Streeter. Adap-tive bound optimization for online convex optimiza-tion. InCOLT,2010 (开始的那篇理论性paper)
[2] H. Brendan McMahan. A unied analysis of regular-ized dual averaging and composite mirror descent with implicit updates. Submitted,2011 (FTRL理论发展,regret bound和加入通用正则化项)
[3] H. Brendan McMahan,Gary Holt,D. Sculley,Michael Young,Dietmar Ebner,Julian Grady,Lan Nie,Todd Phillips,Eugene Davydov,Daniel Golovin,Sharat Chikkerur,Dan Liu,Martin Wattenberg,Arnar Mar Hrafnkelsson,Tom Boulos,Jeremy Kubica,Ad Click Prediction: a View from the Trenches,Proceedings of the 19th ACM SIGKDD International Conference on KNowledge discovery and Data Mining (KDD) (2013)(这篇是那篇工程性的paper)

[4]http://www.cnblogs.com/EE-NovRain/p/3810737.html(FTRL)

[5]http://blog.csdn.net/zouxy09/article/details/20319673(LR) [6] http://blog.csdn.net/huangxia73/article/details/21174885(LR) [7] http://blog.csdn.net/pakko/article/details/37878837(正则化)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


正则替换html代码中img标签的src值在开发富文本信息在移动端展示的项目中,难免会遇到后台返回的标签文本信息中img标签src属性按照相对或者绝对路径返回的形式,类似:<img src="qinhancity/v1.0.0/ima
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它是专门为文本处理设计的编程语言,也是行处理软件,通常用于扫描,过滤,统计汇总等工作,数据可以来自标准输入也可以是管道或文件。当读到第一行时,匹配条件,然后执行指定动作,在接着读取第二行数据处理,不会默认输出。如果没有定义匹配条件,则是默认匹配所有数据行,awk隐含循环,条件匹配多少次,动作就会执行多少次。逐行读取文本,默认以空格或tab键为分割符进行分割,将分割所得的各个字段,保存到内建变量中,并按模式或或条件执行编辑命令。与sed工作原理相比:s
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及他们的组合组成了一个规则,然后检查一个字符串是否与这种规则匹配来实现对字符的过滤或匹配。我们刚才在学习正则表达式的时候,我们表示数字,字母下划线的时候是用w表示的,为什么我们在书写的时候用的是w?我们可以发现我们分割空格的话,并没有达到我们预期的效果,这里我们可以使用正则表达式的方式进行分割。我们可以发现,我们和上面得到的结果不一致,既然出错了,肯定是我们的使用方式不对。看到这里我们就能感受到正则表达式的作用了,正则表达式是字符串处理的有力工具。
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发布,同步更新到和。欢迎大家投稿,,推荐或者自荐开源项目/资源/工具/文章~
本文涉及Shell函数,Shell中的echo、printf、test命令等。
常用正则表达,包括: 密码、 手机号、 身份证、 邮箱、 中文、 车牌号、 微信号、 日期 YYYY-MM-DD hh:mm:ss、 日期 YYY-MM-DD、 十六进制颜色、 邮政编号、 用户名、 QQ号
一、python【re】的用法1、re.match函数·单一匹配-推荐指数【★★】2、re.search函数·单一匹配-推荐指数【★★★★★】3、re.findall函数·多项匹配-推荐指数【★★★★★】4、re.finditer函数·多项匹配-推荐指数【★★★★】5、re.sub函数·替换函数-推荐指数【★★★★】二、正则表达式示例·总有一款适合你1、正则表达式匹配HTML指定id/class的标签2、正则表达式匹配HTML中所有a标签中的各类属性值3、获取标签的文本值
1.借助词法分析工具Flex或Lex完成(参考网络资源)2.输入:高级语言源代码(如helloworld.c)3.输出:以二元组表示的单词符号序列。通过设计、编制、调试一个具体的词法分析程序,加深对词法分析原理的理解,并掌握在对程序设计语言源程序进行扫描过程中将其分解为各类单词的词法分析方法。由于各种不同的高级程序语言中单词总体结构大致相同,基本上都可用一组正则表达式描述,所以构造这样的自动生成系统:只要给出某高级语言各类单词词法结构的一组正则表达式以及识别各类单词时词法分析程序应采取的语义动作,该系统