实际应用中有很多非线性关系的变量很迷惑人,让人误用(多元)线性回归,这篇文章对比分析了线性回归和人工神经网络对这种变量的拟合,然后介绍下这种误用带来的后果,同时也会加深我们对人工神经网络的理解。
一、多元线性回归(MLR)与人工神经网络(ANN)--有模式
我们用数学上一个人人皆知的例子,矩形面积= 长*宽,假如一个研究人员不知道矩形面积与长和宽的关系,他想以长和宽为输入变量用多元线性回归去拟合矩形面积,然后我们看下结果。
1、数据介绍
本文的数据主要用MATLAB来随机产生,这些数据分为三组,即原始数据、测试数据1和测试数据2,如下图:
1)原始数据为area
,length
和wide
,用来做MLR公式和作为ANN的训练数据, length
和wide
的数据范围皆为 1-100。
2)测试数据1为test_area
, test_length
和test_wide
,用来带入上面MLR公式和ANN训练函数,检验效果如何。这里的test_length
和test_wide
的数据范围和上面的一样都在1-100之间。
3)测试数据1为test_area_2
, test_length_2
和 test_wide_2
,同样用来检验效果,只是数据在原始数据范围外,即100-200之间。
2、结果评估
我们用拟合出来的结果与真实值(即test_area
和test_area_2
)的mean squared error(MSE)和相关系数R^2来评估拟合效果。
3、结果
3.1、得到MLR公式
这里用Excel的数据分析——回归直接得到变量length
和wide
的系数与截距,R^2看起来还不错0.83。然后我们把测试数据1和测试数据2直接带入即可。
3.2、得到ANN训练函数
采用前馈神经网络,以length
,wide
为输入,area
为target进行训练,隐含层(hidden neurons)用5个,MSE相当低,R^2基本接近1,如下图,然后我们生成函数,待会直接输入测试数据1和测试数据2的长和宽即可。
3.3、测试数据1结果对比
如下图,看总体趋势都还比较好,但MLR的MSE远远大于ANN的,注意这里的MSE没有进行数据标准化计算,所以我们看到虽然MLR的MSE那么大,但是预测结果是可以的;而ANN的拟合结果很明显更好。
3.4、测试数据2结果对比
这里就能看出区别了,虽然MLR的趋势跟真实值差不太多(R^2挺高的),但是误差太大了(MSE要比ANN的拟合结果大3个数量级),相比而言,ANN表现就非常好了,他好像聪明地观察到了面积=长*宽这个规律,因为恰巧我们的输入变量是符合这个规律的,他才有机会学得到,而那个用多元线性回归的研究人员就没那么幸运了。假如我们的输入变量里没有长或者宽会是怎么样呢?还能得到如此好的预测结果吗,看第二部分"线性回归(LR)与ANN--无模式"
二、线性回归(LR)与ANN--无模式
我们同样用数学上类似的数据,只不过这次我们用周长和矩形面积,假如一个研究人员不知道矩形面积与周长关系,他观察周长越大面积就越大,于是以线性拟合去找他们之间的关系,然后我们看下结果。
1、数据介绍
数据分为三组,即原始数据、测试数据1和测试数据2,如下图:
1)原始数据为area
和perimeter
,用来做LR公式和作为ANN的训练数据, perimeter
的数据范围为 4-400(因为是用上面的数据范围皆为 1-100的length
和wide
产生的)。
2)测试数据1为test_area
和 test_perimeter
,用来带入上面LR公式和ANN训练函数,检验效果如何。这里的test_perimeter
的数据范围和上面的一样在4-400之间。
3)测试数据1为test_area_2
和 test_perimeter_2
,同样用来检验效果,只是数据在原始数据范围外,即400-800之间(用上面的test_length_2
和 test_wide_2
产生的)。
2、结果评估
同样用MSE和R^2
3、结果
3.1、得到线性拟合公式
如图,看起来也还不错
3.2、得到ANN训练函数
采用前馈神经网络,以perimeter
为输入,area
为target进行训练,隐含层(hidden neurons)用5个,训练结果如图,MSE这次挺高了,注意MSE是平方了的(所以标准的ANN做法是先把数据标准化),看下面的残差直方图更直观一些,area
的平均值才2400左右,残差最高到了1000多,R^2还不错,然后我们生成函数,待会直接输入测试数据1和测试数据2的周长即可。
3.3、测试数据1结果对比
这个因为测试数据与原始数据的输入在一个范围内,所以看起来都还可以,趋势基本完全吻合,看MSE和R^2,似乎ANN略胜一筹。
3.4、测试数据2结果对比
如图,线性回归(LR)和ANN拟合的都不太好,MSE基本在同一个水平,ANN的略低一些,但是LR的趋势似乎跟真实值更吻合一些。
在这里ANN好像学不到我们用随机数得到的周长跟面积的关系,因为周长跟面积本来就没有什么模式可言,对于没有模式的东西,ANN似乎无能为力,但是他能在力所能及的范围内给你预测,就像上面的测试数据1的结果还是可以的,因为训练的数据与测试的数据范围是一致的,而在数据范围一致的情况下,用LR效果也看似很好。然而我们不要忘了,周长与面积是并没有线性关系的。
三、MLR与ANN--混合输入
紧接着,如果我们不知道面积与长、宽和周长这三者的关系,把这三个变量都输进去,然后再用MLR和ANN的方法,当然因为周长 = (长+宽)*2,所以MLR的方法肯定有一个参数为0。测试数据直接选用原始数据外的,因为我们知道在原始数据范围内的拟合结果肯定都还可以接受,直接看结果,如图,ANN表现良好,MLR还是不行。
同样我们只输入长和周长这两个变量呢,结果是一致的,ANN拟合很好,MLR很差(MLR结果跟上面的一模一样的,因为长、宽和周长三个变量间存在线性关系的)。