回歸
通常對于一組特征數(shù)據(jù)和其標(biāo)記值:,在使用特征值對進(jìn)行預(yù)測時授霸,根據(jù)習(xí)慣,如果是連續(xù)的际插,則稱這種操作或者技術(shù)為回歸碘耳;如果是離散的,則通常稱為分類框弛。
線性回歸
以根據(jù)房屋的屬性來預(yù)測價格為例辛辨,假設(shè)房屋的價格與房屋的面積和居室的數(shù)目有關(guān),如下表所示;
Living area() | bedrooms | Prices |
---|---|---|
2104 | 3 | 400 |
1600 | 3 | 330 |
2400 | 3 | 369 |
1416 | 2 | 232 |
3000 | 4 | 540 |
把房屋的面積記為特征斗搞,把居室的數(shù)目記為特征指攒,價格記為。我們猜測和之間僻焚,滿足關(guān)系:
因此我們可以建立模型:
我們也可以把上式寫成向量的形式
其中允悦,是參數(shù),是我們的訓(xùn)練數(shù)據(jù)和檢測數(shù)據(jù)中的特征值溅呢。實際上,是未知量猿挚,我們的目標(biāo)就是通過訓(xùn)練數(shù)據(jù)調(diào)整咐旧,來使得輸出的結(jié)果更接近真實值。
在將訓(xùn)練的數(shù)據(jù)中的代入绩蜻,都會得到一個輸出铣墨,這個值和真實的之間會存在一個隨機(jī)的誤差:
我們假定所有的房屋都是獨立的,我們可以認(rèn)為办绝,誤差的存在可能是房屋中的價格還會受到一些其他的因素的影響伊约,而這些因素在建模的過程中沒有體現(xiàn),這些細(xì)枝末節(jié)可能使得房屋的價格有一些震蕩孕蝉。如果把這些因素看成隨機(jī)變量屡律,當(dāng)足夠多的隨機(jī)變量疊加之后,根據(jù)中心極限定理降淮,形成的分布就是正態(tài)分布超埋。因此:
誤差是獨立同分布的,服從均值為0佳鳖,方差為某定值的高斯分布霍殴。
我們做一些推導(dǎo):
根據(jù)高斯分布:
將用訓(xùn)練數(shù)據(jù)替換:
因為我們認(rèn)為這些數(shù)據(jù)是獨立同分布的,因此所有的訓(xùn)練數(shù)據(jù)的聯(lián)合概率就是各自的邊緣概率的乘積系吩,得到似然函數(shù):
為了簡化計算来庭,我們對取對數(shù),得到對數(shù)似然函數(shù):
當(dāng)我們使用極大似然估計的方法穿挨,則取最大值的時候月弛,去掉式子中的定值部分,就是
取最小值科盛,這就是最小二乘法的目標(biāo)函數(shù)尊搬。
求解的解析式
將M個N維的樣本組成矩陣X:
- X的每一行對應(yīng)一個樣本,共有M個樣本
- X的每一列對應(yīng)樣本的一個維度土涝,共N維
- 還有一個額外的常數(shù)項佛寿,全為1
目標(biāo)函數(shù):
求梯度:
其中用到了線性代數(shù)的公式:
- ;;
- 冀泻;對于對稱方陣A常侣,;
求駐點:令
如果不可逆或者防止過擬合弹渔,可以加入擾動:
加入復(fù)雜度懲罰因子
有時胳施,當(dāng)我們認(rèn)為不僅和有關(guān)系,還可能和有關(guān)系時肢专,我們也可以在上面的式子中加入這些項舞肆。例如,考慮二階的情況博杖,上面的目標(biāo)函數(shù)會更改為:
而且椿胯,在處理的過程中,通常會把也當(dāng)作相互獨立的隨機(jī)變量處理剃根。以此類推哩盲,我們也可以加入等。實際上狈醉,以我個人的理解廉油,線性回歸中,線性指的其實是死參數(shù)的線性苗傅。
假設(shè)現(xiàn)在有九個點抒线,那么我們就一定可以用一個最高次不超過8次的表達(dá)式去擬合它。
隨機(jī)產(chǎn)生九個點渣慕,然后進(jìn)行實驗十兢,得到了如下結(jié)果:
系數(shù)如下:
可以看到,雖然8階的曲線可以完美地通過所有的點摇庙,但是8的曲線的參數(shù)值都很大旱物,也就很不穩(wěn)定。而且從曲線圖中很容易就可以看出卫袒,8階的曲線雖然完美的通過了所有的點宵呛,但是并不能很好地反映九個點的分布。這里就存在過擬合夕凝。為了放著這種現(xiàn)象的發(fā)生宝穗,一種通常的做法是,在式子中加入一個懲罰因子码秉,來限制參數(shù)大写:
其中是一個可調(diào)的參數(shù)。
這種操作稱為正則化转砖,因為我們用的是的平方求和须鼎,因此稱為L2正則化鲸伴。如果是的絕對值求和,則稱為L1正則化:
在Elastic Net中將兩種正則化整合:
梯度下降算法(gradient descent)
在實際的應(yīng)用中晋控,并不是所有的情況下都會有最優(yōu)解的解析解汞窗,而且也沒有必要去求解析解,有的時候有數(shù)值解就夠了赡译。梯度下降算法就是一種應(yīng)用非常廣泛的求最有參數(shù)數(shù)值解的方法仲吏,步驟如下:
初始化(隨機(jī)初始化)
-
沿著負(fù)梯度的方向迭代,更新后的使更小
就是讓沿著讓下降最快的方向移動蝌焚。求一下梯度方向裹唆;
上面的結(jié)果是對一個樣本求的,實際中的損失函數(shù)是 只洒。因此可以得到:
對梯度加上學(xué)習(xí)率许帐,就可以的到梯度下降的過程:
Repeat until convergence{
??
}
上面的梯度下降算法存在兩個問題,一個是在每一次訓(xùn)練的過程中都要對所有的訓(xùn)練數(shù)據(jù)求一次梯度然后進(jìn)行求和红碑,在訓(xùn)練數(shù)據(jù)量動則上萬甚至上百萬的時候舞吭,這樣的開銷無疑是非常大的泡垃;第二點就是析珊,梯度下降算法并不能保證每次都能找到全局最小值,因為在下降的過程中蔑穴,參數(shù)可能會陷于某個局部極值點而使得梯度為零忠寻。
因此有了隨機(jī)梯度下降算法(stocastic gradient descent, SGD),每次只對一個訓(xùn)練樣本求梯度存和,然后讓參數(shù)值變化一次:
Loop{
??for i = 1 to m {
????
??}
}
這種方式一方面可以減少一定的運算量奕剃,另一方面增加了隨機(jī)性,是的有可能跳出局部最小值捐腿。
應(yīng)用最多的是以上兩種方法的一個折中:mini-batch SGD纵朋,就是將訓(xùn)練數(shù)據(jù)分成很多的batch,然后每次使用一個batch做訓(xùn)練茄袖,這樣既可以規(guī)避梯度下降算法的一些缺陷操软,又不想隨機(jī)梯度下降(SGD)那樣激進(jìn)(隨機(jī)性太大)。實際上宪祥,mini-batch SGD也是用的最多的方法聂薪。
模型的評價
在訓(xùn)練的到一個模型之后,我們就要來評估一個模型蝗羊。其實藏澳,損失函數(shù)本身就可以用來評估一個模型,因為損失函數(shù)表征的就是預(yù)測值和真實值之間的一種誤差耀找,我們抽取出主要部分翔悠,的到:
其中表示預(yù)測值,這個數(shù)值就是通常所說的均方誤差。也可以使用他的算術(shù)平方根:
但是這個數(shù)值的大小與模型和應(yīng)用場景有很大的關(guān)系凉驻,不能建立一套統(tǒng)一的標(biāo)準(zhǔn)腻要。因此就定義了另一個指標(biāo):
其中,TSS就是訓(xùn)練樣本方差的倍涝登,RSS就是殘差的平方和雄家。分析可得具有以下性質(zhì):
- 越大,擬合的效果越好
- 的最優(yōu)值為1胀滚,并且模型的效果很離譜時趟济,可能為負(fù)