逻辑回归总结

一句话概括逻辑回归:逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法运用梯度下降来求解参数,以达到将数据分类的目的。(求解参数时常见的算法还有:随机梯度下降法,牛顿法,拟牛顿法等)

逻辑回归的优缺点:

优点:

  1. 可解释性非常好。从特征的权重可以看到不同的特征对最后结果的影响。
  2. 模型效果不错。如果特征工程做的好,效果不会太差。
  3. 实现简单,计算量非常小,训练速度较快,存储资源低(计算量仅仅只和特征的数目相关)。
  4. 通过调整阈值,可以调整输出结果。

缺点:

  1. 容易欠拟合。因为形式简单,而现实中的数据非常复杂,因此,很难达到很高的准确性。
  2. 很难处理数据不平衡的问题。如:对于一个正负样本非常不平衡的问题,正负样本比 10000:1,把所有样本都预测为正也能使损失函数的值比较小。
  3. 无法自动的进行特征筛选。
  4. 只能处理二分类问题。

LR 和线性回归的区别:

损失函数:线性模型是平方损失函数,而逻辑回归则是其极大似然函数。

逻辑回归中为什么使用对数损失而不用平方损失:

逻辑回归如果使用平方损失(最小二乘法),其损失函数是非凸的,不容易求解,容易得到其局部最优解。 而如果使用极大似然,其目标函数就是对数似然函数,该损失函数是关于未知参数的高阶连续可导的凸函数,便于求其全局最优解。(这里所说的对数损失和极大似然是相同的)

LR和感知机的区别:

LR和感知机都是线性模型都可以用于解决二分类问题,但二者有两点不同:

  1. 损失函数:LR使用极大似然对数损失,感知机为均方损失(所有误分类点到分类超平面的总距离)
  2. 激活函数:LR使用连续且可导的sigmoid函数,将结果限制在0-1之间,有了概率解释的能力,能更好的分类结果。感知机使用分段的阶跃函数,对分类结果的处理比较粗糙,非0即1而不是返回一个概率。

逻辑回归在训练的过程当中,如果有很多的特征高度相关或者说有一个特征重复了很多遍,会造成怎样的影响

如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。 但是对特征本身来说的话,假设只有一个特征,在不考虑采样的情况下,将它重复 N 遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了 N 遍,实质上将原来的特征分成了 N 份,每一个特征都是原来特征权重值的N分之一。

 

逻辑回归是一种广义线性模型,它通过sigmoid函数将线性函数的结果进行映射,目标函数的取值空间从(-∞,+∞)映射到了(0,1),在进行分类时,我们可以设定一个阈值,当预测概率大于该阈值时判定为正例,小于该阈值时判定为负例。

 

逻辑回归推导:

为什么逻辑回归使用sigmoid函数而不使用单位阶跃函数?

单位阶跃函数:预测值大于0就判为正例,预测值小于0则判定为负例,预测值为临界值则可任意判别,但其不连续,不充分光滑,无法进行求解。

如何使用逻辑回归进行多分类?

二分类逻辑回归:激活函数为sigmoid,损失函数为交叉熵(对数似然损失logloss在二分类时可以简化为交叉熵损失函数)

多分类逻辑回归:激活函数为softmax,损失函数为logloss

LR可以⽤用核么?可以怎么⽤用?l1和l2正则项是啥?lr加l1还是l2好?加哪个可以⽤用核(加l2正则项,和svm类似,加l2正则项可以⽤用核⽅方便便处理理)

为什什么LR需要归⼀一化或者取对数,为什什么LR把特征离散化后效果更更好,为什什么把特征组合之后还能提升,反正这些基本都是增强了了特征的表达能⼒力力,或者说更更容易易线性可分吧
美团技术团队《Logistic Regression 模型简介》https://tech.meituan.com/intro_to_logistic_regression.html
SVM和logistic回归分别在什什么情况下使⽤用?https://www.zhihu.com/question/21704547
逻辑斯蒂回归能否解决⾮非线性分类问题?https://www.zhihu.com/question/29385169

