逻辑回归基础和SVM基础

LR:

  • Logistic Regression Model是一种有监督学习方法,主要用于二元分类,也可以进行多元分类。其本质上是一种符合伯努利分布的线性回归模型(Linear Regression Model),不同之处就在于逻辑回归是将连续域的输出通过逻辑函数映射为离散域。

  • 逻辑函数为sigmoid函数,线性输出作为逻辑函数的输入,映射为[0,1]的离散域。

  • 当z趋于-∞时,结果趋于0;当z趋于+∞时,结果趋于1。所以只要得出z的值,就可以做分类了。

    该上概率论的菜了,主菜是似然估计。求z,等同于求参数θ。
    极大似然估计法是在总体分布类型已知的情况下的一种常用的参数估计方法。

    一般的求解过程:
    写出似然函数;
    对似然函数取对数,并整理;
    求导数;
    解似然方程;

  • 似然最大估计:找到一组参数θ,使得在这组参数下,样本数据的似然度(概率)最大

  • 逻辑回归的代价函数J theta = - l theta (l theta: 对数最大似然估计) max l(theta) --> min J(theta)

  • 参数theta的求解采用随机梯度下降算法或者mini-bach gradient descent.
    随机梯度下降算法:
    theta更新过程中,SGD每次迭代仅对一个样本计算梯度,直到收敛;不稳定性,因为每次训练的都是随机的一个样本,会导致导致梯度的方向不会像BGD那样朝着最优点(随机把数据打乱很重要,因为这个随机性相当于引入了“噪音”,正是因为这个噪音,使得SGD可能会避免陷入局部最优解中)。代价函数曲线呈现震荡趋势。
    mini-batch GD: 每次用一部分样本来更新参数,相对于SGD更稳定。代价函数曲线更平滑。
    参考:几种梯度下降方法对比(Batch gradient descent、Mini-batch gradient descent 和 stochastic gradient descent)

  • 机器学习或者统计机器学习常见的损失函数如下:

      1.0-1损失函数 (0-1 loss function) 
      		L(Y,f(X))={1,0,Y ≠ f(X),Y = f(X)
      2.平方损失函数(quadratic loss function) 
      		L(Y,f(X))=(Y−f(x))2
      3.绝对值损失函数(absolute loss function) 
      		L(Y,f(x))=|Y−f(X)|
      4.对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likehood loss function) 
      		L(Y,P(Y|X))=−logP(Y|X)
    

    逻辑回归中,采用的则是对数损失函数。如果损失函数越小,表示模型越好。

  • LR 损失函数为什么用极大似然函数?
    1)因为我们想要让 每一个 样本的预测都要得到最大的概率,
    即将所有的样本预测后的概率进行相乘都最大,也就是极大似然函数.
    2)对极大似然函数取对数以后相当于对数损失函数,
    由上面 梯度更新 的公式可以看出,
    对数损失函数的训练求解参数的速度是比较快的,
    而且更新速度只和x,y有关,比较的稳定,

  • 为什么不用平方损失函数
    如果使用平方损失函数,梯度更新的速度会和 sigmod 函数的梯度相关,sigmod 函数在定义域内的梯度都不大于0.25,导致训练速度会非常慢。
    而且平方损失会导致损失函数是 theta 的非凸函数,不利于求解,因为非凸函数存在很多局部最优解

  • 正则化

  • 偏差 (高bias:欠拟合----增加特征优化算法):
    描述的是预测值(估计值)的期望与真实值之间的差距。偏差越大,越偏离真实数据集。

  • 方差 (高variance:过拟合----增加数据集降维减少特征或正则化):
    描述的是预测值的变化范围,离散程度,也就是离其期望值的距离。方差越大,预测结果数据的分布越散。

SVM

