目录
[1. 损失函数](#1. 损失函数)
[2. 正则化](#2. 正则化)
[3. 梯度下降](#3. 梯度下降)
[4. 二元回归与多元回归](#4. 二元回归与多元回归)
[1. 分类](#1. 分类)
[2. 参数列表](#2. 参数列表)
[3. 属性列表](#3. 属性列表)
[4. 接口列表](#4. 接口列表)
[1. 正则化的相关问题](#1. 正则化的相关问题)
[2. 分箱问题](#2. 分箱问题)
一、认识逻辑回归
逻辑回归,是一种名为 "回归" 的线性分类器,其本质是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。
首先理解线性回归算法:
𝜃 被统称为模型的参数,其中 𝜃₀被称为截距(intercept),𝜃₁~𝜃n 被称为系数。这个表达式,和 y=ax+b 是同样的性质。可以 使用矩阵来表示 这个方程,其中 x 和 𝜃 都可以被看做是一个 列矩阵,则有:
线性回归的任务,就是构造一个预测函数 z 来映射输入的特征矩阵 x 和 标签值 y 的线性关系,而构造预测函数的 核心 就是找出模型的参数:𝜃T 和 𝜃₀
通过函数 z,线性回归 使用输入的特征矩阵 x 来输出一组连续型的标签值 y_pred,以完成各种预测连续型 变量的任务。如果 得到的标签是 离散型变量,尤其是满足 0-1 分布的 离散型变量,我们可以通过引入 联系函数(link function) ,将线性回归方程 z 变换为 g(z),并且令 g(z)的值分布在(0,1)之间,且当 g(z)接近 0 时样本的标签为类别 0,当 g(z)接近1时样本的标签为类别 1,这样就得到了一个 分类模型。而这个联系函数对于 逻辑回归来说,就是 Sigmoid函数:
Sigmoid 函数 与 MinMaxSclaer 同理,是 属于数据预处理中的 "缩放" 功能,可以将数据压缩到[0,1]之内。区别在于 MinMaxScaler 归一化之后,是可以取到 0 和 1 的(最大值归一化后就是 1,最小值归一化后 就是 0),但 Sigmoid 函数只是 无限趋近于 0 和 1。
将 z 带入,可得到 二元逻辑回归模型的 一般形式:
而 y(x)就是逻辑回归 返回的 标签值。此时,y(x)的取值都在 [0,1] 之间,因此 y(x)和 1-y(x)相加必然为 1。如果令 y(x)除以1-y(x)可以得到 **形似几率(odds)**的式子,在此基础上取对数,可以得到:
y(x)的形似几率取 对数的 本质其实就是线性回归 z,我们实际上 是在对线性回归 模型的 预测结果取对数几率 来让其的结果 无限逼近 0 和 1。因此,其对应的模型被称为 "对数几率回归" (logistic Regression),也就是 逻辑回归,这个名为 "回归" 却是用来 做分类工作的 分类器。
二、二元逻辑回归(LogisticRegression)
涉及模块:sklearn.linear_model
1. 损失函数
逻辑回归 有着 基于训练数据求解参数 𝜃 的需求,并且 希望训练出来的模型 能够尽可能地 拟合训练数据,即模型在训练集上的 预测准确率越靠近 100%越好。
使用 "损失函数" 这个评估指标,来衡量参数为 𝜃 的模型拟合 训练集时产生的 信息损失的 大小,并以此衡量 参数 𝜃 的优劣。*++损失函数小,模型在训练集上 表现优异,拟合充分,参数优秀;损失函数大,模型在 训练集上表现 差劲,拟合不足,参数糟糕。++*我们追求,能够让损失函数最小化的 参数组合。损失函数具体 可以写成:
其中,𝜃 表示求解出来的 一组参数,m是 样本的个数,yi 是样本 i 上真实的标签,y𝜃(xi)是样本i上,基于 参数 𝜃 算出来的逻辑回归 返回值,xi 是样本 i 各个特征的 取值。
由于追求损失函数的最小值,让 模型在训练集上 表现最优,可能会引发另一个问题:如++果模型在训练集上表示优秀,却在测试集上表现糟糕,模型就会 过拟合++。虽然 逻辑回归 和线性回归 是天生 欠拟合的模型,但我们 还是需要控制 过拟合的技术来帮助 我们调整模型。对 逻辑回归中 过拟合的控制,通过 正则化来实现。
2. 正则化
涉及参数:penalty & C
正则化是用来防止模型过拟合的过程,常用的有 L1 正则化 和 L2 正则化 两种选项,分别通过在 损失函数后加上 参数向量 0 的 L1范式 和 L2范式 的倍数来实现。这个增加的范式,被称为 "正则项",也被称为 "惩罚项"。
L1 正则化会将参数压缩为 0,L2 正则化 只会让参数 尽量小,不会取到 0。L1 正则化 本质是一个 特征选择的过程,掌管了参数的 "稀疏性",L1 正则化 越强,参数向量中 就越多的参数为 0,参数就 越稀疏,选出来的 特征就越少,以此来 防止过拟合;L2 正则化在 加强的过程中,会尽量让 每个特征对模型都 有一些小的贡献,但 携带信息少,对 模型贡献不大的 特征的参数 会非常接近于 0。
3. 梯度下降
涉及参数:max_iter
根据损失函数:
对这个 函数上的 自变量 𝜃 求 偏导,就可以得到 梯度向量在第 j 组 𝜃 的坐标点上 的 表示形式:
在这个公式下,只要给定一组 𝜃 的取值 𝜃j;,再带入特征矩阵 x,就可以求得这一组 𝜃 取值下的预测结果 y𝜃(xi),结合 真实标签向量 y,就可以 获得这一组 𝜃j 取值下的 梯度向量,其 大小表示为 dj。我们的 目的是在可能的 𝜃 取值上 进行遍历,一次次计算 梯度向量,并在 梯度向量的反方向上 让损失函数 J 下降至 最小值。在这个过程中,我们的 𝜃 和 梯度向量的大小 d 都会不断改变,而我们遍历 𝜃 的过程可以描述为:
其中 𝜃 j+1 是第 j 次迭代后的 参数向量,𝜃j 是第 j 次迭代是的参数向量,𝛂被称为 步长,控制着每走一步(每迭代一次)后 𝜃 的变化,并以此来 影响每次迭代后 的梯度向量的 大小和方向。
sklearn当中,我们设置参数 max_iter 最大迭代次数来 代替步长,帮助我们控制 模型的迭代速度 并适时地 让模型停下。++max_iter 越大,代表步长越小,模型迭代时间越长,反之,则代表 步长设置很大,模型迭代 时间很短。++
4. 二元回归与多元回归
涉及参数:solver & multi_class
"liblinear" 是二分类专用。
三、sklearn中的逻辑回归(自查)
1. 分类
2. 参数列表
3. 属性列表
4. 接口列表
四、逻辑回归优点
1. 逻辑回归对线性关系的拟合效果非常好,特征与标签之间的线性关系极强的数据,都是逻辑回归的强项。
2. 对于线性数据,逻辑回归的拟合和计算都非常快,计算效率优于SVM和随机森林。
3. 逻辑回归返回的分类结果不是固定的 0、1,而是以小数形式呈现的类概率数字,因此可以把逻辑回归返回的结果当成连续型数据来利用。