逻辑回归(Logistic Regression,简称LR)是机器学习中十分常用的一种分类算法,在互联网领域得到了广泛的应用,无论是在广告系统中进行CTR预估,推荐系统中的预估转换率,反垃圾系统中的识别垃圾内容……都可以看到它的身影。LR以其简单的原理和应用的普适性受到了广大应用者的青睐。实际情况中,由于受到单机处理能力和效率的限制,在利用大规模样本数据进行训练的时候往往需要将求解LR问题的过程进行并行化,本文从并行化的角度讨论LR的实现。

LR的基本原理及其推导可以参见逻辑斯蒂回归(Logistic Regression)详解

这里只略作回顾:

算法流程

图0 求解最优化目标函数的基本步骤

LR方法通常采用的是梯度下降法,梯度下降法又有相当多的种类,在这里不做具体的介绍。

回归梯度下降法的梯度更新公式(一般会取平均值):

并行LR的实现

由逻辑回归问题的求解方法中可以看出,无论是梯度下降法、牛顿法、拟牛顿法,计算梯度都是其最基本的步骤,并且L-BFGS通过两步循环计算牛顿方向的方法,避免了计算海森矩阵。因此逻辑回归的并行化最主要的就是对目标函数梯度计算的并行化。从梯度更新公式中可以看出,目标函数的梯度向量计算中只需要进行向量间的点乘和相加,可以很容易将每个迭代过程拆分成相互独立的计算步骤,由不同的节点进行独立计算,然后归并计算结果。

将M个样本的标签构成一个M维的标签向量,M个N维特征向量构成一个M*N的样本矩阵,如图3所示。其中特征矩阵每一行为一个特征向量(M行),列为特征维度(N列)。

图1 样本标签向量 & 样本矩阵标题

如果将样本矩阵按行划分,将样本特征向量分布到不同的计算节点,由各计算节点完成自己所负责样本的点乘与求和计算,然后将计算结果进行归并,则实现了“按行并行的LR”。按行并行的LR解决了样本数量的问题,但是实际情况中会存在针对高维特征向量进行逻辑回归的场景(如广告系统中的特征维度高达上亿),仅仅按行进行并行处理,无法满足这类场景的需求,因此还需要按列将高维的特征向量拆分成若干小的向量进行求解。

    (1) 数据分割

假设所有计算节点排列成m行n列(m*n个计算节点),按行将样本进行划分,每个计算节点分配M/m个样本特征向量和分类标签;按列对特征向量进行切分,每个节点上的特征向量分配N/n维特征。如图2所示,同一样本的特征对应节点的行号相同,不同样本相同维度的特征对应节点的列号相同。

图2 并行LR中的数据分割

一个样本的特征向量被拆分到同一行不同列的节点中,即:

其中表示第 行的第 个向量,表示在第 列节点上的分量。同样的,用 表示特征向量 在第 列节点上的分量,即:

    (2) 并行计算

观察目标函数的梯度计算公式,其依赖于两个计算结果:特征权重向量和特征向量的点乘,标量和特征向量的相乘。其中可以将目标函数的梯度计算分成两个并行化计算步骤和两个结果归并步骤:

 各节点并行计算点乘,计算,其中表示第 次迭代中节点上的第 个特征向量与特征权重分量的点乘, 为第 次迭代中特征权重向量在第 列节点上的分量。

 对行号相同的节点归并点乘结果:

计算得到的点乘结果需要返回到该行所有计算节点中,如图3所示。

图3 点乘结果归并

 各节点独立算标量与特征向量相乘:

可以理解为由第 行节点上部分样本计算出的目标函数梯度向量在第 列节点上的分量。

 对列号相同的节点进行归并:

 就是目标函数的梯度向量 在第 列节点上的分量,对其进行归并得到目标函数的梯度向量:

这个过程如图4所示。

图4 梯度计算结果归并

综合上述步骤,并行LR的计算流程如图5所示。比较图0和图5,并行LR实际上就是在求解损失函数最优解的过程中,针对寻找损失函数下降方向中的梯度方向计算作了并行化处理,而在利用梯度确定下降方向的过程中也可以采用并行化(如L-BFGS中的两步循环法求牛顿方向)。

图5 并行LR计算流程

小结

看上面的公式什么的可能很复杂,符号标记既模糊又复杂。概括一下,其实很简单。

1、按行并行。即将样本拆分到不同的机器上去。其实很简单,重新看梯度计算的公式:

其中。比如我们按行将其均分到两台机器上去,则分布式的计算梯度,只不过是每台机器都计算出各自的梯度,然后归并求和再求其平均。为什么可以这么做呢?因为公式只与上一个时刻的以及当前样本有关。所以就可以并行计算了。

2、按列并行。按列并行的意思就是将同一样本的特征也分布到不同的机器中去。上面的公式为针对整个,如果我们只是针对某个分量,可得到对应的梯度计算公式即不再是乘以整个,而是乘以对应的分量,此时可以发现,梯度计算公式仅与中的特征有关系,我们就可以将特征分布到不同的计算上,分别计算对应的梯度,最后归并为整体的,再按行归并到整体的梯度更新。