在逻辑回归中添加多项式项构造多项式LR,可以提高模型的表达能力,从而对非线性问题进行分类(几乎可以构造任意形状的决策边界)


为什什么LR可以⽤用来做CTR预估?https://www.zhihu.com/question/23652394

naive bayes和logistic regression的区别http://m.blog.csdn.net/blog/muye5/19409615

离散化LR的好处;逻辑回归的特征处理,连续值、离散值,离散化连续特征的好处

 

Logistic Regression

关于sigmoid的由来也可已通过推导的方式得到

  • 其一是假设输入样本的分布服从伯努利分布,而伯努利分布属于指数族分布,所以我们可以通过将用来进行模型参数估计的似然函数调整为服从指数族分布的表现形式就可以推导得到sigmoid函数
  • 其二则是根据最大熵模型导出,通过对模型的复杂度作出限制,根据模型未知时熵最大的模型最佳,来转化为最大熵的约束条件优化问题,然后通过拉格朗日对偶性求解得到

优缺点

  • 优点
    • 判别模型:LR模型直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确所带来的问题
    • 预测概率:LR模型不是仅预测出类别,而是可得到近似概率预测,这对于许多需利用概率辅助决策的任务很有用
    • 凸函数:对数几率函数是任意阶可导的凸函数,有很好的数学性质,现有很多数值优化算法均可直接用于求取最优解
    • 效率:实现简单,分类时计算量非常小,速度快,存储资源低
  • 缺点
    • 容易欠拟合,一般准确度不太高
    • 原始的LR仅能处理二分类问题,且必须线性可分(衍生出的softmax可以用于多分类)

 

LR模型在工业界的应用

