logisticregression參數小結

sklearn.linear_model 文檔

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

LogisticRegression(penalty=’l2’, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, 
   			       class_weight=None, random_state=None, solver=’warn’, max_iter=100, multi_class=’warn’, 
   			       verbose=0, warm_start=False, n_jobs=None
  • penalty : str,‘l1’或’l2’,默認:‘l2’
    用於指定正則化中使用的規範。 ‘newton-cg’,'sag’和’lbfgs’解算器只支持l2正則化。
    一般penalty選擇L2正則化就夠了。如果選擇L2正則化發現還是過擬合,即預測效果差的時候,可以考慮L1正則化。
    如果模型的特徵非常多,希望一些不重要的特徵係數歸零,從而讓模型係數稀疏化的話,也可以使用L1正則化。

  • solver : str,{‘newton-cg’,‘lbfgs’,‘liblinear’,‘sag’,‘saga’},默認:‘liblinear’。
    用於優化問題的算法。
    對於小數據集,‘liblinear’是一個不錯的選擇,而’sag’和’saga’對於大數據集來說更快。
    對於多類問題,只有’newton-cg’,‘sag’,'saga’和’lbfgs’處理多項損失。
    ‘newton-cg’,'lbfgs’和’sag’只處理L2 penalty,而’liblinear’和’saga’處理L1 penalty。

  • multi_class : str,{‘ovr’,‘multinomial’,‘auto’},默認值:‘ovr’
    multi_class參數決定了我們分類方式的選擇,有ovr和multinomial兩個值可以選擇,默認是 ovr。
    ovr即one-vs-rest(OvR),而multinomial即many-vs-many(MvM)。如果是二元邏輯迴歸,ovr和multinomial並沒有任何區別,區別主要在多元邏輯迴歸上。

    OvR的思想很簡單,無論你是多少元邏輯迴歸,我們都可以看做二元邏輯迴歸。具體做法是,對於第K類的分類決策,我們把所有第K類的樣本作爲正例,除了第K類樣本以外的所有樣本都作爲負例,然後在上面做二元邏輯迴歸,得到第K類的分類模型。其他類的分類模型獲得以此類推。

    而MvM則相對複雜,這裏舉MvM的特例one-vs-one(OvO)作講解。如果模型有T類,我們每次在所有的T類樣本里面選擇兩類樣本出來,不妨記爲T1類和T2類,把所有的輸出爲T1和T2的樣本放在一起,把T1作爲正例,T2作爲負例,進行二元邏輯迴歸,得到模型參數。我們一共需要T(T-1)/2次分類。

    從上面的描述可以看出OvR相對簡單,但分類效果相對略差(這裏指大多數樣本分佈情況,某些樣本分佈下OvR可能更好)。而MvM分類相對精確,但是分類速度沒有OvR快。

    如果選擇了ovr,則4種損失函數的優化方法liblinear,newton-cg, lbfgs和sag都可以選擇。但是如果選擇了multinomial,則只能選擇newton-cg, lbfgs和sag了。

  • C : float,默認值:1.0

  • dual : bool,默認值:False
    當n_samples> n_features時,首選dual = False。

  • max_iter : int,默認值:100

  • n_jobs : int或None,可選(默認=無)
    如果multi_class =‘ovr’“,則在對類進行並行化時使用的CPU核心數。solver無論是否指定了“multi_class”,當設置爲“liblinear” 時,將忽略此參數。-1表示使用所有處理器。

from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(random_state=0, solver='lbfgs',
                               multi_class='multinomial')

clf.fit(X, y) 


clf.predict(X[:2, :]
clf.predict_proba(X[:2, :])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章