頭條上公式格式會有問題,可以參考原文鏈接:https://www.cnblogs.com/lky-learning/p/10424560.html 1 多維特征在之前的內(nèi)容中,只探討了單一特征的回歸模型,也就是 m 個樣本實例中,每個樣本實例 x 只有一個特征,比如房價預(yù)測中的 m 個樣本中,每個樣本只有“房間尺寸”這一個特征。 在實際情況中,更多的是涉及到多維特征模型,比如影響房價的因素(即特征)除了房間尺寸外,還有房間數(shù)、樓層等等。這時就需要引入多維特征。 多維特征:在 m 個樣本實例中,每個樣本實例 x 都有 n 個特征。注釋表示為:x j(i),代表特征矩陣中的第 i 行的第 j 個特征,也就是第 i 個訓練實例的第 j 個特征。 支持多變量的假設(shè)函數(shù) h 可以表示為:hθ(x) = θ0x0+θ1x1+θ2x2+...+θnxn ,其中 x0 為人為引入,x0 = 1。此時模型中的參數(shù) θ 是一個 n+1 維的向量,任何一個訓練實例也都是 n+1 維的向量,特征矩陣X的維度是 m*( n+1 )。 因此公式可以簡化為:hθ(x) = θTX,其中上標T代表矩陣轉(zhuǎn)置。 2 多元梯度下降法與單變量線性回歸類似,在多變量線性回歸中,我們也構(gòu)建一個代價函數(shù),則這個代價函數(shù)是所有建模誤差的平方和,即: 接下來就是要通過梯度下降的方法來使得代價函數(shù)最?。?/p> 公式中的 ( hθ(x(i)) - y(i) ) * xj(i) 是代價函數(shù) J(θ) 對 θ 的導數(shù)。 matlab代碼示例: theta = theta - alpha * ( 1 / m ) * X' * ( ( theta' * X' )' - y ) 其中X:( m , n + 1 ) ,theta:( n + 1 , 1 ) ,y:( m , 1 ) ,m 代表樣本數(shù),n代表特征數(shù)。 3 (歸一化)特征縮放在我們面對多維特征問題的時候,我們要保證這些特征都具有相近的尺度,這將幫助梯度下降算法更快地收斂。 歸一化(特征縮放)的優(yōu)點: (1)歸一化后加快了梯度下降求最優(yōu)解的速度。 (2)歸一化有可能提高精度(歸一化是讓不同維度之間的特征在數(shù)值上有一定的比較性)。 下圖能更清晰的體現(xiàn)歸一化和未歸一化時最優(yōu)解尋解過程的區(qū)別: 未歸一化: 歸一化: 從上面可以看出,數(shù)據(jù)歸一化后,最優(yōu)解的尋優(yōu)過程明顯會變得平緩,更容易正確的收斂到最優(yōu)解。 兩種歸一化的方法: (1)min-max標準化 定義:也稱為離差標準化,是對原始數(shù)據(jù)的線性變換,使得結(jié)果映射到0-1之間。 本質(zhì):把數(shù)變?yōu)椤?,1】之間的小數(shù)。 轉(zhuǎn)換函數(shù):(X-Min)/(Max-Min) 如果想要將數(shù)據(jù)映射到-1,1,則將公式換成:(X-Mean)/(Max-Min) 其中:max為樣本數(shù)據(jù)的最大值,min為樣本數(shù)據(jù)的最小值,Mean表示數(shù)據(jù)的均值。 (2)Z-score(0均值)標準化方法 定義:這種方法給與原始數(shù)據(jù)的均值(mean)和標準差(standard deviation)進行數(shù)據(jù)的標準化。經(jīng)過處理的數(shù)據(jù)符合標準正態(tài)分布,即均值為0,標準差為1. 本質(zhì):把有量綱表達式變成無量綱表達式。 轉(zhuǎn)換函數(shù):(X-Mean)/(Standard deviation) 其中,Mean為所有樣本數(shù)據(jù)的均值。Standard deviation為所有樣本數(shù)據(jù)的標準差。 4 學習率梯度下降算法收斂所需要的迭代次數(shù)根據(jù)模型的不同而不同,我們不能提前預(yù)知,我們可以繪制迭代次數(shù)和代價函數(shù)的圖表來觀測算法在何時趨于收斂。 梯度下降算法的每次迭代受到學習率的影響,如果學習率 過小,則達到收斂所需的迭代次數(shù)會非常高;如果學習率 過大,每次迭代可能不會減小代價函數(shù),可能會越過局部最小值導致無法收斂。 藍色線正確的情況,綠色和黑色為錯誤的情況(一般需要使用更小的學習率 ) 通常可以考慮嘗試些學習率: = 0.01,0.03,0.1,0.3,1,3,10 5 特征和多項式回歸如下圖所示,線性回歸并不適用于所有數(shù)據(jù),有時我們需要曲線來適應(yīng)我們的數(shù)據(jù),比如一個二次方模型 h(x) = 0 + 1x1 + 2x22 或者三次方模型。 如果假設(shè)中出現(xiàn)了高階項,那么這個模型還是線性模型嗎? 如果把假設(shè)函數(shù)看成是特征 x 的方程,那么該方程就是非線性方程;如果看出是參數(shù) 的方程,那么 x 的高階項都可以認為是 的參數(shù)。很明顯,在線性回歸中采用了后一種的解釋方式。 6 正規(guī)方程區(qū)別于利用迭代的方式求解最優(yōu)解,正規(guī)方程是求解下面的方程來找出使得代價函數(shù)最小的參數(shù): 假設(shè)我們的訓練集特征矩陣為 X(包含了 x0 = 1)并且我們的訓練集結(jié)果為向量 y,則利用正規(guī)方程解出向量 = ( XT X )?1 XT y 。 推導過程如下: matlab程序: pinv ( X' * X ) * X' * y python程序: 梯度下降與正規(guī)方程的比較: 7 正規(guī)方程在矩陣不可逆情況下的解決辦法利用正規(guī)方程解出向量 = ( XT X )?1 XT y 時,如果 XT X 不可逆,該如何處理呢? 首先不可逆的情況非常少見,當矩陣的特征是線性相關(guān),以及特征遠遠大于樣本數(shù)量(m < n)時會出現(xiàn)不可逆的情況。 在matlab中有兩個函數(shù)可以求解矩陣的逆,一個是 pin() 函數(shù),一個是 inv() 函數(shù)。前者是所謂的偽逆,后者是逆。使用 pinv() 函數(shù)可以展現(xiàn)數(shù)學上的過程,即便矩陣 X'X 是不可逆的,也將計算出 的值。 |
|
來自: 昵稱32937624 > 《待分類》