sklearn前面有過一個樹狀圖,大概說了什么情況用什么模型合適。
監督學習分類模型,主要有邏輯回歸LogisticRegression,支持向量機svm,神經網絡,近鄰KNeighboursClassification,樸素貝葉斯naive_bayes以及集成模型,隨機森林, AdaBoost等等。
這次先說邏輯回歸(LR),svm。說說我的理解
在線性可分的情況下,邏輯回歸和svm可以說是一個相似的模型.
先看假設函數,hypothesis,先用邊界函數確定決策邊界,都是一個平面。
LR將邊界兩邊的f(x)值映射到Sigmoid函數中,得到一個概率,概率大于0.5,則認為是分類1,否則就為0。從Sigmoid函數可以看出x離0越遠,分類正確的概率越大。然后通過極大似然估計得到cost function目標函數,求解這根線的參數。
而SVM是確定兩根線,用于確定這兩條線的點就是支持向量,在這兩條線兩側的點分別是不同類別,SVM要求的是這兩條線是所有線里最大間距的兩條。而超平面是中間這條f(x)=0,這條線。
總的說來,我認為都是先畫一條線(一個超平面),根據這個平面得到一個f(x),然后用映射函數映射成0或者1.
跟LR不同的是SVM只跟支持向量有關,刪減一些離線比較遠的點,不會影響超平面,計算量也會小一些,且要求|f(x)|>=1,分類效果更好。但是就對異常點比較敏感。
而LR的平面是通過所有點確定的,刪減點必然會有影響。
關于SVM的目標函數
ng這樣推導的svm的目標函數,根據LR的目標函數,做了一定的簡化,就變成這樣。粉色線的斜率都行,因為看得出在分類正確的情況下,f(x)=0,不正確的離0越遠,值越大,錯的越多,懲罰越大。
這實際就是hinge loss,如果被正確分類,損失是0,否則損失就是 1?mi(w) 。
用hinge 函數來表示目標函數就會成這樣。可以看成是L2正則加Hinge loss之和。
y取0,1?-1,1
可以看到ng的y取值0,1,但是更多情況下,SVM的y取值為-1,1,特別是用幾何來推導目標函數時。比如理解SVM的三重境界,特別提到為啥要取-1,1.
我認為是因為SVM有一個約束條件,就是y>=1時,f(x)>=1,,f(x)<=-1時,y><=-1,用-1,1就能把這兩個條件合成一個
這也正是幾何求解時的函數間隔,它既能表示分類的正確性,也能表示離0的距離,即x正確分類的可信度。 但是可以看到用幾何求解的目標函數是
這與ng的目標函數有所差異,就是少了一坨。這就是所謂硬間隔,就是所有點都必須離超平面有1以上的距離,但是有些情況有噪點,異常點,SVM就會為了零星異常點更改超平面。
比如這樣,明顯看出間隔變小,并不是一個更好的邊界。
于是修改了約束條件。意思是不用強行比1大,小點也行,這就是軟間隔。
目標函數也就變成這樣。
ng與幾何推導最后也就是殊途同歸了。
整理一下
線性不可分
LR對線性不可分的情況不太友好,因為對于f(x)是多項式的情況,w項太多,不好確定,一般情況線性不可分會選用SVM的核函數和神經網絡。
SVM的核函數是把線性不可分的數據升維度之后就能線性可分,然后數學能通過核函數再降維。
樸素貝葉斯主要用在處理文字信息,分類垃圾信息之類,近鄰KNeighboursClassification統計需驗證點周圍的k個已知點的類別,取多數的那個類別為該點的類別。