邏輯回歸
邏輯回歸其實并不是回歸,而是一個分類算法
分類問題:郵件分類、圖像識別、疾病診斷、文字情感分析、金融欺詐檢測
根據歷史數據,預測樣本是屬于哪個類別,通過數據擬合分界
主要用于二分類任務
邏輯回歸公式
事實上是在多元線性回歸的基礎上做了e的指數變換
二分類損失函數——二分類交叉熵
邏輯回歸可以解決多分類問題嗎?
答:可以。對于多分類來言,事實上是多次二分類操作,這個過程叫OVR,將樣本帶入每個二分類模型,看哪個得到的概率大
Softmax回歸
Softmax回歸,針對多分類任務,采用的是Softmax函數
和邏輯回歸處理多分類不同,Softmax并不是劃分成多個二分類任務逐次求出,而是同時求出n個分界線
對比如下
Softmax回歸公式
計算后,pi求和是等于1的,這里的p其實就是預測值Yhead,z部分的運算依然是多元線性回歸的方法
損失函數——對數損失logloss
ij的含義:第i個樣本,第j個類別。由于是有監督學習,Y是真實值,帶入計算得損失
邏輯回歸多分類:
Softmax回歸多分類
多標簽MultiLabel和多分類MultiClass
對于多分類,每個樣本中只屬于一個類別,,適用Softmax
對于多標簽,每個樣本中可以存在多個類別,適用邏輯回歸One-hot
觀察data是什么樣的,采取不同策略
鳶尾花大作戰
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_scoreiris = datasets.load_iris()
X = iris.data
y = iris.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)#空白會自動根據數據,如果想主動設置做二分類或多分類,可以通過打印y,看類別個數
#ovr為邏輯回歸,multinomial為Softmax回歸
lr = LogisticRegression(multi_class = 'ovr')lr.fit(X_train, y_train)y_pred = lr.predict(y_test)print("準確率:%.2f" % accuracy_score(y_test, y_pred))