我的數(shù)據(jù)帶入神經(jīng)網(wǎng)絡(luò)或者支持向量機(jī)里面,為什么效果很差呢?為什么別人論文里的就效果很好呢?
大家常常把機(jī)器學(xué)習(xí)算法(如神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等)應(yīng)用到自己的學(xué)科領(lǐng)域內(nèi),用來擬合一些關(guān)系式不確定但是有千絲萬縷聯(lián)系的特征量。有的同學(xué)辛辛苦苦搜集了很久的數(shù)據(jù),帶入了神經(jīng)網(wǎng)絡(luò)中發(fā)現(xiàn)構(gòu)建的模型效果并不好,不管怎么調(diào)節(jié)參數(shù)效果都很差,泛化性都難以名狀。很多同學(xué)第一反應(yīng)就是肯定是程序?qū)戝e了,或者就是數(shù)據(jù)沒有預(yù)處理,但是查了很久之后,發(fā)現(xiàn)并沒有什么問題。那么效果這么差,問題到底出在哪里呢?為什么參考的別人的論文里的效果都那么好呢?小豬老師來為大家一一解答:
1、搜集的數(shù)據(jù)有錯誤或者說測量誤差較大
測量誤差大家都很好理解,也許是儀器的精度導(dǎo)致的,也許是測量的方法導(dǎo)致的(可能夾雜噪聲),大家可以追根溯源去發(fā)現(xiàn)問題的所在;
數(shù)據(jù)錯誤大概有兩種情形:
數(shù)據(jù)中有異常值,和其他數(shù)據(jù)差異過大。如圖中的紅點(diǎn)與其他的點(diǎn)差異過大,那么可能是記錄錯誤或者是測量錯誤
b.兩組同樣的的輸入,對應(yīng)的輸出卻不同。在給定的訓(xùn)練好的模型的前提下,輸入確定了后,輸出是唯一的。因此出現(xiàn)不同的輸出值一定會使得訓(xùn)練后的模型精度下降
2、選取的特征與輸出之間沒有關(guān)系
這個很好理解,舉個例子,比如我們現(xiàn)在要區(qū)分足球和籃球兩個事物,我們該從哪些角度去識別才能實(shí)現(xiàn)精準(zhǔn)區(qū)分呢?這里的角度實(shí)際上就是我們選取的特征。
如果從形狀這個特征來說,足球是圓的,籃球也是圓的,光看形狀仿佛無法區(qū)分這是一個足球還是籃球..........
如果從顏色來說,籃球一般是棕褐色,足球大部分為黑白的或者彩色的(不排除也有棕褐色),從這個角度可以很大程度的去區(qū)分兩個球
如果從重量來說,籃球一般都較重,足球一般都較輕,這也可以很好的區(qū)分。
可見,選擇合適的特征是相當(dāng)重要的,所以很無腦的把一堆實(shí)驗(yàn)數(shù)據(jù)丟進(jìn)去訓(xùn)練也是得不償失的。在訓(xùn)練模型之前,可以先用其他方法計(jì)算一下特征和輸出之間的關(guān)聯(lián)性(如灰色關(guān)聯(lián)度、層次分析、熵權(quán)法等)
3、模型出現(xiàn)了過擬合,泛化性太差
過擬合的直接表現(xiàn)就是模型訓(xùn)練好之后,重新帶入訓(xùn)練數(shù)據(jù)的輸入,得出的擬合輸出的精度非常的高;一旦帶入沒有訓(xùn)練過的測試數(shù)據(jù),可以發(fā)現(xiàn)輸出的結(jié)果與真實(shí)結(jié)果相差的非常大。
導(dǎo)致這種現(xiàn)象的情況一般也有兩個原因:
訓(xùn)練集、測試集沒有合理的選擇劃分:訓(xùn)練集的選擇要盡大可能的包含數(shù)據(jù)的數(shù)據(jù)類型和范圍,避免出現(xiàn)測試集中的數(shù)據(jù)和訓(xùn)練集中的數(shù)據(jù)有很大差異的情形,如果不知道怎么選擇的話可以用交叉驗(yàn)證法選擇。
過擬合是神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等模型的固有缺點(diǎn),這個缺點(diǎn)沒法去根除,只能通過改進(jìn)算法來改善這一情況。
4、選擇的數(shù)據(jù)量太少或者選擇的算法模型不適合此數(shù)據(jù)
神經(jīng)網(wǎng)絡(luò)往往需要很多的數(shù)據(jù),支持向量機(jī)相對來說需求量較小,這是由每個算法的自身的特點(diǎn)導(dǎo)致的。
算法模型有很多,包括各種神經(jīng)網(wǎng)絡(luò)、決策樹、貝葉斯、隨機(jī)森林等,大家可以多選擇幾個模型來訓(xùn)練,選一個效果最好的出來使用。
5、為什么差不多的數(shù)據(jù),別人論文的里的效果特別好,我的就很差呢?
當(dāng)然回答這個問題,大家首先要查看一下是否有前面1-4點(diǎn)中描述的問題,如果有的話要及時改成。這里假設(shè)排除前面4點(diǎn)問題以及程序的錯誤的問題,如果效果還是很差,那么大概有兩種可能:
模型中訓(xùn)練的數(shù)據(jù)有造假(或者編造)的嫌疑,因?yàn)樵谡撐闹杏捎跇颖緮?shù)據(jù)往往很多,因此不會把全部數(shù)據(jù)放進(jìn)文章里(也可能只放一部分),所以我們無法去驗(yàn)證其數(shù)據(jù)的真?zhèn)巍?br>
由于論文的發(fā)表具有功利性,如果預(yù)測的效果不好,那么論文是發(fā)表不了的,所以大家為了論文能順利的通過,可能會直接在文章中偽造效果圖或者直接編一些數(shù)據(jù)直接畫圖(這里指最終的結(jié)果數(shù)據(jù)不是模型算出來的,而是人為直接輸入進(jìn)去繪圖)。所以大家在看論文的時候,要保持參考的心態(tài),要對這種造假行為習(xí)以為常,不要過分相信已發(fā)表的文章。