缺點
· 當觀測樣本很多時,效率并不是很高;
· 對非線性問題沒有通用解決方案,有時候很難找到一個合適的核函數;
· 對缺失數據敏感;
· 對于核的選擇也是有技巧的(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/