LR和SVM的联系和区别

本文主要分析了LR和SVM的相同点与不同点。相同点包括二者都是分类、监督学习和判别模型,原始状态下都是线性分类算法,且在学术界和工业界应用广泛。不同点体现在损失函数、是否产生概率、对数据测度的依赖等多个方面,还提及适用数据集规模不同。

1,LR和SVM的相同点

(1)LR和SVM都是分类算法
(2)如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
         这里要先说明一点,那就是LR也是可以用核函数的,至于为什么通常在SVM中运用核函数而不在LR中运用,后面讲到他们之间区别的时候会重点分析。总之,原始的LR和SVM都是线性分类器,这也是为什么通常没人问你决策树和LR什么区别,决策树和SVM什么区别,你说一个非线性分类器和一个线性分类器有什么区别?
(3)LR和SVM都是监督学习算法
(4)LR和SVM都是判别模型
(5)LR和SVM在学术界和工业界都广为人知并且应用广泛

2,LR和SVM的不同点

(1)本质上是Loss Function不同。

  • LR的损失函数是cross entropy(交叉熵损失函数):
    J ( θ ) = − ∑ i [ y i l o g p ( x i ) + ( 1 − y i ) l o g ( 1 − p ( x i ) ) ] J(\theta)=-\sum_i \left[ y_i log p(x_i)+(1-y_i)log(1-p(x_i))\right] J(θ)=i[yilogp(xi)+(1yi)log(1p(xi))]
    其中, P ( Y = 1 ∣ x ) = p ( x ) = e x p ( θ ⋅ x + b ) 1 + e x p ( θ ⋅ x + b ) P(Y=1|x)=p(x)=\frac{exp(\theta \cdot x + b)}{1+exp(\theta \cdot x + b)} P(Y=1x)=p(x)=1+exp(θx+b)exp(θx+b) P ( Y = 0 ∣ x ) = 1 − p ( x ) = 1 1 + e x p ( θ ⋅ x + b ) P(Y=0|x) = 1-p(x)=\frac{1}{1+exp(\theta \cdot x + b)} P(Y=0x)=1p(x)=1+exp(θx+b)1
  • SVM的损失函数是最大化间隔距离:
    a r g m i n   L = 1 2 ∣ ∣ w ∣ ∣ 2 argmin\space L = \frac{1}{2}||w||^2 argmin L=21w2

    不同的Loss Function代表了不同的假设前提,也就代表了不同的分类原理。LR方法基于概率理论,假设样本类别为0或者为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值。SVM基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面。所以,SVM只考虑分离超平面附近的点,而LR考虑所有点(这也是区别之一),SVM中,在支持向量之外添加减少任何点都对结果没有影响,而LR则是每一个点都会影响决策。
    同时可以得出,SVM不直接依赖于数据分布,分离超平面不受一类点影响,而LR则是受所有数据的影响(这也是区别之一),所以受数据本身分别影响。

(2)SVM不能产生概率,LR可以产生概率。
    LR本身就是基于概率的,所以它产生的结果代表了分成某一类的概率,而SVM则因为优化的目标不含有概率因素,所以其不能直接产生概率。

(3)SVM依赖于数据的测度,而LR则不受影响。
    因为SVM是基于距离的,而LR是基于概率的,所以LR是不受数据不同维度测度不同的影响,而SVM因为要最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2,所以它依赖于不同维度测度的不同,如果差别较大需要做normalization。当然,如果LR要加上正则化,也需要normalization一下。

(4)SVM的损失函数自带正则项,LR则没有。
    因为SVM本身就是最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2,所以其优化的目标函数本身就含有正则项,即,结构风险最小化,所以不需要加正则项。而LR不加正则化的时候,其优化的目标是经验风险最小化,所以为了增强模型的泛化能力,通常会在LR损失函数中加入正则化。

(5)在解决非线性问题时,SVM采用核函数机制,而LR通常不采用核函数的方法。
    分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。在计算决策面是,SVM只有少数几个代表支持向量的样本参与了核计算,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。而在LR中,每个样本点都必须参与决策面的计算过程,也就是说,若我们在LR中运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。

(6)SVM适用于小规模数据集,LR适合于大规模数据集。
    因为在大规模数据集中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用。

3,参考资料

https://blog.youkuaiyun.com/haolexiao/article/details/70191667
https://www.cnblogs.com/zhizhan/p/5038747.html

### 逻辑回归(LR支持向量机(SVM)的系统实现对比分析 #### 1. 损失函数的设计 逻辑回归支持向量机在损失函数的选择上存在显著差异。逻辑回归采用的是对数损失函数(logistical loss),而支持向量机则使用铰链损失函数(hinge loss)。这种选择直接影响了模型的学习目标优化过程[^2]。 #### 2. 样本处理方式 逻辑回归在训练过程中会考虑所有样本,即使这些样本距离分类边界较远,它们仍然会对总体损失函数产生影响。相比之下,支持向量机仅关注离分类边界最近的样本点,即支持向量,这使得SVM的计算复杂度较低,尤其是在高维空间中[^3]。 #### 3. 非线性问题的解决 在处理非线性问题时,支持向量机通过引入核函数机制将数据映射到高维空间,从而实现线性可分。而在逻辑回归中,由于每个样本点都需要参分类决策计算,若引入核函数,则会导致计算复杂度急剧上升,因此在实际应用中,逻辑回归很少使用核函数机制[^4]。 #### 4. 模型复杂度 逻辑回归是一个参数化模型,其模型复杂度主要由特征数量决定。而支持向量机是非参数化模型,其复杂度取决于支持向量的数量。这意味着在大规模数据集上,逻辑回归可能更易于实现优化[^2]。 #### 5. 训练算法 逻辑回归通常采用梯度下降法或其变种进行优化,这类方法适用于大规模数据集。支持向量机的训练过程涉及求解一个二次规划问题,虽然有多种优化算法可供选择(如SMO算法),但在处理大规模数据时仍可能面临效率问题[^1]。 ```python # 示例代码:逻辑回归支持向量机的简单实现 from sklearn.linear_model import LogisticRegression from sklearn.svm import SVC # 假设X_train, y_train为训练数据 # 逻辑回归模型 lr = LogisticRegression() lr.fit(X_train, y_train) # 支持向量机模型 svm = SVC(kernel='linear') # 使用线性核 svm.fit(X_train, y_train) ``` #### 6. 输出形式 逻辑回归可以提供概率输出,即对于每个样本预测其属于某一类别的概率值。而支持向量机直接输出类别标签,不直接提供概率估计(但可以通过 Platt Scaling 等方法间接获得概率输出)[^1]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值