常见应用场景

  • 预估问题场景(如推荐、广告系统中的点击率预估,转化率预估等)
  • 分类场景(如用户画像中的标签预测,判断内容是否具有商业价值,判断点击作弊等

    LR适用上述场景的原因

    LR模型自身的特点具备了应用广泛性

  • 模型易用:LR模型建模思路清晰,容易理解与掌握;

  • 概率结果:输出结果可以用概率解释(二项分布),天然的可用于结果预估问题上;
  • 强解释性:特征(向量)和标签之间通过线性累加与Sigmoid函数建立关联,参数的取值直接反应特征的强弱,具有强解释性;
  • 简单易用:有大量的机器学习开源工具包含LR模型,如sklearn、spark-mllib等,使用起来比较方便,能快速的搭建起一个learning task pipeline;

其他考点

横向对比与联系

  • LR与线性回归的联系与区别
    逻辑回归和线性回归首先都可看做广义的线性回归,其次经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数,另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好。
  • LR与最大熵模型
    逻辑回归跟最大熵模型没有本质区别。逻辑回归是最大熵对应类别为二类时的特殊情况,也就是当逻辑回归类别扩展到多类别时,就是最大熵模型。
    • 指数簇分布的最大熵等价于其指数形式的最大似然。
    • 二项式分布的最大熵解等价于二项式指数形式(sigmoid)的最大似然;
    • 多项式分布的最大熵等价于多项式分布指数形式(softmax)的最大似然。
  • LR与感知机
    • 相同点
      • 都是线性分类模型,原始模型都只能处理二分类问题
      • 模型的形式相似(都是在线性模型外通过联系函数映射到另外的空间,只不过感知机是符号函数,LR是sigmoid(或者说Logistic)函数)
      • 训练方法都是使用梯度下降法
    • 不同点
      • LR输出为仅是概率的值,而感知机输出为1/-1

 

 

 

 

 

SVM:

SVM的损失函数?为什么要用Hinge Loss?

 SVM和LR哪个更容易过拟合,当数据不平衡时SVM会发生什么情况?

kkt条件具体是什么?KKT限制条件

SMO(序列列最⼩小优化)来解决这个对偶问题。
核函数(哪个地⽅方引⼊入、画图解释⾼高维映射,⾼高斯核可以升到多少维,如何选择核函数)
加⼤大训练数据量量⼀一定能提⾼高SVM准确率吗?
可以做回归吗,怎么做
⽀持向量量机(SVM)是否适合⼤大规模数据?https://www.zhihu.com/question/19591450
SVM和逻辑斯特回归对同一样本A进⾏行行训练,如果某类中增加一些数据点,那么原来的决策边界分别会怎么变化?https://www.zhihu.com/question/30123068
各种机器器学习的应⽤用场景分别是什什么?例例如,k近邻,贝叶斯,决策树,svm,逻辑斯蒂回归和最大熵模型。https://www.zhihu.com/question/26726794
Linear SVM 和 LR 有什什么异同?https://www.zhihu.com/question/26768865

 

  • 从感知机说开:首先SVM也是一种针对分类特别是二分类任务的模型,而关于SVM模型的原理可以先从感知机说起;感知机在处理一项二分类任务时,从几何的角度理解可以认为是试图在输入空间内找到一个可以将样本点按照类别分开的超平面,不过感知机是通过最小化误分类的样本点来完成这样操作,直观上理解就是将划分超平面往被错分的样本点方向移动直到越过误分类点完成正确分类,所以这种方式寻找到的分类超平面往往存在无穷多个(对于线性可分问题);而支持向量机则不限于此,其目的不仅是找到一个可以将正反样例正确分类的超平面,它还试图将正反样例尽可能地分开,也就是说让样例点到分割超平面的距离尽可能大;所以相对而言,(线性可分)支持向量机可以理解为在感知机的基础上加了一层约束,及间隔最大化约束,使得训练得到的分离超平面是唯一的;
    可以看看感知机和SVM的模型表达形式是一致的,只是SVM多了更强的约束条件

    f(x)=sign(w∗⋅x+b∗)f(x)=sign(w∗⋅x+b∗)

  • 那么如何使得样例点到分割超平面的距离最大化呢?首先我们需要找到距离分离超平面距离最近的点(即支持向量),然后如果我们能最大化这些点到分离超平面的距离也就间接地最大化了所有数据集到分离超平面的距离;其次这个距离该如何衡量呢?定义函数间隔来衡量这一距离(通过点到平面的距离可以推导得出几何间隔),γˆ=mini=1,…,Nγiˆγ^=mini=1,…,Nγi^,但是选择分离超平面时,仅有函数间隔是不够的,因为w,bw,b可以成比例变化使得函数间隔为无穷大而不具备可比性,所以需要对ww加约束,如规范化,令||w||=1||w||=1,于是得到几何间隔γi=yi(w||w||⋅xi+b||w||)γi=yi(w||w||⋅xi+b||w||),因此问题就转化成了最大化样例点到分离超平面的几何间隔的约束最优化问题,也就是SVM的原始问题,可通过凸优化直接求解

    maxw,bγˆ||w||maxw,bγ^||w||

     

    s.t. yi(w⋅xi+b)≥γ i=1,2,…,Ns.t. yi(w⋅xi+b)≥γ i=1,2,…,N

    ,N

    ,其中$γˆ$即表示超平面关于数据集的函数间隔,是超平面关于数据集中的样本点的函数间隔$γiˆ$的最小值因为函数间隔并不会影响最优化问题的解,所以原问题等价于,其中$γ^$即表示超平面关于数据集的函数间隔,是超平面关于数据集中的样本点的函数间隔$γi^$的最小值因为函数间隔并不会影响最优化问题的解,所以原问题等价于

    min_{w,b} \frac{1}{2}{||w||^2}s.t.  y_i(w\cdot x_i+b) - 1\geq 0  i=1,2,…,N$$
  • 对偶算法,但是上述使用间隔最大化方法求解分离超平面的方法计算效率并不高,所以人们通过引入拉格朗日乘子根据拉格朗日对偶性将问题转化为广义的拉格朗日极大极小问题,然后使用SMO等算法求解出模型的参数值

    转化为对偶问题的好处

    • 对偶问题往往更易求解:以前新来的要分类的样本首先根据ww和bb做一次线性运算,然后看求的结果是大于0还是小于0,来判断正例还是负例。现在有了αiαi,我们不需要求出ww,只需将新来的样本和训练数据中的所有样本做内积和即可。那有人会说,与前面所有的样本都做运算是不是太耗时了?其实不然,我们从KKT条件中得到,只有支持向量的αi>0αi>0,其他情况αi=0αi=0。因此,我们只需求新来的样本和支持向量的内积,然后运算即可。
    • 自然地引入了核函数
  • 进一步的为了使模型能够解决非线性分类问题,人们引入了核函数,那么核函数是什么,为什么能解决非线性问题?
    首先我们的目的是使用一个线性分类方法来求解非线性分类问题,而用线性分类方法求解非线性分类问题分为两步:

    • 首先使用一个变换将原空间的数据映射到新空间;
    • 在新空间里用线性分类学习方法从训练数据中学习分类模型;核技巧就属于这样的方法
  • 核技巧
    • 核技巧应用到支持向量机,其基本想法是通过一个非线性变换将输入空间(欧式空间或离散集合)对应于一个特征空间(希尔伯特空间),使得在输入空间中的超曲面模型对应于特征空间中的超平面模型(支持向量机);这样分类问题的学习任务通过在特征空间中求解线性支持向量机就可以完成了
    • 核技巧:在核函数给定的条件下,可利用解线性分类问题的方法求解非线性分类问题的支持向量机;学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数
    • 实际应用中,常依赖于领域知识直接选择核函数,其有效性通过实验验证

个人理解是对输入数据做了一个映射操作(输入空间–>特征空间),使得原本线性不可分的样例点现在线性可分了,这样就可以直接使用SVM求解线性可分问题的方法来解决原本线性不可分的问题

扩展

拉格朗日对偶性的KKT条件

https://zhuanlan.zhihu.com/p/26514613

优缺点

  • 优点
    可实现非线性分类、可用于分类与回归,低泛化误差,易解释
  • 缺点
    对核函数及参数敏感

训练方法

SMO算法(如何理解以及为什么高效?)

SMO算法是支持向量机学习的一种快速算法,其特点是不断的将原二次规划问题分解为只有两个变量的二次规划问题,并对子问题进行解析求解,直到所有变量满足KKT条件为止,这样通过启发式的方法得到原二次规划问题的最优解,因为子问题有解析解,所以每次计算子问题都很快,虽然计算子问题次数很多,但在总体上还是高效的

损失函数

等价于合页损失函数

概述

软间隔/线性支持向量机的原始问题可以等价于添加了正则化项的合页损失函数,即最小化以下目标函数

 

minw,b∑i=1N[1−yi(w⋅xi+b)]++λ||w||2minw,b∑i=1N[1−yi(w⋅xi+b)]++λ||w||2

  • 第一项为合页损失函数L(y(w⋅x+b))=[1−yi(w⋅xi+b)]+L(y(w⋅x+b))=[1−yi(w⋅xi+b)]+,一般对于函数[z]+[z]+有:

    [z]+=zifz>0[z]+=zifz>0

     

    [z]+=0ifz≤0[z]+=0ifz≤0


    所以原式表明当样本点xi,yixi,yi被正确分类且函数间隔(确信度)yi(w⋅xi+b)yi(w⋅xi+b)大于1时损失为0,否则损失是1−yi(w⋅xi+b)1−yi(w⋅xi+b)
  • 第二项为正则化项,是系数为λλ的ww的L2L2范数
  • 对比线性支持向量机的目标函数可以发现合页损失函数的第一项等价为惩罚项(正则项),而第二项则等价于“分离超平面的参数项”

线性支持向量机的原始最优化问题与上述目标函数的最优化问题是等价的

为什么使用合页损失函数?

  • 由于0-1损失函数不是连续可导的,直接优化由其构成的目标损失函数比较困难,所以对于svm而言,可以认为是在优化由0-1损失函数的上界(合页损失函数)构成的目标函数,又称为代理损失函数
  • 合页损失函数对学习有更高的要求
  • 常用替代损失函数,通常具有较好的数学性质,比如凸的连续函数且是0/1损失函数的上界

常见工业应用场景

将支持向量机改进的聚类算法被称为支持向量聚类,当数据未被标记或者仅一些数据被标记时,支持向量聚类经常在工业应用中用作分类步骤的预处理。

 

 

 

树模型
决策树处理理连续值的⽅方法;
决策树基本模型介绍?决策树算法中缺失值怎么处理理?决策树算法在应⽤用中有什什么值得注意的地⽅方。
改变随机森林林的训练样本数据量量,是否会影响到随机森林林学习到的模型的复杂度
特征选取怎么选? 为什什么信息增益可以⽤用来选特征?
信息熵和基尼指数的关系(信息熵在x=1处一阶泰勒勒展开就是基尼指数)

XGBoost进行特征选择的原理?

14. xgboost里面的lambdarank的损失函数是什么?

15. xgboost在什么地方做的剪枝,怎么做的?

16. xgboost如何分布式?特征分布式和数据分布式? 各有什么存在的问题?

17. lightgbm和xgboost有什么区别?他们的loss一样么? 算法层面有什么区别?

lightgbm的特性以及学习函数;

adaboost如何并行计算

 随机森林怎么调参?树的深度一般是多少?怎么来决定树的深度。。。

随机森林会过拟合吗?加深树的深度会过拟合吗?为什么?

gbdt,xgboost,lgbm的区别(阿里,头条)
参考之前整理过的帖子:https://www.jianshu.com/p/f73a80c22198

xgboost在什么地方做的剪枝,怎么做的?xgb中l1正则怎么用的

树模型对连续型、离散型特征有一套统一的理论,是什么?

既然GBDT处理onehot属性时存在问题,为什么你们还要这么做

stacking blending区别

GBDT为什么拟合负梯度不直接拟合残差(在凸函数优化问题中,拟合梯度的负方向就能找到最小值,然后再考虑到过拟合的问题,建树的时候也不是完美的拟合梯度的负方向,而是有一个步长。)

GBDT做回归的整个流程是怎么样的(假如现在有一堆数据,算法是怎么做回归的),怎么建树?怎么分裂?怎么防止过拟合?怎么剪枝?
做分类呢?有什么不同?调参会调整哪些参数?某些参数(叶节点权重阈值,树深度等)调大或调小对模型有什么影响?

 

原理及推导

从三个方面来分解讲解,其一是boosting,其二是梯度上升,其三则是决策树
关于这三点,个人感觉从加法模型的前向分步算法来理解比较好,首先前向分步算法提供了一种学习加法模型的普遍性方法,不同形式的基函数、不同形式的损失函数都可以用这种普遍性方法去求出加法模型的最优化参数;而对于boosting而言,基本思想是训练一系列的弱学习器,每一个学习器修正前一个基学习器的错误,最终得到的一个整体的学习器就是我们的集成模型,而我们在每一轮训练一个基学习器并将其累加到当前的集成学习器的过程刚好符合前向分步算法的思想;如果将其形式化为加法模型地表示形式就是一系列基学习器加权和的形式,而我们的目的是要求得最小化训练损失函数的基学习器以及该学习器的权重值;

  • 这个时候就要用到梯度上升的思想了,我们可以将训练损失函数对当前集成学习函数进行泰勒一阶展开,基学习器的权重值为正,因此当我们假设基学习器的值为损失函数关于当前集成模型的响应(负梯度值)时后面一项为负,即可实现损失函数的降低,而另基学习器为当前集成模型的响应(负梯度值)也恰好给我们学习怎样的基学习器提供了思路,所以基学习器的学习也就转化成一个拟合响应值的回归问题(这也就是为什么使用回归树而不是分类树的原因),而一旦确定了基学习器,对于其权重的确定就是一个线性搜索的过程(而这一过程又体现了机器学习中先局部后整体的思想,即先做局部优化再做整体优化,可类比决策树的生成和剪枝)
    gbdt
  • 对于GBDT而言,具体的实现boosting这一思想是通过梯度上升的方法,这里可以稍微和AdaBoost进行一个对比,最开始完成boosting思想的实现的学习器是AdaBoost,而这个分类器的boosting思想是通过调整每一轮用于训练基学习器的训练集样本权重分布,使得上一轮基学习器分类错误的样本在这一轮赋予更高权重使其受到更多关注来实现的;而GBDT则是通过梯度上升的方式来实现这一思想,使得损失函数泛化成更一般的损失函数,具体的做法是每一轮根据预设的损失函数关于当前集成模型的响应来训练基学习器,这里也就用到了梯度上升的思想,因为对于损失函数而言,在梯度方向的变化是最快的;
  • 然后就是GBDT里面使用的基学习器一般是决策树准确的说是回归树,因为在使用GBDT做分类时,我们每一步拟合响应用来与损失函数作比较的是一个可加的实数值,这样可以将当前学习到的基学习器的输出结果累加到当前的集成模型上,这样一步一步训练降低误差并逼近真实的样本标记

优缺点

  • 优点:它的非线性变换比较多,表达能力强,而且不需要做复杂的特征工程和特征变换。
  • 缺点:Boost是一个串行过程,不好并行化,而且计算复杂度高,同时不太适合高维稀疏特征。

模型训练

  • 每一轮根据响应来训练一棵回归树,所以GBDT的训练实际上是多棵决策树的训练,每一轮先计算设定的损失函数关于当前的集成模型的响应,然后通过拟合响应来训练回归树,这里树的生成过程中,原始的CART回归树是逐个遍历某特征的所有特征值作为切分点选择平方误差最小的切分点作为切分
  • 得到该轮的回归树后通过线性搜索的方式来进一步最小化集成模型与回归树的加权和与真实标记的误差来确定回归树的权重(步长),这样就确定了该轮学得的集成模型
  • 终止条件是基学习器数目达到预设的值

工业应用

  • CTR预估(广告点击率预估):CTR预估中应用得最多的模型是LR,LR属于线性模型,容易并行化,但是线性模型的学习能力有限,需要大量的特征工程去预先分析出有效的特征、特征组合从而间接的增强LR的非线性学习能力(是不是想到了神经网络的输出层与隐层的关系),Facebook于2014年的文章介绍通过使用GBDT来解决LR特征组合的问题,而随后Kaggle竞赛也有时间类似思路使用GBDT+FM,主要原因是GBDT可以发现多种有区分性的特征及特征组合,决策树的路径可以直接作为LR的输入特征使用,省去了人工寻找特征、特征组合的步骤

 





手写k-means的伪代码(就6⾏);kmeans 代码;

如何优化kmeans算法
Kmeans 算法 K 怎么设置、适⽤用什什么样数据集、怎么评价
em 与 kmeans 的关系;⽤用 EM 算法推导解释 Kmeans。
K-means起始点http://www.cnki.com.cn/Article/CJFDTotal-DNZS200832067.htm

K-means 中我想聚成100类 结果发现只能聚成98类,为什么

层次聚类的话,你又如何判断聚成多少类合适?

K-means的K怎么选取,聚类中心怎么初始化比较好。

DBSCAN原理和算法伪代码,与kmeans,OPTICS区别

kmeans 时间复杂度和空间复杂度

 

  • 算法要从以下几个方面来掌握
    • 产生背景
    • 适用场合(数据规模,特征维度,是否有 Online 算法,离散/连续特征处理等角度);
    • 原理推导(最大间隔,软间隔,对偶);
    • 求解方法(随机梯度下降、拟牛顿法等优化算法);
    • 优缺点,相关改进;
    • 和其他基本方法的对比;
  • 不能停留在能看懂的程度,还要对知识进行结构化整理,比如撰写自己的 cheet sheet,面试是在有限时间内向面试官输出自己知识的过程,如果仅仅是在面试现场才开始调动知识、组织表达,总还是不如系统的梳理准备;从面试官的角度多问自己一些问题,通过查找资料总结出全面的解答,比如如何预防或克服过拟合。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值