这样来理解其实就避免了繁杂的公式。其实,对于LR的分布式训练,还是要自己亲身体会过那种具有分布式需求的项目。我如是认为。

【机器学习】LR的分布式(并行化)实现相关推荐

  1. 机器学习 LR getA()

    机器学习 LR getA() 前面的几位回答都没有解决getA()是什么的问题,碰到同样的问题,解释如下: matrix.getA() Return self as an ndarray object ...

  2. 机器学习-LR推导及与SVM的区别

    之前整理过一篇关于逻辑回归的帖子,但是只是简单介绍了一下了LR的基本思想,面试的时候基本用不上,那么这篇帖子就深入理解一下LR的一些知识,希望能够对面试有一定的帮助. 1.逻辑斯谛分布 介绍逻辑斯谛回 ...

  3. cube一站式云原生机器学习平台-加速分布式任务的运行效率

    全栈工程师开发手册 (作者:栾鹏) 一站式云原生机器学习平台 前言:cube是tme开源的云原生机器学习平台,目前包含特征平台,支持在/离线特征:数据源管理,支持结构数据和媒体标注数据管理:在线开发, ...

  4. 机器学习——LR(线性回归)、LRC(线性回归分类)与人脸识别

    目录 系列文章目录 一.LR的概念.原理与LR用于简单数据的预测 1.LR简介 2.LR算法模型 3.LR用于简单数据的预测 二.LRC的简介与算法流程 1.LRC(线性回归分类)简介 2.LRC算法 ...

  5. 机器学习LR模型,在面试中经常被问到的问题

    面试机器学习岗位或者算法岗位,经常会被问到一些机器学习算法,其中还有很多细节性的知识.在面试中接触到的LR模型是最多的,为什么?大概原因是LR在公司中用的比较多,这时你可能会问了,这个算法不是很简单吗 ...

  6. 瞎聊机器学习——LR(Logistic Regression)逻辑斯蒂回归(一)

    逻辑斯蒂回归是我们在学习以及工作中经常用到的一种分类模型,下面通过本文来讲解一下逻辑斯蒂回归(logistic regression,下文简称LR)的概念.数学推导. 一.逻辑斯蒂回归的概念 首先希望 ...

  7. 机器学习 - - - LR和SVM的联系与区别?

    解析一 LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题) 区别: 1.LR是参数模型,svm是非参数模型,linear和rbf则是针对数据线性可分和不 ...

  8. 机器学习 LR中的参数迭代公式推导——极大似然和梯度下降

    Logistic本质上是一个基于条件概率的判别模型(DiscriminativeModel). 函数图像为: 通过sigma函数计算出最终结果,以0.5为分界线,最终结果大于0.5则属于正类(类别值为 ...

  9. [机器学习] LR与SVM的异同

    1 为什么将LR和SVM放在一起来进行比较? 回答这个问题其实就是回答LR和SVM有什么相同点. 第一,LR和SVM都是分类算法. 看到这里很多人就不会认同了,因为在很大一部分人眼里,LR是回归算法. ...

最新文章

  1. linux pcre-devel,ubuntu - 我应该为'pcre-devel'安装什么软件包? - Ubuntu问答
  2. Spring Cloud应用开发(三:客户端的负载均衡)
  3. Eclipse中使用Git
  4. Photoshop初涉---第一次系统地学习
  5. 2008matlab error 95,VS2008和MATLAB2010b混合编程有关问题 error LINK2028 恳请指教!(2)
  6. python数据结构《排序专题复习》
  7. 如何找到哪些数据库中哪些用户有DBA权限
  8. day20 面向对象编程
  9. markdown 语法_markdown特殊语法之上下标
  10. 04732微型计算机技术,04732微型计算机及其接口技术200710
  11. 【CAD开发】3dxml文件格式读取(Python、C++、C#)
  12. ip定压终端服务器是什么,IP网络功放 IP网络物联功放 IP网络联机功放 IP网络数字定压功放...
  13. mysql kegg_下载最新版的KEGG信息,并且解析好
  14. 关于“无法读取 KSR data-disk 1 扇区。。”蓝屏问题
  15. SpringBoot+redis实现用户或者ip恶意单位时间内访问
  16. VB中使用DirectX库的简明教程(3)
  17. mahout java api_Mahout推荐算法API详解
  18. 兼容性测试平台sonic搭建(Angent windows)
  19. 如何实现“Ipv6网站在线检测工具”
  20. 开源共享 · 融金服产 — 2021 中关村论坛开源创新发展论坛在京举办

热门文章

  1. readUnsignedInt () 自动移动字节流位置,和.net是一样的
  2. 文件包含--简单的代码审计绕过
  3. vue学习- 列表渲染v-for
  4. java实验1_Java程序实验1
  5. PHP调用数据库数据乱码问题
  6. 安卓系统使用摄像头API
  7. 避免关注底层硬件,Nvidia将机器学习与GPU绑定
  8. “局部图像特征描述概述”--樊彬老师
  9. Linux 系统管理员工具集
  10. case --when