重慶營銷型網站建設多少錢如何制作簡單的網頁鏈接
這里寫自定義目錄標題
- 特征縮放
- 標準化
- 歸一化
- 平均值歸一化
- 收斂
- 學習率
特征縮放
特征縮放(Feature scaling)是一種數據預處理技術,它用于將不同尺度的特征值縮放到相同的范圍內,以便更好地應用于機器學習算法中。在不進行特征縮放的情況下,一些特征值可能會因其量級較大而對模型的訓練產生更大的影響,導致模型無法充分學習其他特征值的影響。
幾種常見的特征縮放方法:
-
標準化(Standardization):通過將每個特征值減去其均值,然后除以其標準差,將特征值縮放為以0為中心、標準差為1的正態(tài)分布。
-
歸一化(Normalization):通過將每個特征值縮放到0和1之間的范圍內,使得所有特征值的范圍相同。
-
平均值歸一化(Mean normalization):通過將每個特征值縮放到[-1,1]或[0,1]范圍內,從而使特征值在[-1,1]或[0,1]之間。
e.g.e.g.e.g. 比如 bedrooms 代表臥室的數量,size in feet2^22 代表房間的尺寸。
一般臥室的數量都是個位數十位數,而房間的尺寸卻一般都是百位數千位數,所以為了防止房間的尺寸數量級較大從而使得模型無法充分學習臥室個數的情況;
我們有如下三種方法進行特征縮放:
標準化
標準化(Standardization)又稱為 Z-score normalization,對于一個特征 xxx,其均值為 μ\muμ,標準差為 σ\sigmaσ,則對于每個樣本,xxx 的縮放后的值 yyy 可以通過以下公式計算:
y=x?μσy = \frac {x-\mu} \sigmay=σx?μ?
通過這種方法縮放后的特征值 yyy 的平均值為0,標準差為1;
例如在上述的房間尺寸與臥室數量的案例中:
300≤x1≤2000;x1,scaled=x1?μ1σ10≤x2≤5;x2,scaled=x2?μ2σ2300≤x_1≤2000; x_{1,scaled}=\frac {x_1-\mu_1} {\sigma_1} \\ 0≤x_2≤5; x_{2,scaled}=\frac {x_2-\mu_2} {\sigma_2} 300≤x1?≤2000;x1,scaled?=σ1?x1??μ1??0≤x2?≤5;x2,scaled?=σ2?x2??μ2??
import numpy as np
def zscore_normalize_features(X):mu = np.mean(X, axis=0)sigma = np.std(X, axis=0)X_norm = (X - mu) / sigma return (X_norm, mu, sigma)
通過 Sklearn 實現 Z-Score Normalization
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_norm = scaler.fit_transform(X_train)
歸一化
歸一化(Normalization)又稱為最大值縮放 Max Scaling。具體來說,對于一個特征xxx,其最大值為 maxmaxmax,則對于每個樣本,xxx 的縮放后的值 yyy 可以通過以下公式計算:
y=xmaxy = \frac x {max}y=maxx?
例如在上述的房間尺寸與臥室數量的案例中:
300≤x1≤2000;x1,scaled=x120000≤x2≤5;x2,scaled=x25300≤x_1≤2000; x_{1,scaled}=\frac {x_1} {2000} \\ 0≤x_2≤5; x_{2,scaled}=\frac {x_2} {5} 300≤x1?≤2000;x1,scaled?=2000x1??0≤x2?≤5;x2,scaled?=5x2??
def max_normalize_features(X):x_max = np.max(X) X_norm = X / x_maxreturn X_norm
平均值歸一化
平均值歸一化具體來說,對于一個特征 xxx,其均值為 μ\muμ,最小值為 minminmin,最大值為 maxmaxmax,則對于每個樣本,xxx 的縮放后的值 yyy 可以通過以下公式計算:
y=x?μmax?miny = \frac {x-\mu} {max-min}y=max?minx?μ?
例如在上述的房間尺寸與臥室數量的案例中:
300≤x1≤2000;x1,scaled=x1?μ12000?3000≤x2≤5;x2,scaled=x2?μ25?0300≤x_1≤2000; x_{1,scaled}=\frac {x_1-\mu_1} {2000-300} \\ 0≤x_2≤5; x_{2,scaled}=\frac {x_2-\mu_2} {5-0} 300≤x1?≤2000;x1,scaled?=2000?300x1??μ1??0≤x2?≤5;x2,scaled?=5?0x2??μ2??
def mean_normalize_features(X):mu = np.mean(X, axis=0) x_max = np.max(X)x_min = np.min(X)X_norm = (X - mu) / (m_max - m_min)return X_norm
收斂
收斂(Convergence)通常指的是訓練過程中模型的參數逐漸趨于穩(wěn)定,不再發(fā)生明顯變化的情況。當模型的參數收斂時,其對訓練數據的擬合誤差(training error)也會逐漸降低,直到達到一個較小的閾值或收斂標準。
如下圖所示,一般來說,伴隨著迭代(iterations),應該呈現下圖所示曲線,即損失函數越來越小,直到趨于穩(wěn)定,不再發(fā)生明顯變化;
損失函數在迭代100次時,下降的速度還是很快的;
在迭代200次的時候,損失值下降的速度明顯變慢;
在迭代300次的時候,每次迭代損失值下降的已經很小很小了;
在迭代400次的時候,幾乎看不到變化,趨于穩(wěn)定,此時我們稱之為 converged,即收斂了。
而如果出現損失值變大的情況,則可能是學習率 α\alphaα 設置的有問題,下面我們將學習了解學習率的概念;
學習率
學習率(learning rate)是梯度下降算法中的一個重要超參數,用于控制每一次參數更新的步長大小。在梯度下降算法中,每一次迭代都需要計算損失函數的梯度,然后按照一定的步長沿著梯度方向更新模型參數。
學習率決定了每次更新的步長大小:
如果學習率過大,會導致參數在梯度方向上 “跳躍” 太大而無法收斂;
如果學習率過小,會導致參數更新緩慢,耗費較長的時間才能達到最優(yōu)解。
學習率的選擇是一個經驗性的問題,需要根據具體問題和數據集的特征來進行調整。一般來說,可以從較小的學習率(比如 α\alphaα = 0.001)開始,觀察損失函數的收斂情況和模型的性能,然后逐步調整學習率的大小,直到達到最佳的性能和收斂速度。
在梯度下降算法中,有三種不同的學習率策略可供選擇:
- 固定學習率:使用固定的學習率,不隨著迭代次數的增加而改變。
- 動態(tài)學習率:根據迭代次數或其他規(guī)則來動態(tài)調整學習率。
- 自適應學習率:根據梯度的大小來自適應地調整學習率,常見的方法包括Adagrad、Adam等。
對于初學者而言,無需參與到動態(tài)學習率 與 自適應學習率的討論中,嘗試固定學習率,以 0.001 與 0.01 多做嘗試即可。