scikit-learn 的 LogisticRegression 最小化是什麼?
我已經使用
linear_model.LogisticRegression
L1 正則化來解決分類問題。我的第一次測試非常令人滿意。但是,我之前的測試是在 R 中使用 glmnet 包完成的,現在我想了解它們為什麼不同。我正在嘗試手動(手動)推導最小化的目標函數
linear_model.LogisticRegression
。根據文檔,功能是. 但是,我無法獲得這個等式。我推導的起點是負對數似然,我可以將其分解為三個推導。
一個推導遵循 Andrew Ng 的方法,它最小化了一個函數,如(注意這裡)。第二種方法緊跟本講座(http://www.stat.cmu.edu/~cshalizi/uADA/12/lectures/ch12.pdf,第 12.2.1 節),這導致與使用的方程式相似的方程式scikit-learn,但不完全相同:(適用於方程 12.10 中的 scikit-learn 符號)。關閉,但不是雪茄!
第三種方法遵循http://people.csail.mit.edu/jrennie/writing/lr.pdf,其中,就像 scikit-learn (內部),其中目標函數是, 在哪裡是邏輯函數(改編自等式 7)。這裡,目標函數類似於 scikit-learn 的函數,但指數項是倒置的,並且不在指數範圍內。
所以問題是:scikit-learn 最小化的 L1 正則化邏輯回歸到底是什麼?
如果它真的是可能性,那麼我的推導在某些時候可能是錯誤的,是否有參考解釋根據文檔(和根據
sklearn/svm/src/liblinear/linear.cpp
)最小化的方程?如果不是可能性,它是什麼,我在哪裡可以找到更多信息?
沒關係我的問題,我再次進行了推導,發現 scikit 方程是正確的,它最小化了負對數似然。以下是步驟:
讓成對的(特徵,類),其中是一個列向量特徵。班上將限於這兩個值(而不是 0 和 1),稍後會有用。
我們正在嘗試模擬屬於類的特徵向量作為:
在哪裡是邏輯回歸模型的權重和截距。 為了獲得最優,我們希望在給定標記數據的數據庫的情況下最大化可能性。優化問題是:
在這一點上,我決定應用對數函數(因為它是單調遞增的)並通過乘以 -1 將最大化問題翻轉為最小化:
這正是 scikit-learn 最小化的方程(沒有 L1 正則化項,並且有)