1: 请写一下LR的cost function和梯度下降参数迭代公式
1:请推导一下LR的cost function公式
2:为什么逻辑回归比线性回归要好?
逻辑回归和线性回归首先都是广义的线性回归,
其次经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数,
另外线性回归在整个实数域范围内进行预测,敏感度一致,而分类范围,需要在[0,1]。逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型,因而对于这类问题来说,逻辑回归的鲁棒性比线性回归的要好
基于Batch的算法(Batch-GD, LBFGS, OWLQN)都是可以进行无损的并行化的。而基于SGD的算法(Ad Predictor, FTRL-Proximal)都只能进行有损的并行化。
并行化的工具MPI和OpenMP
6. LR为什么用sigmoid函数。这个函数有什么优点和缺点?为什么不用其他函数?
知乎解答:https://www.zhihu.com/question/35322351
有两种解释:
1. 伯努利分布 和 指数分布簇
假设lable 服从伯努利分布,然后推导至指数分布簇的形式,可以得出 LR 模型
2. 假设 x 服从正太分布, y服从 二项分布时,计算条件概率可以推导出 sigmoid函数
特点总结:
逻辑回归的优点:
1.实现简单;
2.分类计算量小、速度快,存储资源低
缺点:
1、容易欠拟合,一般准确度不太高
2、只能处理两分类问题(在此基础上衍生出来的softmax可以用于多分类),且必须线性可分;
博客:https://blog.csdn.net/qq_23052951/article/details/55274112
1. 梯度下降 和 随机梯度下降
2. 共轭梯度法:
3. 特点:
1) 梯度下降只考虑一阶导数,收敛慢,牛顿法考虑了二阶导数,收敛虽然快了,但是需要计算和存储hession矩阵
2) 其基本思想是把共轭性与最速下降方法相结合,利用已知点处的梯度构造一组共轭方向,并沿这组方向进行搜素,求出目标函数的极小点。
4. 牛顿法和拟牛顿法
在拟牛顿法中有两个重要的方法,一个是DFP(Davidon、Fletcher、Powell三人的首字母)方法,由Davidon(1959)提出,Felether和Powell(1963)发展,一个就是BFGS方法。下面分别来讨论一下。
L-BFGS算法:对BFGS 的改进
特点:牛顿法要比梯度下降法更具有全局判断能力
梯度法从初始点的领域开始判断,在局部进行下降,然后步步逼近极值,往往是走之字型的。
牛顿法在二阶导数的作用下,从函数的凸性出发,直接搜索怎样到达极值点,也就是说在选择方向时,不仅考虑当前坡度是否够大,还会考虑你走了一步之后,坡度是否会变得更大。
5. OWLQN 算法: 主要解决 L1 处不可求导的问题(具体细节就不知道了)
附录:
分类:线性可分支持向量机、线性支持向量机、非线性支持向量机
线性可分支持向量机:w b 唯一,这时,解是唯一的。另一方面,此时的分隔超平面所产生的分类结果是最鲁棒的,对未知实例的泛化能力最强。
线性支持向量机:可以证明 w 的解唯一,b的解不唯一,而是存在一个区间
2、为什么能将 函数间隔固定为 1(亲自推导一遍)?
与LR的区别
相同:(1)lr svm 都是分类算法
(2) 如果不考虑核函数,LR 和SVM 都是线性分类
(3) 都是监督学习
(4) 都是判别模型
不同 : (1) 损失函数不同
LR的损失函数
SVM 的损失函数
(2)SVM 只考虑边界附近的点,LR考虑的是全局(远离边界的点也有作用)
(3) 解决非线性问题时,SVM 可以采取核函数机制
(4) SVM的核函数自带正则(LR不带吗)
SVM 中 为什么将原始问题变为 对偶问题:
一、是对偶问题往往更易求解(当我们寻找约束存在时的最优点的时候,约束的存在虽然减小了需要搜寻的范围,但是却使问题变得更加复杂。为了使问题变得易于处理,我们的方法是把目标函数和约束全部融入一个新的函数,即拉格朗日函数,再通过这个函数来寻找最优点。)
二、自然引入核函数,进而推广到非线性分类问题。
4.为什么引入软间隔:
作用:解决某些样本点不能满足函数间隔大于等于1的约束条件,为了解决这个问题,可以对每个样本点引入一个松弛变量,使函数间隔加上松弛变量大于等于1,这就是 线性支持向量机的原理,它的损失函数等价于 合页损失函数
以下是几种常用的核函数表示:
线性核(Linear Kernel)
多项式核(Polynomial Kernel)
径向基核函数(Radial Basis Function)
也叫高斯核(Gaussian Kernel),因为可以看成如下核函数的领一个种形式:
径向基函数是指取值仅仅依赖于特定点距离的实值函数,也就是。任意一个满足特性的函数 Φ都叫做径向量函数,标准的一般使用欧氏距离,尽管其他距离函数也是可以的。所以另外两个比较常用的核函数,幂指数核,拉普拉斯核也属于径向基核函数。此外不太常用的径向基核还有ANOVA核,二次有理核,多元二次核,逆多元二次核。
幂指数核(Exponential Kernel)
拉普拉斯核(Laplacian Kernel)
ANOVA核(ANOVA Kernel)
二次有理核(Rational Quadratic Kernel)
多元二次核(Multiquadric Kernel)
逆多元二次核(Inverse Multiquadric Kernel)
另外一个简单实用的是Sigmoid核(Sigmoid Kernel)
以上几种是比较常用的,大部分在SVM,SVM-light以及RankSVM中可用参数直接设置。还有其他一些不常用的,如小波核,贝叶斯核,可以需要通过代码自己指定。
svm RBF核函数的具体公式?
注:核函数的选择要满足 正定核的原则
为什么SVM对缺失数据敏感?(数据某一维度的缺失)
SVM的 基本原理是:在特征空间下,找一个线性可分的超平面,某些特征的缺失,将严重影响模型的训练。
SVM是用的是哪个库?Sklearn/libsvm中的SVM都有什么参数可以调节?
SVM如何处理多分类问题?
1.提升方法的基本思路:
PAC(probably approximately correct): 概率近似正确
一个类,如果存在一个多项式的学习算法能够学习它,并且正确率很高,则称为强可学习,反之,如果学习的效果仅比随机猜测略好,那么成为弱可学习
基本思路:从弱学习算法出发,反复学习,得到一系列的弱分类器
提升方法需要解决的问题:1.如何在每一轮改变训练数据的权值或概率分布
(误分时,计算分类误差率时的权重)
2.如何将 弱分类器组合成一个强分类器
adaboost 的解决思路:问题1的解决:提高那些被前一轮弱分类器错误分类样本的权值,而降低正确分类的样本权值。
问题2的解决:adaboost采取加权多数表决的方法。具体为,加大分类误差率小的弱分类权值,使其在表决中起较大的作用,减小分类器误差率大的弱分类器的权值
注:Adaboost 的训练误差是以指数速率下降的(与m有关, m为训练出的树的个数)
Adaboost 算法的解释
模型: 加法模型
损失函数:指数函数
学习算法:前向分布算法
提升树
分类模型:指数损失函数
回归问题:平方误差损失函数
当采用平方误差损失函数时,每一颗树的更新为 拟合数据的残差
为什么提出: 当损失函数时 平方损失 和 指数损失函数时,每一步优化很简单,但对于一般的损失函数而言,往往每一步优化并不是那么容易。
https://blog.csdn.net/qq_28031525/article/details/70207918
https://blog.csdn.net/leyounger/article/details/78771791
梯度提升解决了这个问题:
利用损失函数的负梯度 作为回归问题,提升树算法中的残差的 近似值,拟合一个回归树。
特点:
优点:
GBDT具有挖掘有效的特征、实现特征组合的效果。
在相对较少的调参时间下,预测的准确度较高。
A的预测值 + A的残差 = A的实际值
缺点:当然由于它是Boosting,因此基学习器之前存在串行关系,难以并行训练数据。
回归问题(线性/非线性),相对logistic regression仅能用于线性回归,GBDT的适用面非常广。亦可用于二分类问题(设定阈值,大于阈值为正例,反之为负例)。
传统的GBDT以CART树作为基学习器,XGBoost还支持线性分类器,这个时候XGBoost相当于L1和L2正则化的逻辑斯蒂回归(分类)或者线性回归(回归);
传统的GBDT在优化的时候只用到一阶导数信息,XGBoost则对代价函数进行了二阶泰勒展开,得到一阶和二阶导数;
XGBoost在代价函数中加入了正则项,用于控制模型的复杂度。从权衡方差偏差来看,它降低了模型的方差,使学习出来的模型更加简单,放置过拟合,这也是XGBoost优于传统GBDT的一个特性;
shrinkage(缩减),相当于学习速率(XGBoost中的eta)。XGBoost在进行完一次迭代时,会将叶子节点的权值乘上该系数,主要是为了削弱每棵树的影响,让后面有更大的学习空间。(GBDT也有学习速率);
列抽样。XGBoost借鉴了随机森林的做法,支持列抽样,不仅防止过 拟合,还能减少计算;
对缺失值的处理。对于特征的值有缺失的样本,XGBoost还可以自动 学习出它的分裂方向;
XGBoost工具支持并行。Boosting不是一种串行的结构吗?怎么并行 的?注意XGBoost的并行不是tree粒度的并行,XGBoost也是一次迭代完才能进行下一次迭代的(第t次迭代的代价函数里包含了前面t-1次迭代的预测值)。XGBoost的并行是在特征粒度上的。我们知道,决策树的学习最耗时的一个步骤就是对特征的值进行排序(因为要确定最佳分割点),XGBoost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代 中重复地使用这个结构,大大减小计算量。这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以开多线程进行。
XGboost:
概念LR这种线性模型很容易并行化,处理上亿条训练样本不是问题,但线性模型学习能力有限,需要大量特征工程预先分析出有效的特征、特征组合,从而去间接增强LR的非线性学习能力。
LR模型中的特征组合很关键, 但又无法直接通过特征笛卡尔积解决,只能依靠人工经验,耗时耗力同时并不一定会带来效果提升
GBDT(Gradient Boost Decision Tree)是一种常用的非线性模型[6][7][8][9],它基于集成学习中的boosting思想[10],每次迭代都在减少残差的梯度方向新建立一颗决策树,迭代多少次就会生成多少颗决策树。GBDT的思想使其具有天然优势可以发现多种有区分性的特征以及特征组合,决策树的路径可以直接作为LR输入特征使用,省去了人工寻找特征、特征组合的步骤
GBDT模型的特点,非常适合用来挖掘有效的特征、特征组合
博客总结:
https://blog.csdn.net/bc7720/article/details/81163772