svm sgd matlab,SGDClassifier和LR,SVM的區別

看了許多文獻,以及最近的項目經驗,終於真正地搞懂了LR。

以前總聽大家說,看你對機器學習搞得透徹不透徹,就看你邏輯回歸理解得怎么樣;自己是統計出身的我,一直很有自信,以為無非就是個極大似然估計,求那個似然函數的極大值而已。然而實際上,這個之中也有很多的說法在里面,比如,求參數的方法。

在邏輯回歸中,我們極大似然估計的參數是可以通過“極大化該參數值”得到的,然而得到參數之后,並不代表我們就完成了,因為成千上萬的樣本,我們的參數要“收斂”才是一個穩定的model。

那么問題來了,怎樣更新我的參數,讓其收斂呢?

有兩種方式:在sklearn的LogisticRegression里,是通過每次增加負樣本權重【】的方式,讓樣本“重新排列”,之后得到了一個新的theta,直到兩次樣本基本上都不怎么變。

在sklearn里,還有一個分類器,之前一直沒搞懂,感覺跟logistic回歸的結果啊,目的啊都是一樣的啊,那么它出現的意義是什么?

后來我重新讀了一遍,發現LR那里面的參數沒有學習率,衰減率,等等。

讓我突然意識到這個LR的參數好像不是通過梯度下降求的。

后面這個SGDClassification,里面有learning rate,有decay等等,后來發現,是通過真正的梯度下降來求參的。【名稱也就是“隨機梯度下降”】

然后,看見許多人都說,在大規模數據下,基本上都要用到梯度下降的方法

【以下轉自“機器學習算法一覽,應用建議與解決思路 ”】

3.3 關於大數據樣本集和高維特征空間

我們在小樣本的toy dataset上,怎么搗鼓都有好的方法。但是當數據量和特征樣本空間膨脹非常厲害時,很多東西就沒有那么好使了,至少是一個很耗時的過程。舉個例子說,我們現在重新生成一份數據集,但是這次,我們生成更多的數據,更高的特征維度,而分類的類別也提高到5。

3.3.1 大數據情形下的模型選擇與學習曲線

在上面提到的那樣一份數據上,我們用LinearSVC可能就會有點慢了,我們注意到機器學習算法使用圖譜推薦我們使用SGDClassifier。其實本質上說,這個模型也是一個線性核函數的模型,不同的地方是,它使用了隨機梯度下降做訓練,所以每次並沒有使用全部的樣本,收斂速度會快很多。再多提一點,SGDClassifier對於特征的幅度非常敏感,也就是說,我們在把數據灌給它之前,應該先對特征做幅度調整,當然,用sklearn的StandardScaler可以很方便地完成這一點。

SGDClassifier每次只使用一部分(mini-batch)做訓練,在這種情況下,我們使用交叉驗證(cross-validation)並不是很合適,我們會使用相對應的progressive validation:簡單解釋一下,estimator每次只會拿下一個待訓練batch在本次做評估,然后訓練完之后,再在這個batch上做一次評估,看看是否有優化。

【轉載結束】

然后,在VW中,實際上也就是優化了一個SGD,因為VW里的參數基本上都是各種學習率。

所以說,我理解,VW實際上就是一個優化了的,通過梯度下降的方法來解決各種求解loss function的分類器。

如果loss function是hinge loss 那么就是SVM

如果是log 那就是LR

如果是square 平方誤差,那么就是線性回歸

如果是quantile,那么就是求解中位數的線性回歸

如果是0-1損失 就是說“計數缺失了多少”,那么【在vw后面加binary】

【以下轉自知乎】

1.數據集很大還是優先考慮 SGD regressor。

尤其特別大數據集,SGD外,幾乎別無他法。跑不動。

2.不是特別特別大的,

先試試嶺回歸或linear kernal的SVR。

3.不管用,換RBF kernal或者Ensemble regressor。

4.如果有important features要先feature selection,則適用Lasso,ElasticNet。同樣是指非特大數據集。

作者:Fu Tiffany

鏈接:https://www.zhihu.com/question/21704547/answer/74404131

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

總結

用自己語言總結一下,可能不全面,有機會再補充:

1. LR有兩種求參數的方法,一種是梯度下降,一種是改變正負樣本權重。梯度下降的時候,把特征歸一化會有利於梯度的下降【參見知乎:為什么 feature scaling 會使 gradient descent 的收斂更好?https://www.zhihu.com/question/37129350】扁平的梯度下降的方向不是真正速率最快的方向。

2. FTRL用的就是隨機梯度下降SGD(OGD)的方法,它不同點在於每個特征都是獨立隨機下降的。而且會根據某個特征出現的比例來加載權重的。因此會導致某幾個特征出現的值很大,影響評分。【因為負樣本的存在】

3. LR輸出的是樣本的概率

4. BFGS用的是擬牛頓的辦法,模仿了逆hessian矩陣。避免了存儲逆hessian矩陣。

5. LR和SVM的區別:SVM尋求的是一個超平面,因此並不是每個樣本都對其平面有影響;LR是每個樣本點對超平面都有影響。SVM是無法輸出概率的,得到的也是距離超平面的一個距離的函數。【libsvm也是一個距離的測度,求解的時候也是轉換成lr再求解的】

6. SVM必須中心化,因為這是跟“距離”有關的,不正規化之后會出問題

7. LR的損失函數是log loss SVM的損失函數是hinge LOSS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值