實際應用中有很多非線性關系的變量很迷惑人谦屑,讓人誤用(多元)線性回歸甫贯,這篇文章對比分析了線性回歸和人工神經(jīng)網(wǎng)絡對這種變量的擬合,然后介紹下這種誤用帶來的后果,同時也會加深我們對人工神經(jīng)網(wǎng)絡的理解蔼两。
一甩鳄、多元線性回歸(MLR)與人工神經(jīng)網(wǎng)絡(ANN)--有模式
我們用數(shù)學上一個人人皆知的例子,矩形面積= 長*寬额划,假如一個研究人員不知道矩形面積與長和寬的關系妙啃,他想以長和寬為輸入變量用多元線性回歸去擬合矩形面積,然后我們看下結(jié)果俊戳。
1揖赴、數(shù)據(jù)介紹
本文的數(shù)據(jù)主要用MATLAB來隨機產(chǎn)生,這些數(shù)據(jù)分為三組抑胎,即原始數(shù)據(jù)燥滑、測試數(shù)據(jù)1和測試數(shù)據(jù)2,如下圖:
1)原始數(shù)據(jù)為area
阿逃,length
和wide
铭拧,用來做MLR公式和作為ANN的訓練數(shù)據(jù), length
和wide
的數(shù)據(jù)范圍皆為 1-100。
2)測試數(shù)據(jù)1為test_area
, test_length
和test_wide
恃锉,用來帶入上面MLR公式和ANN訓練函數(shù)搀菩,檢驗效果如何。這里的test_length
和test_wide
的數(shù)據(jù)范圍和上面的一樣都在1-100之間淡喜。
3)測試數(shù)據(jù)1為test_area_2
, test_length_2
和 test_wide_2
宠纯,同樣用來檢驗效果蔑水,只是數(shù)據(jù)在原始數(shù)據(jù)范圍外孵坚,即100-200之間方庭。
2陨晶、結(jié)果評估
我們用擬合出來的結(jié)果與真實值(即test_area
和test_area_2
)的mean squared error(MSE)和相關系數(shù)R^2來評估擬合效果凉逛。
3纲爸、結(jié)果
3.1覆醇、得到MLR公式
這里用Excel的數(shù)據(jù)分析——回歸直接得到變量length
和wide
的系數(shù)與截距褥琐,R^2看起來還不錯0.83锌俱。然后我們把測試數(shù)據(jù)1和測試數(shù)據(jù)2直接帶入即可。
3.2敌呈、得到ANN訓練函數(shù)
采用前饋神經(jīng)網(wǎng)絡贸宏,以length
,wide
為輸入磕洪,area
為target進行訓練吭练,隱含層(hidden neurons)用5個,MSE相當?shù)臀鱿裕琑^2基本接近1鲫咽,如下圖,然后我們生成函數(shù),待會直接輸入測試數(shù)據(jù)1和測試數(shù)據(jù)2的長和寬即可分尸。
3.3锦聊、測試數(shù)據(jù)1結(jié)果對比
如下圖,看總體趨勢都還比較好箩绍,但MLR的MSE遠遠大于ANN的孔庭,注意這里的MSE沒有進行數(shù)據(jù)標準化計算,所以我們看到雖然MLR的MSE那么大材蛛,但是預測結(jié)果是可以的史飞;而ANN的擬合結(jié)果很明顯更好。
3.4仰税、測試數(shù)據(jù)2結(jié)果對比
這里就能看出區(qū)別了构资,雖然MLR的趨勢跟真實值差不太多(R^2挺高的),但是誤差太大了(MSE要比ANN的擬合結(jié)果大3個數(shù)量級)陨簇,相比而言吐绵,ANN表現(xiàn)就非常好了,他好像聰明地觀察到了面積=長*寬這個規(guī)律河绽,因為恰巧我們的輸入變量是符合這個規(guī)律的己单,他才有機會學得到,而那個用多元線性回歸的研究人員就沒那么幸運了耙饰。假如我們的輸入變量里沒有長或者寬會是怎么樣呢纹笼?還能得到如此好的預測結(jié)果嗎,看第二部分"線性回歸(LR)與ANN--無模式"
二苟跪、線性回歸(LR)與ANN--無模式
我們同樣用數(shù)學上類似的數(shù)據(jù)廷痘,只不過這次我們用周長和矩形面積,假如一個研究人員不知道矩形面積與周長關系件已,他觀察周長越大面積就越大笋额,于是以線性擬合去找他們之間的關系,然后我們看下結(jié)果篷扩。
1兄猩、數(shù)據(jù)介紹
數(shù)據(jù)分為三組,即原始數(shù)據(jù)鉴未、測試數(shù)據(jù)1和測試數(shù)據(jù)2枢冤,如下圖:
1)原始數(shù)據(jù)為area
和perimeter
,用來做LR公式和作為ANN的訓練數(shù)據(jù), perimeter
的數(shù)據(jù)范圍為 4-400(因為是用上面的數(shù)據(jù)范圍皆為 1-100的length
和wide
產(chǎn)生的)铜秆。
2)測試數(shù)據(jù)1為test_area
和 test_perimeter
淹真,用來帶入上面LR公式和ANN訓練函數(shù),檢驗效果如何羽峰。這里的test_perimeter
的數(shù)據(jù)范圍和上面的一樣在4-400之間趟咆。
3)測試數(shù)據(jù)1為test_area_2
和 test_perimeter_2
添瓷,同樣用來檢驗效果,只是數(shù)據(jù)在原始數(shù)據(jù)范圍外值纱,即400-800之間(用上面的test_length_2
和 test_wide_2
產(chǎn)生的)鳞贷。
2、結(jié)果評估
同樣用MSE和R^2
3虐唠、結(jié)果
3.1搀愧、得到線性擬合公式
如圖,看起來也還不錯
3.2疆偿、得到ANN訓練函數(shù)
采用前饋神經(jīng)網(wǎng)絡咱筛,以perimeter
為輸入,area
為target進行訓練杆故,隱含層(hidden neurons)用5個迅箩,訓練結(jié)果如圖,MSE這次挺高了处铛,注意MSE是平方了的(所以標準的ANN做法是先把數(shù)據(jù)標準化)饲趋,看下面的殘差直方圖更直觀一些,area
的平均值才2400左右撤蟆,殘差最高到了1000多奕塑,R^2還不錯,然后我們生成函數(shù)家肯,待會直接輸入測試數(shù)據(jù)1和測試數(shù)據(jù)2的周長即可龄砰。
3.3、測試數(shù)據(jù)1結(jié)果對比
這個因為測試數(shù)據(jù)與原始數(shù)據(jù)的輸入在一個范圍內(nèi)讨衣,所以看起來都還可以换棚,趨勢基本完全吻合,看MSE和R^2值依,似乎ANN略勝一籌圃泡。
3.4碟案、測試數(shù)據(jù)2結(jié)果對比
如圖愿险,線性回歸(LR)和ANN擬合的都不太好,MSE基本在同一個水平价说,ANN的略低一些辆亏,但是LR的趨勢似乎跟真實值更吻合一些。
在這里ANN好像學不到我們用隨機數(shù)得到的周長跟面積的關系鳖目,因為周長跟面積本來就沒有什么模式可言扮叨,對于沒有模式的東西,ANN似乎無能為力领迈,但是他能在力所能及的范圍內(nèi)給你預測彻磁,就像上面的測試數(shù)據(jù)1的結(jié)果還是可以的碍沐,因為訓練的數(shù)據(jù)與測試的數(shù)據(jù)范圍是一致的,而在數(shù)據(jù)范圍一致的情況下衷蜓,用LR效果也看似很好累提。然而我們不要忘了,周長與面積是并沒有線性關系的磁浇。
三斋陪、MLR與ANN--混合輸入
緊接著,如果我們不知道面積與長置吓、寬和周長這三者的關系无虚,把這三個變量都輸進去,然后再用MLR和ANN的方法衍锚,當然因為周長 = (長+寬)*2,所以MLR的方法肯定有一個參數(shù)為0友题。測試數(shù)據(jù)直接選用原始數(shù)據(jù)外的,因為我們知道在原始數(shù)據(jù)范圍內(nèi)的擬合結(jié)果肯定都還可以接受戴质,直接看結(jié)果咆爽,如圖,ANN表現(xiàn)良好置森,MLR還是不行斗埂。
同樣我們只輸入長和周長這兩個變量呢,結(jié)果是一致的凫海,ANN擬合很好呛凶,MLR很差(MLR結(jié)果跟上面的一模一樣的,因為長行贪、寬和周長三個變量間存在線性關系的)漾稀。