本系列为深入篇,尽可能完善专题知识,并不会所有的都会出现在面试中,更多内容,详见:Reflection_Summary,欢迎交流。
另外,欢迎大家关注我的个人bolg,知乎,更多代码内容欢迎follow我的个人Github,如果有任何算法、代码疑问都欢迎通过邮箱发消息给我。
logistic分布函数和密度函数,手绘大概的图像
-
分布函数:
-
密度函数:
- 其中,μ表示位置参数,γ为形状参数。logistic分布比正太分布有更长的尾部且波峰更尖锐
LR推导,基础5连问
- 基础公式
- f(x) = wx + b
- y = sigmoid(f(x))
- 可以看作是一次线性拟合+一次sigmoid的非线性变化
- 伯努利过程
- 对于lr来说事情只有发生和不发生两种可能,对于已知样本来说,满足伯努利的概率假设:
- p(y=1/x,θ) = h(θ,x)
- p(y=0/x,θ) = 1-h(θ,x)
- p(y/x,θ) = h(θ,x)^y · (1-h(θ,x))^(1-y)
- 第i个样本正确预测的概率如上可得
- 几率odds
- 数据特征下属于正例及反例的比值
- ln(y/(1-y))
- 对于lr来说事情只有发生和不发生两种可能,对于已知样本来说,满足伯努利的概率假设:
- 极大似然
- 第i个样本正确预测的概率如上可得每条样本的情况下
- 综合全部样本发生的概率都要最大的话,采取极大似然连乘可得:
- ∏(h(θ,x)^y · (1-h(θ,x))^(1-y))
- 损失函数
- 通常会对极大似然取对数,得到损失函数,方便计算
- ∑ylogh(θ,x)+(1-y)log(1-h(θ,x))最大
- 及-1/m · ∑ylogh(θ,x)+(1-y)log(1-h(θ,x))最小
- 通常会对极大似然取对数,得到损失函数,方便计算
- 梯度下降
- 损失函数求偏导,更新θ
- θj+1 = θj - ∆·∂Loss/∂θ =θj - ∆·1/m·∑x·(h-y)
- ∆为学习率
梯度下降如何并行化?
-
首先需要理解梯度下降的更新公式:
- ∑处的并行,不同样本在不同机器上进行计算,计算完再进行合并
-
同一条样本不同特征维度进行拆分,
LR明明是分类模型为什么叫回归?
观测样本中该特征在正负类中出现概率的比值满足线性条件,用的是线性拟合比率值,所以叫回归
为什么LR可以用来做CTR预估?
- 点击行为为正向,未点击行为为负向,ctr需要得到点击行为的概率,lr可以产出正向行为的概率,完美match
- 实现简单,方便并行,计算迭代速度很快
- 可解释性强,可结合正则化等优化方法
满足什么样条件的数据用LR最好?
- 特征之间尽可能独立
- 不独立所以我们把不独立的特征交叉了
- 还记得FM的思路?
- 不独立所以我们把不独立的特征交叉了
- 离散特征
- 连续特征通常没有特别含义,31岁和32岁差在哪?
- 离散特征方便交叉考虑
- 在异常值处理上也更加方便
- 使的lr满足分布假设
- 什么分布假设?
- 在某种确定分类上的特征分布满足高斯分布
- C1和C2为正负类,观测样本中该特征在正负类中出现概率的比值满足线性条件的前提就是P服从正太分布
- 实际中不满足的很多,不满足我们通常就离散化,oneHotEncode
此处就用到了全概率公式推导,有可能会回到写出全概率公式&贝叶斯公式的问题中
LR为什么使用sigmoid函数作为激活函数?其他函数不行吗?
- 思路一:lr的前提假设就是几率odds满足线性回归,odds又为正负样本的log比,参见
满足什么样条件的数据用LR最好?
中第三点公式的展开 -
思路二:Exponential model 的形式是这样的:假设第i个特征对第k类的贡献是
-
二分类上:
- 化简即为sigmoid
- 以上思路源自:PRML(Pattern Recognition and Machine Learning)
-
二分类上:
- 思路三:glm有满足指数族的性质,而作为lr作为y满足伯努利分布的的线性条件,伯努利分布的指数族形式就是sigmoid,或者也叫连接函数
利用几率odds的意义在哪?
- 直接对分类模型进行建模,前提假设为非常弱的指定类别上自变量的条件分布满足高斯
- 由预测0/1的类别扩展到了预测0-1的概率值
- 任意阶可导的优秀性质
Sigmoid函数到底起了什么作用?
- 数据规约:[0,1]
- 线性回归在全量数据上的敏感度一致,sigmoid在分界点0.5处更加敏感
- sigmoid在逻辑回归的参数更新中也不起影响,避免了更新速度不稳定的问题
LR为什么要使用极大似然函数,交互熵作为损失函数?那为什么不选平方损失函数的呢
- 更新速度只与真实的x和y相关,与激活函数无关,更新平稳
- 比如mse就会导致更新速度与激活函数sigmoid挂钩,而sigmoid函数在定义域内的梯度大小都比较小(0.25>x),不利于快速更新
- mse下的lr损失函数非凸,难以得到解析解
LR中若标签为+1和-1,损失函数如何推导?
- way1:把0-1的sigmoid的lr结果Y映射为2y-1,推导不变
- way2:把激活函数换成tanh,因为tanh的值域范围为[-1,1],满足结果,推导不变
-
way3:依旧以sigmoid函数的话,似然函数(likelihood)模型是:
,重复极大似然计算即可
如果有很多的特征高度相关或者说有一个特征重复了100遍,会造成怎样的影响?
为什么要避免共线性?
- 如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果
- 每一个特征都是原来特征权重值的百分之一,线性可能解释性优点也消失了
- 增加训练收敛的难度及耗时,有限次数下可能共线性变量无法收敛,系数估计变得不可靠
- 泛化能力变差,训练是两列特征可能会共线性,当线上数据加入噪声后共线性消失,效果可能变差
LR可以用核么?可以怎么用?
结论:可以,加l2正则项后可用
原因:
- 核逻辑回归,需要把拟合参数w表示成z的线性组合及representer theorem理论。这边比较复杂,待更新,需要了解:
- w拆解的z的线性组合中的系数α来源
- representer theorem 的证明
- 凡是进行L2正则化的线性问题我们都能使用核函数的技巧的证明
- 如何将将W*表示成β的形式带到我们最佳化的问题
LR中的L1/L2正则项是啥?
-
L1正则项:为模型加了一个先验知识,未知参数w满足拉普拉斯分布,
-
L2正则项:为模型加了一个先验知识,未知参数w满足0均值正太分布,
lr加l1还是l2好?
这个问题还可以换一个说法,l1和l2的各自作用。
刚才我们说到l1对未知参数w有个前提假设满足拉普拉斯分布,l2对未知参数的假设则是正太分布,且都是零均值,单纯从图像上我们就可以发现,拉普拉斯对w的规约到0的可能性更高,所以对于特征约束强的需求下l1合适,否则l2
正则化是依据什么理论实现模型优化?
结构风险最小化:在经验风险最小化的基础上(也就是训练误差最小化),尽可能采用简单的模型,以此提高泛化预测精度。
LR可以用来处理非线性问题么?
- 特征交叉,类似fm
- 核逻辑回归,类似svm
- 线性变换+非线性激活,类似neural network
为什么LR需要归一化或者取对数?
模型中对数据对处理一般都有一个标答是提升数据表达能力,也就是使数据含有的可分信息量更大
- 工程角度:
- 加速收敛
- 提高计算效率
- 理论角度:
- 梯度下降过程稳定
- 使得数据在某类上更服从高斯分布,满足前提假设,这个是必须要答出来的
- 归一化和标准化之间的关系
为什么LR把特征离散化后效果更好?离散化的好处有哪些?
- 原来的单变量可扩展到n个离散变量,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合
- 离散后结合正则化可以进行特征筛选,更好防止过拟合
- 数据的鲁棒性更好,不会因为无意义的连续值变动导致异常因素的影响,(31岁和32岁的差异在哪呢?)
- 离散变量的计算相对于连续变量更快
逻辑回归估计参数时的目标函数逻辑回归的值表示概率吗?
lr的output是彼此之间相对谁的可能性更高,而不是概率,概率是事情发生的可能,lr的output不代表可能
LR对比万物?
-
lr和线性回归
- lr解用的极大似然,线性回归用的最小二乘
- lr用于分类,线性回归用于回归
- 但两者都是广义线性回归GLM问题
- 两者对非线性问题的处理能力都是欠佳的
-
lr和最大熵
- 在解决二分类问题是等同的
-
lr和svm
- 都可分类,都是判别式模型思路
- 通常都是用正则化进行规约
- 模型上
- lr是交叉熵,svm是HingeLoss
- lr是全量数据拟合,svm是支持向量拟合
- lr是参数估计有参数的前提假设,svm没有
- lr依赖的是极大似然,svm依赖的是距离
-
lr和朴素贝叶斯
- 如果朴素贝叶斯也有在某一类上的数据x满足高斯分布的假设前提,lr和朴素贝叶斯一致
- lr是判别模型,朴素贝叶斯是生成模型
- lr没有明确feature条件独立(但是不能共线性,理由之前讲了),朴素贝叶斯要求feature条件独立
-
lr和最大熵模型
- 本质没有区别
- 最大熵模型在解决二分类问题就是逻辑回归
- 最大熵模型在解决多分类问题的时候就是多项逻辑回归回归
LR梯度下降方法?
- 随机梯度下降
- 局部最优解,可跳出鞍点
- 计算快
- 批梯度下降
- 全局最优解
- 计算量大
- mini批梯度下降
- 综合以上两种方法
除此之外,比如ada和冲量梯度下降法会对下降的速率速度进行控制,也会对不同更新速度的参数进行控制,等等,多用于深度学习中
LR的优缺点?
- 优点
- 简单,易部署,训练速度快
- 模型下限较高
- 可解释性强
- 缺点
- 只能线性可分
- 数据不平衡需要人为处理,weight_class/有哪些常见的采样方法
- 模型上限较低
除了做分类,你还会用LR做什么?
特征筛选,特征的系数决定该特征的重要性
你有用过sklearn中的lr么?你用的是哪个包?
sklearn.linear_model.LogisticRegression
看过源码么?为什么去看?
- 看部分参数的解释
- 比如dual、weight_class中的1:0还是0:1比
- 比如输出值的形式,输出的格式
谈一下sklearn.linear_model.LogisticRegression中的penalty和solver的选择?
- penalty是正则化,solver是函数优化方法
- penalty包含l1和l2两种,solver包含坐标轴下降、牛顿、随机梯度下降等
- 牛顿法,拟牛顿法和随机梯度下降都不能使用l1,因为他们都需要损失函数的一阶二阶导数,而坐标轴下降法不限制这些,l1和l2都可行。
- l1和l2选择参考上面讲的正则化部分
- 随机梯度下降在数据较少的时候最好别用,但是速度比较快。默认的是坐标轴下降法
谈一下sklearn.linear_model.LogisticRegression中对多分类是怎么处理的?
- 首先,决定是否为多分类的参数是multi_class
- 在二分类的时候,multi和ovr和auto都是一样的
- 在真正执行multi的时候,会通过LabelEncoder把目标值y离散化,不停的选择两类去做ovr的计算直到取完所有情况
我的总结
- 逻辑回归假设观测样本中该特征在正负类中出现结果服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的
- 逻辑回归本质是线性模型,只能解决线性相关的问题,非线性相关用核或者svm等
- 逻辑回归不需要特征的条件独立,但是不能共线性,需要核线性回归一样,做共线性检验
- 逻辑回归对样本噪声是鲁棒对,SVM对噪声比较敏感,而logistic回归对噪声不是很敏感,是因为如果噪声点落在了支持向量上,将会直接影响判别面的方程。而logistic回归通过最大似然求解模型参数,将会弱化噪声的影响