参考:
SVM支持向量机-拉格朗日乘子与对偶问题

  • 使用支持向量机的原因主要是最优函数时凸函数,不存在局部最优解

  • SVM的原理是什么?
    SVM是一种二类分类模型。基本思想是试图寻找一个超平面来对样本分割,把样本中的正例和反例用超平面分开,并尽可能的使正例和反例之间的间隔最大。(间隔最大是它有别于感知机)
    (1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
    (2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
    (3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

  • SVM的主要特点 (优点)
    (1)非线性映射-理论基础 (2)最大化分类边界-方法核心 (3)支持向量-计算结果 (4)小样本学习方法 (5)最终的决策函数只有少量支持向量决定,避免了“维数灾难” (6)少数支持向量决定最终结果—->可“剔除”大量冗余样本+算法简单+具有鲁棒性(体现在3个方面) (7)学习问题可表示为凸优化问题—->全局最小值 (8)可自动通过最大化边界控制模型,但需要用户指定核函数类型和引入松弛变量 (9)适合于小样本,优秀泛化能力(因为结构风险最小) (10)泛化错误率低,分类速度快,结果易解释

  • 缺点:
    (1)大规模训练样本(m阶矩阵计算)
    (2)传统的不适合多分类
    (3)对缺失数据、参数、核函数敏感

  • 间隔:两个异类支持向量到超平面的距离之和。依赖于分离超平面的法向量w, 等于 2/||w||。 法向量指向的一侧为正类,另一侧为负类。

  • 支持向量:线性可分情况下,训练数据集样本点中与分离超平面距离最近的样本点的实例称为支持向量(即间隔边界上的点)。

  • 在决定分离超平面时,只有支持向量起作用,其他实例点并不起作用,移动或删除其他实例点,解都不会改变,正是由于支持向量在确定超平面中的决定租用,所以将该分类模型称为支持向量机。
    支持向量满足约束条件: yi ( w *xi + b ) - 1 = 0

  • 对偶问题:
    原理:max(alpha) { min(w,b){ L(w,b,alpha)} } (前两个括号内表示极值对象,最后一个表示函数参数)
    引入拉格朗日乘子向量,先求L(w,b,alpha)对w,b的极小值,得到w和b关于alpha的表达式,带入L中,再求关于alpha的极大值。
    通俗理解,引入拉格朗日乘子,将目标函数最优化转化为拉格朗日函数最优化问题,通过对每条约束添加拉格朗日乘子alpha, 先求对w和b的极小,求偏导并令其等于0,到w和b关于alpha的表达式,带入拉格朗日函数中,转化为仅含有参数alpha的函数最优化问题,单独计算 alpha后反求参数w和b,最后获得超平面参数。
    好处:
    1)更容易求解;
    2)自然引入核函数,进而推广到非线性分类问题。
    Note:拉格朗日对偶没有改变最优解,但改变了算法复杂度原问题—样本维度;对偶问题–样本数量
    所以 线性分类–样本维度<样本数量:原问题求解(liblinear默认);
    非线性–升维—一般导致 样本维度>样本数量:对偶问题求解

  • 补充:另外KKT条件就是在约束下求得目标函数极值时αi满足的条件,只有满足了kkt条件,才算是满足了目标函数和约束函数,因此之后介绍的计算迭代算法也是基于KKT条件,通过不断修改不满足KKT条件的α,使其满足KKT条件,从而求出目标函数的最优值

  • 硬间隔最大化(几何间隔);软间隔最大化(引入松弛变量);非线性支持向量机(核技巧)

  • 为什么SVM要引入核函数
    当样本在原始空间线性不可分时,可将样本从原始空间映射到一个更高维的特征空间,使得样本在这个特征空间内线性可分

  • 函数间隔和几何间隔
    函数间隔: 表示分类预测的正确性及确信度。
    几何间隔:实际就是点到超平面的距离。
    可以理解为函数间隔是几何间隔没有除以||w||的表达,几何间隔是函数间隔归一化的结果。

  • 松弛变量与软间隔最大化
    原因:一些离群点或者噪声点影响分界面,导致线性不可分;
    解决方法:引入松弛变量,允许某些样本不满足线性可分的约束-

  • 惩罚参数C
    C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱
    C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。

  • SVM如何处理多分类问题?
    一般有两种做法:一种是直接法,直接在目标函数上修改,将多个分类面的参数求解合并到一个最优化问题里面。看似简单但是计算量却非常的大。
    另外一种做法是间接法:对训练器进行组合。其中比较典型的有一对一,和一对多。
    一对多,就是对每个类都训练出一个分类器,由svm是二分类,所以将此而分类器的两类设定为目标类为一类,其余类为另外一类。这样针对k个类可以训练出k个分类器,当有一个新的样本来的时候,用这k个分类器来测试,那个分类器的概率高,那么这个样本就属于哪一类。这种方法效果不太好,bias比较高。
    svm一对一法(one-vs-one),针对任意两个类训练出一个分类器,如果有k类,一共训练出C(2,k) 个分类器,这样当有一个新的样本要来的时候,用这C(2,k) 个分类器来测试,每当被判定属于某一类的时候,该类就加一,最后票数最多的类别被认定为该样本的类。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章