機器學習筆記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:機器學習 |