標籤:

機器學習筆記005 | 更加接近現實情況的預測

1 多特徵數據處理

之前我們提到,可以根據房子的面積和房子的價格的訓練數據,來構建一個預測函數:

但現實中的情況是,我們對於房子可能不僅僅考慮面積大小這一方面,還要考慮到房子的房間數、所在樓層、房齡等等數據。所以,我們就會有這樣的一個訓練數據構成的表格:

由於之前使用m代表了訓練數據的規模,就是上圖中一共五行,也就是說 m = 5,我們用n代表房子特徵的數量,例如這裡有面積、房間數、樓層數、房齡一共4個,所以n = 4。

1.1 預測函數

這是我們原來的預測函數:hθ(x) = θ0 + θ1x

隨著房子特徵的增加,已經不能滿足我們的要求了,所以對於這樣的預測函數,我們需要做一個擴展:

hθ(x)=θ0+θ1x1+θ2x2+θ3x3+?+θnxn

為了方便計算,我們設置 x0 = 1,也就是說,這個等式可以換成:

hθ(x)=θ0x0+θ1x1+θ2x2+θ3x3+?+θnxn

如果把它們構造成向量,那就是:

因為下標是從0開始,所以這裡一共有n+1個參數和特徵。

如果看過之前的文章《矩陣和向量,提升效率的數學工具》,應該就能明白:

也就是說,我們也可以將預測函數寫成:hθ(x) = θTx

其中θT為θ的轉置矩陣。

1.2 代價函數

同樣,代價函數也變為:

由於θ代表著θ0,θ1,θ2,…,θn,所以又可以寫成:

這裡x(i)和y(i)的上標是指第i個訓練數據,為了和樣本特徵的下標索引進行區分,並不是x的i次方或者y的i次方。

1.3 梯度下降演算法

所以,在梯度下降演算法中,需要重複執行的步驟就是:

根據之前求導的過程,也可以得到:

再次說明,其中m為訓練數據集的大小,n為數據特徵的數量。

所以,對於每一個數據特徵,其實是:

2 多特徵數據所引出的問題和解決方法

數據具備多個特徵,那其實存在一點問題,那就是這些特徵很有可能範圍差異巨大。

就拿前面這個表格來說:

面積的數據範圍是在50到80之間,而房間數的數據範圍是在2到3之間。

這樣有一個什麼樣的結果呢?

在使用梯度下降演算法進行計算的時候,收斂的速度會非常慢,換句話來說就是想要找到使得代價函數J(θ)最小的參數,需要相當長的時間。

解決方式有兩種,分別是特徵縮放(Feature Scaling)均值歸一(Mean Normalization)

所謂的特徵縮放,就是將特徵的數據除以特徵的最大值,例如上面房子的特徵,經過縮放之後結果就是:

所謂的均值歸一,就是將特徵數據xi減去特徵平均值μi,然後再除以特徵範圍si(特徵最大值-特徵最小值),得到這樣的公式:

還是之前的數據,我們可以得到這樣的表格:

例如這裡,第一個訓練數據的第一個特徵,計算的過程如下:

經過這樣的處理,特徵數據的範圍就是 -1 ≤ xi ≤ 1,這樣就能提高梯度下降演算法收斂的速度了。

文章提前發布在公眾號:止一之路


推薦閱讀:

基於NLP的股價預測
為什麼我們需要傳統方法?
Cousera deeplearning.ai筆記 — 淺層神經網路(Shallow neural network)
【翻譯】Brian2高級指導_外部代碼交互
Training/Validation/Test Dataset

TAG:機器學習 |