我們前面講完的simple linear regression之後,我們就往更高維度的方向走。
基本上,像前面的線性代數解其實很容易擴展到高維去。
他不過是把方程式的變量變多,然後在矩陣的表示法上面是完全一樣的,所以像這樣容易擴展又有相同公式解的就是很優雅的解法。
gradient descent在演算法上也不需要修改太多,只需要擴展變量的數目即可,不過他仍舊是要一步一步走到最低點。
這個特點讓他在一些線性代數無法處理的情況下凸顯出來,有些時候我們的loss function是沒辦法有這麼漂亮的線性代數解的,那就會碰到像是一座座山丘中間隔著山谷,幸運的話,我們可以用gradient descent找到最佳解。
那linear regression在使用上需要注意一些地方:
那為什麼會受到極端值影響哩?主要是來自於linear regression的假設,linear regression裏面偷偷假設了在計算y變項的誤差的時候用的是平均值,平均值是個容易受到極端值影響的統計量,所以當極端值出現的時候就容易被拉走。
有沒有辦法解決阿?實際上有拉!但是有點難就是了,解法就是去把底下的平均值抽換成其他不容易受極端值影響的統計量,例如中位數,這類統計叫作robust statistics,而linear regression的替代方案呢就是robust regression。
你可能覺得"我什麼時候假設了計算y變項的誤差的時候用的是平均值?"。沒錯,在使用linear regression的時候的確做了這個假設!這個假設就藏在least square method裏面!也就是說,當你使用了least square method去計算誤差的時候就已經假設了你的誤差是常態分佈,而且用平均值來做估計,所以robust regression就使用了不同的方法來處理他,他用的是least absolute deviations,也就是不用平方項,而是用絕對值的方法。
可是放了絕對值之後,就不能微分了!所以graient descent就不能用了!線性代數解也沒辦法解,看來還是乖乖把outlier踢掉比較輕鬆。
以上是1973年Francis Anscombe先生造出來的資料,這些資料拿去做linear regression之後,相關係數都達到0.816,如果只看相關性的話會讓人誤以為資料匹配的很好,但其實不然。
「這個特點讓他在一些線性代數無法處理的情況下凸顯出來,有些時候我們的loss function是沒辦法有這麼漂亮的線性代數解的,那就會碰到像是一座座山丘中間隔著山谷,幸運的話,我們可以用gradient descent找到最佳解。」
=> 這邊針對的情況是像什麼? 像是 loss function 不是 ||y-Xw||^2 的情況嗎?
這邊的確是用linear regression的話一定是最佳解而且都相同,我指的特殊狀況像是deep learning的模型,他的loss function就會像
這時候大家就會用其他方法讓訓練的時候,有機會讓gradient descent跳到其他地方去。
我剛剛想了一下,linear regression 的 Loss function 不一定是 ||y-Xw||^2 吧?如果採用其他的 Loss function,應該也可能會沒有代數解?
通常講的linear regression就是線性模型+least square。
當然你想把loss function換掉也是可以,但是那就變成別種regression了,像上面提到的robust regression就是把他換成least absolute deviation。
換成別種loss function的確不保證有代數解XD
喔喔,懂了,所以 linear regression 就是 least square 的 loss funtion。如果是用其他 loss funtion 變形的 regression 就有可能存在你講的這種情況(「這個特點...略」)。
感謝!
這篇文章有談論到類似的觀念喔
這篇文章有談論到類似的觀念喔
"確認資料的分佈型態也是線性",是指 Data engineer/scientist 要在 scatter plot 中自行判斷,去掉 outlier,或是有相關工具來協助判斷? 謝謝。
是的!通常data scientist需要用一些資料視覺化或是降維方式來觀察資料,透過觀察之後才能有把握是用的model是正確的,但是除了眼見為憑以外,也需要考慮可能有資料沒蒐集到的pattern存在,別讓腦袋overfitting了!
的確,資料科學家除了這些必要的技術、算法外,經驗也是蠻重要的。謝啦!