深度學(xué)習(xí)回歸和OLS的對(duì)比

照著R語言和深度學(xué)習(xí)第三章 “3.6預(yù)測(cè)房價(jià):一個(gè)回歸的例子” 做了一遍,用同樣的數(shù)據(jù)又跑了一遍OLS作對(duì)比,算是對(duì)深度學(xué)習(xí)多了點(diǎn)理解。

1. 數(shù)據(jù)

數(shù)據(jù)來自1970年代中期波士頓,內(nèi)生變量是郊區(qū)房屋的價(jià)格中位數(shù),外生變量包括房屋特征、住房所在區(qū)域的特征等13個(gè)變量。書里沒有具體說明數(shù)據(jù)來源,也沒有變量名或者標(biāo)簽,估計(jì)是截面數(shù)據(jù),否則應(yīng)該包括年份變量。訓(xùn)練樣本404個(gè),測(cè)試樣本102個(gè)。

2. 模型設(shè)置

  • 層和網(wǎng)絡(luò)
    • 一共三層
    • 前兩層輸出都是64,使用relu激活
    • 第三層輸出為1,沒有定義激活函數(shù)(即默認(rèn)為線性模型)
  • 優(yōu)化器:rmsprop
  • 損失:均誤方差(MSE,mean squared error,與OLS的目標(biāo)函數(shù)一樣)
  • 監(jiān)控目標(biāo):平均絕對(duì)誤差(MAE,mean absolute error)。監(jiān)控MSE結(jié)果應(yīng)該不會(huì)差很多,選擇MAE大概是為了和內(nèi)生變量單位保持一致,比MSE更容易解釋。

3. 模型訓(xùn)練

  • 因?yàn)槭切颖荆扇×薑折驗(yàn)證(K = 4)
  • 在每輪訓(xùn)練中
    • 迭代次數(shù)為100(epochs = 100)
      • 迭代次數(shù)遠(yuǎn)高于前兩個(gè)例子,大概是因?yàn)闃颖玖刻?/li>
    • 每批樣本為1 (batch_size = 1)
      • 不知道batch_size的設(shè)置原則,以及這里為什么設(shè)置成1,后面的章節(jié)需要注意一下這個(gè)問題
      • 查了一下,batch_size = 1會(huì)影響收斂速度
    • 模型跑下來,四折平均MAE為2.8左右,高于書里的2.38
  • 按照書里將迭代次數(shù)設(shè)為500又跑了一次,花了很多時(shí)間(10分鐘的樣子),遠(yuǎn)高于第三章的前兩個(gè)例子(上萬樣本、張量展開后需要1G 空間)
    • 精確度表現(xiàn)確實(shí)好了一些,但仍然不如書上的數(shù)字
    • MAE最低點(diǎn)的位置跟書上差不多,都在120次迭代出現(xiàn)

4. 測(cè)試

  • epochs = 80, batch_size = 16
  • MAE是3左右,比書里高了0.5,是個(gè)不小的差距
  • 試過epochs = 100/120, batch_size = 4/8,MAE也只降到2.8
  • 降低batch_size特別影響速度

5. OLS模型

為了保持可比性,也是用訓(xùn)練樣本跑的回歸,然后使用回歸系數(shù)對(duì)測(cè)試樣本進(jìn)行預(yù)測(cè),然后計(jì)算MAE,結(jié)果為3.3,就是說精度比深度學(xué)習(xí)方法低了10%。

為了省事,沒有用K折方法,由于K折驗(yàn)證降低樣本量,估計(jì)使用K折或者bootstrap會(huì)進(jìn)一步降低精度。

由于不知道自變量的定義,無法采用更有效的模型,比如傳統(tǒng)的房價(jià)模型會(huì)把某幾個(gè)變量做交叉或者做二次項(xiàng),這類模型會(huì)獲得更高的精度,用這些更好的模型作對(duì)比會(huì)更有意義,畢竟深度學(xué)習(xí)模型是高度非線性的。曾經(jīng)用美國的數(shù)據(jù)跑過,調(diào)一下模型可以使R平方從65%提高到80%,那么把精度再提高10%也許不算難事。

