在多項式迴歸模型中,我們把整個線性模型改成了非線性模型。但是有的時候, 自變量X和因變量Y之間總的來說是線性關係,只是在局部出現了非線性關係。
比方說你開車從城市A到城市B,總的來說一路上能保持每小時100公里的速度。但出城和進城的時候可能有點堵車,走走停停,造成了一些非線性的關係。這時候,我們就可以使用分步函數(Step function)。
我們可以把X分成若干段,在每一段中擬合線性模型。這時候,我們把連續型變量,變成了類別型變量。
我們來講點理論。我們在c1,c2,…,cK這K個點上X分成K+1段,那麼我們就獲得了
K+1個新的變量,即:
其中,I()叫做指示函數(Indicator function)。如果括號內的條件成立I的值為1,否則I的值就是0。這就是啞變量(Dummy variable)。我們還可以發現,對於X的任意值,都存在以下關係:
也就是說X的值只能在K+1段的某一段上,而不可能在兩段或者更多段上。
注意,接下來是重點!我們可以用最小二乘法擬合以下模型:
(1)
對於任意值X,C1,C2,…, Ck之中,最多只有一個不是0。不過,當X<c1時,(1)式中所有的beta都是0。那麼我們可以把beta0理解為當X<c1時Y的平均值。
同樣,當X介於(c1,c2)之間時,Y的預測值就是beta0+beta1。所以,我們可以認為beta1是X從小於c1到介於(c1,c2)之間時Y預測值的增量。
最後,還要這個方法的問題。不知道大家發現了沒有,這個方法並沒有告訴我們在哪裡劃分c1,c2,…ck。這其實也是分步函數的最大問題。
不過有的時候,這也不是問題。比方說對年齡分段,我們很容易就會想到按照5年或者10年來劃分。事實上,在生物統計和流行病學中,總是按照5年劃分一個階段。
可見,之所以有這麼多的機器學習模型,並不是大家閒來無事,非要編個模型出來。事實上,模型源於生活,而高於生活!