首頁(yè)人工智能常見(jiàn)問(wèn)題正文

LR和SVM的聯(lián)系與區(qū)別是什么?

更新時(shí)間:2023-10-19 來(lái)源:黑馬程序員 瀏覽量:

  邏輯回歸(Logistic Regression,LR)和支持向量機(jī)(Support Vector Machine,SVM)都是監(jiān)督學(xué)習(xí)算法,用于分類問(wèn)題。它們有一些共同點(diǎn),但也有明顯的區(qū)別。下面將詳細(xì)說(shuō)明它們之間的聯(lián)系和區(qū)別,并提供Python代碼示例來(lái)演示它們的用法。

  聯(lián)系:

  1.用途:LR和SVM都用于二元分類和多類分類問(wèn)題。

  2.線性分類器:LR和SVM都是線性分類器,它們?cè)噲D找到一個(gè)分割超平面來(lái)將不同類別的數(shù)據(jù)分開(kāi)。

  區(qū)別:

  1.損失函數(shù):

  (1)LR使用對(duì)數(shù)損失函數(shù)(Logistic Loss),也稱為交叉熵?fù)p失函數(shù)。

  (2)SVM使用合頁(yè)損失函數(shù)(Hinge Loss)。

  2.決策邊界:

  (1)LR的決策邊界是一條直線(在二維空間中)或一個(gè)超平面(在多維空間中),它嘗試最大程度地?cái)M合數(shù)據(jù)分布。

  (2)SVM的決策邊界是支持向量,它是離決策邊界最近的數(shù)據(jù)點(diǎn),SVM嘗試最大化這些支持向量與決策邊界的距離。

  3.輸出值:

  (1)LR輸出類別的概率,可以用于估計(jì)數(shù)據(jù)點(diǎn)屬于某一類的概率。

  (2)SVM輸出是樣本點(diǎn)到?jīng)Q策邊界的距離,沒(méi)有直接的概率解釋。

  4.魯棒性:

  (1)LR對(duì)噪聲和異常點(diǎn)比較敏感,容易過(guò)擬合。

  (2)SVM在決策邊界附近的支持向量上更加魯棒,對(duì)噪聲的容忍性更好。

  下面是使用Python的scikit-learn庫(kù)演示如何使用LR和SVM進(jìn)行分類:

# 導(dǎo)入必要的庫(kù)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.datasets import make_classification

# 創(chuàng)建一個(gè)模擬數(shù)據(jù)集
X, y = make_classification(n_samples=100, n_features=2, n_informative=2, n_redundant=0, random_state=42)

# 創(chuàng)建和訓(xùn)練邏輯回歸模型
lr = LogisticRegression()
lr.fit(X, y)

# 創(chuàng)建和訓(xùn)練支持向量機(jī)模型
svm = SVC(kernel='linear')
svm.fit(X, y)

# 畫出數(shù)據(jù)點(diǎn)和決策邊界
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 繪制邏輯回歸的決策邊界
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50), np.linspace(ylim[0], ylim[1], 50))
Z = lr.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, alpha=0.8)

plt.title("Logistic Regression Decision Boundary")
plt.show()

# 繪制支持向量機(jī)的決策邊界
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50), np.linspace(ylim[0], ylim[1], 50))
Z = svm.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, levels=[-1, 0, 1], alpha=0.8)

plt.title("Support Vector Machine Decision Boundary")
plt.show()

  這段代碼創(chuàng)建了一個(gè)模擬數(shù)據(jù)集,使用邏輯回歸和支持向量機(jī)訓(xùn)練了兩個(gè)不同的分類器,并繪制了它們的決策邊界。您可以看到LR的決策邊界是一條直線,而SVM的決策邊界是支持向量附近的線。這個(gè)示例可以幫助我們理解LR和SVM之間的一些區(qū)別。

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!