6. 結(jié)論與若干細(xì)節(jié)

  1. 研究問題的影響
    住房市場(chǎng)是很成熟的市場(chǎng),每個(gè)變量的影響在交易過程中已經(jīng)被考慮得很充分,也就是說市場(chǎng)已經(jīng)給每個(gè)變量制定了合理的價(jià)格。這些價(jià)格的形成來自買家與賣家(也許還有中介)的討價(jià)還價(jià)過程,也就是來自人的計(jì)算。人在討價(jià)還價(jià)時(shí)不會(huì)做特別復(fù)雜的計(jì)算,非常可能就是靠大腦中的線性模型計(jì)算,比如100平米的房子比50平米貴兩倍。這種情況下,OLS和深度學(xué)習(xí)取得相同的效果是可以理解的。
    但這不是說深度學(xué)習(xí)是多此一舉,更好的解釋是,如果真實(shí)的模型是線性的,那么深度學(xué)習(xí)這個(gè)黑箱最終給出的也是個(gè)線性模型。對(duì)于更復(fù)雜的市場(chǎng),或許深度學(xué)習(xí)更有優(yōu)勢(shì)。
  2. 樣本量的影響
    即便真實(shí)的世界定價(jià)是非線性的,想從幾百個(gè)樣本當(dāng)中提取復(fù)雜的非線性關(guān)系,恐怕也不容易。
  3. 運(yùn)行速度
    大概是batch_size的影響,深度學(xué)習(xí)跑得很慢,而OLS基本上是一個(gè)命令搞定,回車敲下去,立刻出結(jié)果。再一次,樣本量如果夠大(再大的樣本OLS還是非常快),batch_size設(shè)置大一些,速度可能不再是個(gè)問題,而且還可能獲得OLS抓不到的效應(yīng)。
  4. 對(duì)世界的理解
    OLS可以看到每個(gè)變量的影響,而且還需要我們思考變量是否內(nèi)生,以確定因果關(guān)系。深度學(xué)習(xí)目的卻只在預(yù)測(cè),無法提供對(duì)世界的理解。經(jīng)濟(jì)學(xué)知識(shí)(以及其他社會(huì)科學(xué)知識(shí))和計(jì)量經(jīng)濟(jì)學(xué)方法,對(duì)于理解世界來說,仍然不可缺少。好的深度學(xué)習(xí)模型仍然需要和專業(yè)知識(shí)合作——至少輸入哪些變量、生成哪些新變量還是需要專家來決定吧。
    現(xiàn)在我明白了Susan Athey為什么會(huì)結(jié)論機(jī)器學(xué)習(xí),或者AI,并不能用來揭示因果關(guān)系,只是在模型選擇上提供幫助。
  5. 幾個(gè)細(xì)節(jié)問題
    (1)為了讓模型跑得更快,深度學(xué)習(xí)通常會(huì)把因變量進(jìn)行標(biāo)準(zhǔn)化變換,每個(gè)變量增加1,意味著增加一個(gè)標(biāo)準(zhǔn)差。如果是在OLS當(dāng)中做這種變換,回歸系數(shù)的解釋需要跟著調(diào)整。但深度學(xué)習(xí)并不在意回歸系數(shù),只要因變量不做標(biāo)準(zhǔn)化,預(yù)測(cè)結(jié)果的單位是保持不變的。(當(dāng)然OLS的預(yù)測(cè)也不會(huì)跟著因變量標(biāo)準(zhǔn)化而變化。)
    (2)OLS通常要考慮的內(nèi)生性、樣本選擇等問題,原因是一旦出現(xiàn)上述問題,對(duì)系數(shù)的估計(jì)會(huì)出現(xiàn)不一致——也就是說樣本一旦改變,估計(jì)結(jié)果會(huì)發(fā)生顯著變化。機(jī)器學(xué)習(xí)雖然不考慮這些問題,但通過使用測(cè)試樣本,可以對(duì)估計(jì)結(jié)果一致性做出反應(yīng),也就是說過擬合。或許機(jī)器學(xué)習(xí)方法能夠?yàn)橛?jì)量的結(jié)果提供一些參考,這個(gè)問題就有待計(jì)量經(jīng)濟(jì)學(xué)家去回答了。

Update

(2021.9.23)
TensorFlow for R網(wǎng)站給出了波士頓房價(jià)變量說明,所給的代碼也比書里更詳細(xì),值得讀。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容