Logistic Regression的几个变种
原文:http://blog.xlvector.net/2014-02/different-logistic-regression/
最近几年广告系统成为很多公司的重要系统之一,定向广告技术是广告系统中的重要技术,点击率预估是定向广告技术中的重要组成部分,Logistic Regression是解决点击率预估最常用的机器学习算法。所以本文介绍一下Logistic Regression(下文简称LR)。
解决的问题
LR主要用来解决两类分类问题。下面的问题是一些典型的两类分类问题:
- 用户看到一个广告后会点还是不会点
- 一个人是男还是女
- 一张图片中的图像是不是人脸
- 一个人借钱后会不会还
两类分类问题是机器学习的基本问题,所有的分类算法至少都可以解决两类分类问题, 比如:
- 决策树,随机森林,GBDT
- SVM, Vector Machine
- Gauss Process
- 神经网络
那为什么点击率预估问题选择LR呢,主要是因为:
- 数据规模很大,而LR无论是训练还是预测的计算复杂度很低
- 特征很多,对特征做了线性变换,因此问题基本是线性的,线性分类器就可以解决
- LR不仅可以预测一个样本属于那一类,而且可以给出属于每一类的概率
- LR的模型简单,从而解释预测结果也相对容易
- LR的模型简单,从而并行化相对容易
不同类型的LR
自从LR提出之后,学术界对它的改进主要基于两个方面:
- 用什么样的正则化,早期是L2正则化,而最近用的比较多的是L1正则化
- 用什么样的优化算法,如何在最短的时间内收敛到最优的解
正则化
正则化是机器学习中的一个重要技术,它的主要目的是让防止一个模型过拟合。目前比较常用的正则化有L1,和L2:
- L2正则化认为特征的权重的先验分布是一个0附近的高斯分布
- L1正则化认为特征的权重的先验分布是一个0附近的拉普拉斯分布
L1正则化相对与L2正则化有一个优点,就是加入L1正则化的损失函数在优化后,绝大多数特征的权重都是0。这个特性可以大大减少在线预估时的内存占用,并提高预测的速度,这是因为
- 在线预估的主要计算样本的特征向量x和模型的特征权重向量w的点乘
- w向量一般需要用HashMap存储,而一个特征的权重为0,就不需要存储了,因为HashMap中不存在的特征就是权重为0
- 所以L1正则化可以减少w的内存占用,而w减小后,计算w和x的点乘的速度也能提高
优化方法
L2正则化的LR的损失函数是一个可以求导的凸函数,从而可以用最速下降法(梯度法)进行优化。一般梯度法有3种
- Batch
- Mini batch
- SGD (随机梯度法)
这3种方法是最早提出的优化方法。可以用梯度法,自然也可以用牛顿法来获得超线性收敛的特性,于是共轭梯度法和LBFGS也被用来优化LR。LBFGS是基于L2正则化的,如果基于L1正则化,微软提出了OWLQN算法(http://blog.csdn.net/qm1004/article/details/18083637)。
无论是梯度法还是拟牛顿法,它们都是频率学派的优化双方。它们其实是极大似然估计用了不同的优化算法。于是,贝叶斯学派也提出了Bayesian的优化算法
- Ad Predictor : 这是微软的研究员提出的一种算法, 论文可以参考 Web-Scale Bayesian Click-Through Rate Prediction for Sponsored Search Advertising in Microsoft’s Bing Search Engine。
Ad Predictor有几个比较好的特性
- 它只需要扫瞄一次数据集就可以收敛到最优解,而不是像梯度法或者拟牛顿法那样需要反复迭代数据集。
- 它不仅仅能预测出一个样本是正样本的概率,而且还可以给出对于这个概率预测值的置信度
Ad Predictor很好了,不过它是基于L2正则化的,这样总是让人不能满意。Google在2013年发表了一篇论文(Ad Click Prediction: a View from the Trenches),介绍了一个基于L1正则化的LR优化算法FTRL-Proximal,且又具有上述Ad Predictor的两个优点。
并行化
算法的并行化有两种
- 无损的并行化:算法天然可以并行,并行只是提高了计算的速度和解决问题的规模,但和正常执行的结果是一样的。
- 有损的并行化:算法本身不是天然并行的,需要对算法做一些近似来实现并行化,这样并行化之后的双方和正常执行的结果并不一致,但是相似的。
在前面提到的算法中,基于Batch的算法(Batch-GD, LBFGS, OWLQN)都是可以进行无损的并行化的。而基于SGD的算法(Ad Predictor, FTRL-Proximal)都只能进行有损的并行化。
Logistic Regression的几个变种的更多相关文章
- 逻辑回归(Logistic Regression)算法小结
一.逻辑回归简述: 回顾线性回归算法,对于给定的一些n维特征(x1,x2,x3,......xn),我们想通过对这些特征进行加权求和汇总的方法来描绘出事物的最终运算结果.从而衍生出我们线性回归的计算公 ...
- 通俗地说逻辑回归【Logistic regression】算法(二)sklearn逻辑回归实战
前情提要: 通俗地说逻辑回归[Logistic regression]算法(一) 逻辑回归模型原理介绍 上一篇主要介绍了逻辑回归中,相对理论化的知识,这次主要是对上篇做一点点补充,以及介绍sklear ...
- sklearn逻辑回归(Logistic Regression,LR)调参指南
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- 逻辑回归 Logistic Regression
逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...
- logistic regression与SVM
Logistic模型和SVM都是用于二分类,现在大概说一下两者的区别 ① 寻找最优超平面的方法不同 形象点说,Logistic模型找的那个超平面,是尽量让所有点都远离它,而SVM寻找的那个超平面,是只 ...
- Logistic Regression - Formula Deduction
Sigmoid Function \[ \sigma(z)=\frac{1}{1+e^{(-z)}} \] feature: axial symmetry: \[ \sigma(z)+ \sigma( ...
- SparkMLlib之 logistic regression源码分析
最近在研究机器学习,使用的工具是spark,本文是针对spar最新的源码Spark1.6.0的MLlib中的logistic regression, linear regression进行源码分析,其 ...
- [OpenCV] Samples 06: [ML] logistic regression
logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...
- Stanford机器学习笔记-2.Logistic Regression
Content: 2 Logistic Regression. 2.1 Classification. 2.2 Hypothesis representation. 2.2.1 Interpretin ...
随机推荐
- [CEOI2008]order --- 最小割
[CEOI2008]order 题目描述: 有N个任务,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给出这些参数, ...
- Hdu4903 The only survival
The only survival Time Limit: 40000/20000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Ot ...
- hdu 1026 bfs+记录路径
题意:从0,0点出发到n-1,m-1点,路上的数字代表要在这个点额外待多少秒,求最短的路 递归输出路径即可 #include<cstdio> #include<iostream> ...
- 【BZOJ】1864: [Zjoi2006]三色二叉树
1864: [Zjoi2006]三色二叉树 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 1295 Solved: 961[Submit][Status ...
- 【失踪人口回归】第11届东北地区大学生程序设计竞赛——Time to make some change
对哈尔滨出租车和纸质题目和2148473647的吐槽都被毕克神牛在知乎上(https://www.zhihu.com/question/59782275/answer/169402588)pick/b ...
- bzoj 1312 最大密度子图
晕,m=0是要输出1(弄的我还找管理员要数据,但明显题意是叫我们输出0呀) 最大密度子图,把边转换成点,然后二分答案,跑最大权闭合子图判定是否可行. #include <cstdio> # ...
- Mysql的学习随笔day2
关于输入中文的问题,各种更改完utf8后仍然乱码. 最后找到一种可行的方法:在insert之前,输入 set names 'gbk' 约束保证数据的完整性和一致性.约束分为表级约束和列级约束,前者可以 ...
- Codeforces Round #350 (Div. 2) D1. Magic Powder - 1 二分
D1. Magic Powder - 1 题目连接: http://www.codeforces.com/contest/670/problem/D1 Description This problem ...
- OpenVPN分配静态IP以及同一网段内IP个数(64个)
说明:简单的来说,同一网段内可用的IP数量只有64个:(不一定正确)最直接的解释就是每个客户端占用两个IP,因为根据IP掩码位/30得知可用的IP就是两个.对于为什么只有64个,下面是官方的解释. 解 ...
- Easy WordPress Updates: Store FTP Info in wp-config.php
Saw an interesting blog post on Twitter today about storing WordPress FTP information in wp-config.p ...