【机器学习经典算法梳理】二.逻辑回归

复习思路

大多数机器学习算法的思路,都是依照以下顺序进行:

  • 名词解释、定位、解决什么问题;
  • 数学模型(基础)(得到假设函数h(x)=???)
  • 根据以上模型构建的目标函数(如MLE最大似然估计、MAE最大后验概率)
  • 求解argmax目标函数,此时涉及到一系列优化算法(如梯度下降、牛顿法、坐标上升等),最终求解得出参数/theta在目标函数取得极大值的时候的取值
  • 该算法的其他注意事项,如适用范围、优缺点等。
  • 最后,温故而知新的个人感受。

逻辑回归

名词解释、定位等:

  • 逻辑回归是一个解决分类问题的算法。其结果是离散的,y_hat共两个取值,分别为0和1(正负样本,二分类。但也可以解决多分类问题,后面详述)
  • 逻辑回归是监督学习算法,是判别模型,而非生成模型。
    • 判别模型vs生成模型:
      • 首先,二者都用来解决分类问题(而非回归问题)
      • 判别模型,如LR、SVM、神经网络、决策树等等,他们直接对数据进行学习,计算其条件概率p(y=1 or 0|x),然后得到目标函数后,对待分类的样本提取其特征,然后将特征输入一个判别式中(如LR中的假设函数h(x)),直接得到一个score,然后将该score和阈值相比较(LR默认阈值是0.5,大于判为y=1)
      • 生成模型,如Naive Bayes、LDA等,他们对(X,Y)建模,计算p(X,Y)的联合概率。得到联合概率后,通过Bayes公式再求得条件概率p(y|x) = p(x,y)/p(x)。然后根据算得的所有条件概率(也可以叫做后验概率),选择条件概率最大的那个,作为类别y的结果
      • 举个栗子:假设你有一批羊,有绵羊和山羊。你现在想通过从羊身上提取出来的一些特征来分辨一只羊是山羊还是绵羊。第一种方法你根据所有提取到的羊的特征,通过历史数据,学习到了一个判别羊的模型。此时来一个新羊,你只要将所有特征输入该模型,就会马上得到该羊在这些已有特征下,是山羊和概率,以及是绵羊的概率;第二种方法:你对历史所有的已知类别的羊进行建模,分别建一个山羊的模型,以及一个绵羊模型。然后来了一只新羊,将这只羊的特征分别输入山羊和绵羊的模型中计算,看哪边的条件概率更大,这只羊就更接近某一种羊
  • 逻辑回归,我个人认为,从其数学模型的角度而言,更应该被称作“对数几率回归”。即用多项式函数$/theta$.T * X去拟合对数几率log(p/(1-p))。

数学模型:

  • 即sigmoid函数。这个函数的作用是,将多项式函数得到的结果,经sigmoid处理后,可将结果约束在0~1之间。使得多项式拟合“对数几率”的结果变得更“值得参考”,有概率上的价值。而且sigmoid函数的自变量绝对值越大,函数值越接近0 or 1,这也意味着该样本越接近某一个类别。反之亦然。
  • 假设函数形式、以及通过“对数几率回归”这六个字推导得到假设函数的过程。略

目标函数的构建:

逻辑回归这一点与线性回归一样,也是通过最大似然估计的方式对条件概率p(y|x;$/theta$)建模。最终得到一目标函数。具体过程略。

求解当目标函数取极大值时,参数$\theta$的取值:

  • 使用牛顿法或者梯度上升法都可以。具体方法略
  • 牛顿法:
    • 牛顿法用于求解函数的零点。牛顿法求解函数的零点(即函数图像与X轴的交点)是二次收敛的,收敛速度很快
    • 如果将求解的函数换成“导函数”,那么我们用牛顿法求得的“导函数零点”,就是目标函数求得极值时x的取值。因而,牛顿法可以用于目标函数的优化,它和梯度下降/上升算法的地位相同,也是目标函数的优化算法之一。
    • 牛顿法的优缺点:
      • 优点
        • 二次收敛,速度快(相较于gradient decent)
        • 初值的选择对结果无影响
      • 缺点:
        • 海森矩阵的计算(矩阵的二次导)复杂度较大
        • 若初值的选择较零点很远,可能没打得到想要的结果
        • 牛顿法不是下降算法,无法保证每一步的计算得到的参数结果,都是使误差函数下降的

其他问题:

  • 假设函数与决策边界h(x;$\theta$):
    • 当假设函数的结果h(x)>= 0.5,我们预测y_hat = 1; h(x) = g(θ.T * X) >= 0.5,即θ.T * X >= 0.决策边界就是θ.T * X = 0的一条边界
    • 决策边界可以是线性的也可以是非线性的。具体取决于θ.T * X中特征X是几次的。二次特征画在二维平面就是曲线的,但映射到三维or更高维度,往往就是超平面。
    • 疑问:那么,直接使用θ.T * X与0 的大小关系就可以判断一个样本属于哪个类别了,那么何必还需要再用sigmoid函数再作用一遍?
      • 通过sigmoid函数,将θ.T * X的值映射到0~1之间,而且越远离决策边界,就越接近0或1,类似于概率上的意义。这是意义之一吧。
  • 加正则项约束的逻辑回归损失函数:
  • 多分类问题:
    • 使用softmax(略)
    • 多分类策略:
      • 我们从包含手写体 0 到 9 的数字图像的 MNIST 数据集入手,讨论这些最常见的「技巧」。这是一个多分类任务,我们的算法应该告诉我们图像对应哪个数字。

        1)一对多(OvA)

        按照这个策略,你可以训练 10 个二分类器,每个数字一个。这意味着训练一个分类器来检测 0,一个检测 1,一个检测 2,以此类推。当你想要对图像进行分类时,只需看看哪个分类器的预测分数最高。即分类器0:判断该数字是0 or 其他?分类器1:判断该数字是1 or 其他?分类器2:判断该数字是2 or 其他?.......以此类推

        2)一对一(OvO)

        按照这个策略,要为每一对数字训练一个二分类器。这意味着要训练一个可以区分 0s 和 1s 的分类器,一个可以区分 0s 和 2s 的分类器,一个可以区分 1s 和 2s 的分类器,等等。如果有 N 个类别,则需要训练 N×N(N-1)/ 2 个分类器,对于 MNIST 数据集,需要 45 个分类器。

        当你要分类图像时,就分别运行这 45 个分类器,并选择性能最好的分类器。这个策略与其他策略相比有一个很大的优势,就是你只需要在它要分类的两个类别的训练集上进行训练。

      • 在大多数算法中,sklearn 库可以识别何时使用二分类器进行多分类任务,并自动使用 OvA 策略。

猜你喜欢

转载自blog.csdn.net/weixin_41712499/article/details/87904334