线性模型是一类机器学习算法的统称,常常被用于分类、回归任务中,是最为基础的模型。常见的线性模型有线性回归、单层感知机和 Logistic 回归。掌握线性模型十分有必要性,往往非线性模型都是以线性模型的输出结果的基础上进行非线性变换、层级叠加等操作。
1.线性模型基本形式
给定n个属性描述的示例: <math xmlns="http://www.w3.org/1998/Math/MathML"> x = x i ( i = 1 ; 2 ; . . . ; n ) x=x_i(i=1;2;...;n) </math>x=xi(i=1;2;...;n)
线性模型的预测函数:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> f ( x ) = ∑ i = 1 n ( ω i x i ) + b f\left({x}\right)=\sum_{i=1}^{n}{{(\omega}_ix_i)+b} </math>f(x)=i=1∑n(ωixi)+b
线性模型的向量形式:
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block"> f ( x ) = ω T x + b f\left({x}\right)={\omega}^T{x}+b </math>f(x)=ωTx+b
其中, <math xmlns="http://www.w3.org/1998/Math/MathML"> ω ω </math>ω是模型的权重向量, <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x 是输入特征向量, <math xmlns="http://www.w3.org/1998/Math/MathML"> b b </math>b 是偏置项。
权重向量用来表示某个特征对于预测结果的影响程度。 特征向量被用来表示输入数据的特征,以便进行分类或回归等任务。 偏置项在模型中的作用主要是为了使模型能够更好地适应数据的分布。在某些情况下,数据可能并不完全分布在直线上,而是呈现出一种偏斜或者弯曲的趋势。这时,偏置项就能够起到调整模型预测结果的作用,使得模型能够更好地拟合数据。
有时候可能不需要使用偏置项,例如:当数据已经分布在一条直线上,或者希望强制模型只学习一个斜率时,就不需要使用偏置项。
2.线性回归
线性回归是在给定自变量和因变量的情况下,通过找到一条直线(或者多个线性组合的平面),使得这条直线(或平面)与自变量和因变量之间的关系最好拟合。这里的"最好拟合"通常是找到最适合的 <math xmlns="http://www.w3.org/1998/Math/MathML"> ω ω </math>ω 和 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x,所以需要通过最小化预测值 与实际值 之间的均方误差 (因为它是回归任务常用的性能度量)来进行优化。这个过程通常使用梯度下降等优化算法来实现。
3.对数几率回归(逻辑回归)
对数几率回归 ,又称逻辑回归 ,通过构建一个广义线性模型来实现二分类预测。它首先需要确定一个联系函数,将输入特征与预测结果联系起来。在逻辑回归中,使用的是 Sigmoid函数 ,该函数可以将任何实数映射到 <math xmlns="http://www.w3.org/1998/Math/MathML"> ( 0 , 1 ) (0,1) </math>(0,1) 之间,因此非常适合用于二分类问题。
逻辑回归的损失函数通常采用对数损失 的形式(因此也称为对数几率回归),其优点是它对于数据的分布假设较少,并且可以处理非线性的关系。通过最小化损失函数,逻辑回归可以找到一组模型参数,使得对于给定的输入特征 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x ,预测结果 <math xmlns="http://www.w3.org/1998/Math/MathML"> y y </math>y 的概率值最大化。
为什么使用逻辑回归?
因为逻辑回归适用于解决多种问题,它具有以下优点:
(1)易于理解和实现:逻辑回归的模型结构简单,易于理解和解释。同时,由于其使用Sigmoid函数作为激活函数,因此可以实现高效的计算和优化。
(2)可解释性强:逻辑回归的输出结果可以被解释为概率值,因此具有很强的可解释性。这使得它在一些需要解释性的应用场景中得到广泛使用,例如信用评分、疾病预测等。
(3)适用于非线性和多分类问题:逻辑回归可以适用于非线性和多分类问题。通过使用不同的联系函数和损失函数,可以对不同类型的数据和问题进行建模和预测。
(4)高效性和健壮性(Robust):逻辑回归的实现方法经过优化,可以高效地进行大规模数据的训练和预测。此外,它对于数据的异常值和噪声具有较强的健壮性,能够适应多种数据分布情况。
4.线性判别分析
线性判别分析(Linear Discriminant Analysis,LDA)是经典的判别分析方法,用于分类问题。它通过构建一个线性模型,使得不同类别的数据在模型中得到最佳的分离。线性判别分析假设数据符合多元正态分布,并且各类数据之间具有球形决策边界。
线性判别分析通过以下步骤实现分类:
(1)计算类内散度矩阵( <math xmlns="http://www.w3.org/1998/Math/MathML"> S w S_w </math>Sw):对于每个类别,计算该类别内所有样本的协方差矩阵。
(2)计算类间散度矩阵( <math xmlns="http://www.w3.org/1998/Math/MathML"> S b S_b </math>Sb):对于不同类别的样本,计算它们之间的协方差矩阵。
(3)计算 <math xmlns="http://www.w3.org/1998/Math/MathML"> S w − 1 S b {Sw}^{-1}{Sb} </math>Sw−1Sb :将类内散度矩阵的逆与类间散度矩阵相乘。
(4)求解广义特征问题:对于给定的输入特征 <math xmlns="http://www.w3.org/1998/Math/MathML"> x x </math>x ,求解广义特征方程 <math xmlns="http://www.w3.org/1998/Math/MathML"> x T ( S w − 1 S b ) x = λ x^T({Sw}^{-1}{Sb})x=λ </math>xT(Sw−1Sb)x=λ ,得到特征值 <math xmlns="http://www.w3.org/1998/Math/MathML"> λ λ </math>λ 和对应的特征向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> u u </math>u 。
(5)构建判别函数:根据特征值和特征向量的计算结果,构建判别函数 <math xmlns="http://www.w3.org/1998/Math/MathML"> y = u T x + b y=u^T x+b </math>y=uTx+b ,其中 <math xmlns="http://www.w3.org/1998/Math/MathML"> u u </math>u 是特征向量, <math xmlns="http://www.w3.org/1998/Math/MathML"> b b </math>b 是偏置项。
5.多分类学习
多分类学习旨在解决三个或更多类别的分类问题。它与二分类问题不同,后者只涉及两个类别的分类。多分类学习广泛应用于图像分类、自然语言处理、生物信息学等领域。
常用的多分类学习方法:
(1)一对一(One-vs-One):该策略将N个类别两两配对,生成 <math xmlns="http://www.w3.org/1998/Math/MathML"> N ( N − 1 ) 2 \frac{N(N-1)}{2} </math>2N(N−1) 个二分类任务。在测试阶段,将新样本提交给所有分类器,并采用投票机制或其他方法确定最终分类结果。
(2)一对多(One-vs-All):该策略为每个类别训练一个二分类器,将该类作为正类,其他所有类别作为反类。在测试阶段,对每个分类器进行预测,并选择获得最多预测为正类的类别作为最终分类结果。
(3)多对多(Many-vs-Many):该策略采用 纠错输出编码(ECOC) 或 多层感知器等框架 ,将多分类问题分解为多个二分类任务。通过训练多个二分类器并对预测结果进行集成,以获得更准确的多分类结果。
6.类别不平衡问题
类别不平衡问题是指在分类任务中,不同类别的样本数量存在严重不平衡的情况。例如,在一个二分类问题中,正例的数量远远大于反例的数量,或者反例的数量远远大于正例的数量,这就导致了类别不平衡的问题。
类别不平衡问题如何影响学习结果?
在训练过程中,如果不同类别的样本数量差别很大,会导致模型偏向于数量较多的类别,从而影响分类精度。例如,在上述二分类问题中,如果正例的数量远远大于反例的数量,模型可能会过于乐观地预测所有新样本为正例,从而导致较高的误报率。
为什么会出现类别不平衡问题?
类别不平衡问题通常出现在现实世界的应用中,例如垃圾邮件识别、疾病诊断等。由于不同类别的样本数量可能受到多种因素的影响,如数据收集过程中的人为因素、不同类别的发生概率等,因此难以避免类别不平衡问题的出现。
怎么解决类别不平衡问题?
为了解决类别不平衡问题,可以采用以下方法:
- 过采样(Oversampling):对数量较少的类别进行重复采样,使其与数量较多的类别平衡。
- 欠采样(Undersampling):从数量较多的类别中随机选取少量样本,使其与数量较少的类别平衡。
- 组合方法:同时使用过采样和欠采样方法,以获得更好的平衡效果。
- 代价敏感学习(Cost-sensitive learning):为不同类别的错误分类赋予不同的权重,从而使模型更加关注数量较少的类别。
- 成对分类(Pairwise classification):将不同类别的样本两两组合,训练多个二分类器,以提高对数量较少的类别的识别精度。