1. 程式人生 > >(一)線性迴歸與特徵歸一化(feature scaling)

(一)線性迴歸與特徵歸一化(feature scaling)

吳恩達機器學習視訊

https://study.163.com/course/courseMain.htm?courseId=1004570029

 

線性迴歸是一種迴歸分析技術,迴歸分析本質上就是一個函式估計的問題(函式估計包括引數估計和非引數估計),就是找出因變數和自變數之間的因果關係。迴歸分析的因變數是應該是連續變數,若因變數為離散變數,則問題轉化為分類問題,迴歸分析是一個有監督學習問題。

線性其實就是一系列一次特徵的線性組合,在二維空間中是一條直線,在三維空間中是一個平面,然後推廣到n維空間,可以理解維廣義線性吧。

例如對房屋的價格預測,首先提取特徵,特徵的選取會影響模型的精度,比如房屋的高度與房屋的面積,毫無疑問面積是影響房價的重要因素,二高度基本與房價不相關

下圖中挑選了 面積、我是數量、層數、建成時間四個特徵,然後選取了一些train Set{x(i) , y(i)}。

 有了這些資料之後就是進行訓練,下面附一張有監督學習的示意圖

Train Set 根據 學習演算法得到模型h,對New Data x,直接用模型即可得到預測值y,本例中即可得到房屋大小,其實本質上就是根據歷史資料來發現規律,事情總是偏向於向歷史發生過次數多的方向發展。

下面就是計算模型了,才去的措施是經驗風險最小化,即我們訓練模型的宗旨是,模型訓練資料上產生結果, 要與實際的y(i)越接近越好(假定x0 =1),定義損失函式J(θ)如下,即我們需要損失函式越小越好,本方法定義的J(θ)在最優化理論中稱為凸(Convex)函式,即全域性只有一個最優解,然後通過梯度下降演算法找到最優解即可,梯度下降的形式已經給出。

 

 

梯度下降的具體形式:關於梯度下降的細節,請參閱 梯度下降詳解

區域性加權迴歸

有時候樣本的波動很明顯,可以採用區域性加權迴歸,如下圖,紅色的線為區域性加權迴歸的結果,藍色的線為普通的多項式迴歸的結果。藍色的線有一些欠擬合了。

區域性加權迴歸的方法如下,首先看線性或多項式迴歸的損失函式“

很明顯,區域性加權迴歸在每一次預測新樣本時都會重新確定引數,以達到更好的預測效果。當資料規模比較大的時候計算量很大,學習效率很低。並且區域性加權迴歸也不是一定就是避免underfitting,因為那些波動的樣本可能是異常值或者資料噪聲。

 

在求解線性迴歸的模型時,有兩個需要注意的問題

一就是特徵組合問題,比如房子的長和寬作為兩個特徵參與模型的構造,不如把其相乘得到面積然後作為一個特徵來進行求解,這樣在特徵選擇上就做了減少維度的工作。

二就是特徵歸一化(Feature Scaling),這也是許多機器學習模型都需要注意的問題。

有些模型在各個維度進行不均勻伸縮後,最優解與原來不等價,例如SVM。對於這樣的模型,除非本來各維資料的分佈範圍就比較接近,否則必須進行標準化,以免模型引數被分佈範圍較大或較小的資料dominate。

有些模型在各個維度進行不均勻伸縮後,最優解與原來等價,例如logistic regression。對於這樣的模型,是否標準化理論上不會改變最優解。但是,由於實際求解往往使用迭代演算法,如果目標函式的形狀太“扁”,迭代演算法可能收斂得很慢甚至不收斂。所以對於具有伸縮不變性的模型,最好也進行資料標準化。

歸一化後有兩個好處:

1. 提升模型的收斂速度

如下圖,x1的取值為0-2000,而x2的取值為1-5,假如只有這兩個特徵,對其進行優化時,會得到一個窄長的橢圓形,導致在梯度下降時,梯度的方向為垂直等高線的方向而走之字形路線,這樣會使迭代很慢,相比之下,右圖的迭代就會很快

 


2.提升模型的精度

歸一化的另一好處是提高精度,這在涉及到一些距離計算的演算法時效果顯著,比如演算法要計算歐氏距離,上圖中x2的取值範圍比較小,涉及到距離計算時其對結果的影響遠比x1帶來的小,所以這就會造成精度的損失。所以歸一化很有必要,他可以讓各個特徵對結果做出的貢獻相同。

下邊是常用歸一化方法

1). 線性歸一化,線性歸一化會把輸入資料都轉換到[0 1]的範圍,公式如下

該方法實現對原始資料的等比例縮放,其中Xnorm為歸一化後的資料,X為原始資料,Xmax、Xmin分別為原始資料集的最大值和最小值。

2). 0均值標準化,0均值歸一化方法將原始資料集歸一化為均值為0、方差1的資料集,歸一化公式如下:

其中,μ、σ分別為原始資料集的均值和方法。該種歸一化方式要求原始資料的分佈可以近似為高斯分佈,否則歸一化的效果會變得很糟糕。

關於歸一化方法的選擇

1) 在分類、聚類演算法中,需要使用距離來度量相似性的時候、或者使用PCA技術進行降維的時候,第二種方法(Z-score standardization)表現更好。


2) 在不涉及距離度量、協方差計算、資料不符合正太分佈的時候,可以使用第一種方法或其他歸一化方法。比如影象處理中,將RGB影象轉換為灰度影象後將其值限定在[0 255]的範圍。

選擇方法是參考自http://blog.csdn.net/zbc1090549839/article/details/44103801,至於為什麼,我現在也還不清楚

線性迴歸,我用java實現的,原始碼地址 https://github.com/ooon/toylib

 

參考文獻:

http://www.cnblogs.com/LBSer/p/4440590.html

NG講義2012版