缺點
· 當觀測樣本很多時,效率並不是很高;
· 對非線性問題沒有通用解決方案,有時候很難找到一個合適的核函數;
· 對缺失數據敏感;
· 對於核的選擇也是有技巧的(libsvm中自帶了四種核函數:線性核、多項式核、RBF以及sigmoid核):
· 第一,如果樣本數量小於特徵數,那麼就沒必要選擇非線性核,簡單的使用線性核就可以了;
· 第二,如果樣本數量大於特徵數目,這時可以使用非線性核,將樣本映射到更高維度,一般可以得到更好的結果;
· 第三,如果樣本數目和特徵數目相等,該情況可以使用非線性核,原理和第二種一樣。
對於第一種情況,也可以先對數據進行降維,然後使用非線性核,這也是一種方法。
7.人工神經網絡的優缺點
人工神經網絡的優點:
· 分類的準確度高;
· 並行分布處理能力強,分布存儲及學習能力強,
· 對噪聲神經有較強的魯棒性和容錯能力,能充分逼近複雜的非線性關係;
· 具備聯想記憶的功能。
人工神經網絡的缺點:
· 神經網絡需要大量的參數,如網絡拓撲結構、權值和閾值的初始值;
· 不能觀察之間的學習過程,輸出結果難以解釋,會影響到結果的可信度和可接受程度;
· 學習時間過長,甚至可能達不到學習的目的。
8、K-Means聚類
之前寫過一篇關於K-Means聚類的文章,博文連結:機器學習算法-K-means聚類。關於K-Means的推導,裡面有著很強大的EM思想。
優點
· 算法簡單,容易實現;
· 對處理大數據集,該算法是相對可伸縮的和高效率的,因為它的複雜度大約是O(nkt),其中n是所有對象的數目,k是簇的數目,t是迭代的次數。通常k<<n。這個算法通常局部收斂。
· 算法嘗試找出使平方誤差函數值最小的k個劃分。當簇是密集的、球狀或團狀的,且簇與簇之間區別明顯時,聚類效果較好。
缺點
· 對數據類型要求較高,適合數值型數據;
· 可能收斂到局部最小值,在大規模數據上收斂較慢
· K值比較難以選取;
· 對初值的簇心值敏感,對於不同的初始值,可能會導致不同的聚類結果;
· 不適合於發現非凸面形狀的簇,或者大小差別很大的簇。
· 對於」噪聲」和孤立點數據敏感,少量的該類數據能夠對平均值產生極大影響。
算法選擇參考
之前翻譯過一些國外的文章,有一篇文章中給出了一個簡單的算法選擇技巧:
首當其衝應該選擇的就是邏輯回歸,如果它的效果不怎麼樣,那麼可以將它的結果作為基準來參考,在基礎上與其他算法進行比較;
然後試試決策樹(隨機森林)看看是否可以大幅度提升你的模型性能。即便最後你並沒有把它當做為最終模型,你也可以使用隨機森林來移除噪聲變量,做特徵選擇;
如果特徵的數量和觀測樣本特別多,那麼當資源和時間充足時(這個前提很重要),使用SVM不失為一種選擇。
通常情況下:【GBDT>=SVM>=RF>=Adaboost>=Other…】,現在深度學習很熱門,很多領域都用到,它是以神經網絡為基礎的,目前我自己也在學習,只是理論知識不是很厚實,理解的不夠深,這裡就不做介紹了。
算法固然重要,但好的數據卻要優於好的算法,設計優良特徵是大有裨益的。假如你有一個超大數據集,那麼無論你使用哪種算法可能對分類性能都沒太大影響(此時就可以根據速度和易用性來進行抉擇)。
參考文獻
[1]https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
[2]http://blog.echen.me/2011/04/27/choosing-a-machine-learning-classifier/
[3]http://www.csuldw.com/2016/02/26/2016-02-26-choosing-a-machine-learning-classifier/