柚子快報邀請碼778899分享:回歸 人工智能 機器學(xué)習(xí)
柚子快報邀請碼778899分享:回歸 人工智能 機器學(xué)習(xí)
機器學(xué)習(xí)中的回歸算法用于預(yù)測連續(xù)數(shù)值輸出(目標(biāo)變量),通過學(xué)習(xí)輸入特征(自變量)與目標(biāo)變量之間的關(guān)系。以下詳細(xì)介紹幾種常見的回歸算法及其工作原理,并提供相應(yīng)的代碼示例。
1. 線性回歸(Linear Regression)
1.1 簡介
線性回歸是最簡單、最常用的回歸算法之一,假設(shè)目標(biāo)變量 ( y ) 與輸入特征 ( X ) 之間存在線性關(guān)系。
y
=
w
T
X
+
b
y = \mathbf{w}^T \mathbf{X} + b
y=wTX+b
其中,w 是權(quán)重向量,( b ) 是偏置項。
1.2 工作原理
線性回歸通過最小化均方誤差(MSE)來找到最佳擬合線。
MSE
=
1
n
∑
i
=
1
n
(
y
i
?
(
w
T
X
i
+
b
)
)
2
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\mathbf{w}^T \mathbf{X}_i + b))^2
MSE=n1?i=1∑n?(yi??(wTXi?+b))2
1.3 代碼示例
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression
# 生成數(shù)據(jù)
X, y = make_regression(n_samples=100, n_features=1, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建并訓(xùn)練模型
model = LinearRegression()
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
2. 多項式回歸(Polynomial Regression)
2.1 簡介
多項式回歸擴(kuò)展了線性回歸,通過引入多項式特征來擬合非線性關(guān)系。
y
=
w
0
+
w
1
x
+
w
2
x
2
+
…
+
w
d
x
d
y = w_0 + w_1 x + w_2 x^2 + \ldots + w_d x^d
y=w0?+w1?x+w2?x2+…+wd?xd
2.2 工作原理
通過將輸入特征擴(kuò)展到多項式特征空間,然后應(yīng)用線性回歸來找到最佳擬合曲線。
2.3 代碼示例
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
# 生成數(shù)據(jù)
X, y = make_regression(n_samples=100, n_features=1, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建并訓(xùn)練多項式回歸模型
poly = PolynomialFeatures(degree=2)
model = make_pipeline(poly, LinearRegression())
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
3. 嶺回歸(Ridge Regression)
3.1 簡介
嶺回歸是線性回歸的擴(kuò)展,加入了L2正則化項來防止過擬合。
J
(
w
)
=
1
n
∑
i
=
1
n
(
y
i
?
(
w
T
X
i
+
b
)
)
2
+
λ
∑
j
=
1
p
w
j
2
J(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\mathbf{w}^T \mathbf{X}_i + b))^2 + \lambda \sum_{j=1}^{p} w_j^2
J(w)=n1?i=1∑n?(yi??(wTXi?+b))2+λj=1∑p?wj2?
3.2 工作原理
通過引入L2正則化項,懲罰大權(quán)重,從而防止模型對訓(xùn)練數(shù)據(jù)過度擬合。
3.3 代碼示例
from sklearn.linear_model import Ridge
# 創(chuàng)建并訓(xùn)練嶺回歸模型
model = Ridge(alpha=1.0)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
4. 套索回歸(Lasso Regression)
4.1 簡介
套索回歸(Lasso)是線性回歸的另一擴(kuò)展,加入了L1正則化項,能夠產(chǎn)生稀疏模型(即部分系數(shù)為零)。
J
(
w
)
=
1
n
∑
i
=
1
n
(
y
i
?
(
w
T
X
i
+
b
)
)
2
+
λ
∑
j
=
1
p
∣
w
j
∣
J(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\mathbf{w}^T \mathbf{X}_i + b))^2 + \lambda \sum_{j=1}^{p} |w_j|
J(w)=n1?i=1∑n?(yi??(wTXi?+b))2+λj=1∑p?∣wj?∣
4.2 工作原理
通過引入L1正則化項,懲罰系數(shù)的絕對值,從而推動部分系數(shù)變?yōu)榱悖喕P汀?/p>
4.3 代碼示例
from sklearn.linear_model import Lasso
# 創(chuàng)建并訓(xùn)練套索回歸模型
model = Lasso(alpha=0.1)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
5. 彈性網(wǎng)絡(luò)回歸(Elastic Net Regression)
5.1 簡介
彈性網(wǎng)絡(luò)回歸結(jié)合了L1和L2正則化項,具有嶺回歸和套索回歸的優(yōu)點。
J
(
w
)
=
1
n
∑
i
=
1
n
(
y
i
?
(
w
T
X
i
+
b
)
)
2
+
λ
1
∑
j
=
1
p
∣
w
j
∣
+
λ
2
∑
j
=
1
p
w
j
2
J(\mathbf{w}) = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\mathbf{w}^T \mathbf{X}_i + b))^2 + \lambda_1 \sum_{j=1}^{p} |w_j| + \lambda_2 \sum_{j=1}^{p} w_j^2
J(w)=n1?i=1∑n?(yi??(wTXi?+b))2+λ1?j=1∑p?∣wj?∣+λ2?j=1∑p?wj2?
5.2 工作原理
通過同時使用L1和L2正則化項,既能產(chǎn)生稀疏模型,又能穩(wěn)定模型參數(shù)。
5.3 代碼示例
from sklearn.linear_model import ElasticNet
# 創(chuàng)建并訓(xùn)練彈性網(wǎng)絡(luò)回歸模型
model = ElasticNet(alpha=0.1, l1_ratio=0.5)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Coefficients: {model.coef_}")
print(f"Intercept: {model.intercept_}")
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
6. 決策樹回歸(Decision Tree Regression)
6.1 簡介
決策樹回歸使用樹結(jié)構(gòu)對數(shù)據(jù)進(jìn)行劃分,每個葉子節(jié)點表示目標(biāo)變量的預(yù)測值。
6.2 工作原理
通過遞歸地將數(shù)據(jù)集分成更小的子集,決策樹找到能夠最小化均方誤差的分裂點。
6.3 代碼示例
from sklearn.tree import DecisionTreeRegressor
# 創(chuàng)建并訓(xùn)練決策樹回歸模型
model = DecisionTreeRegressor(max_depth=5)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
7. 隨機森林回歸(Random Forest Regression)
7.1 簡介
隨機森林回歸使用多個決策樹的集合進(jìn)行預(yù)測,通過平均所有樹的預(yù)測結(jié)果提高模型的穩(wěn)定性和準(zhǔn)確性。
7.2 工作原理
通過引入隨機性,生成多個不同的決策樹,減少單一決策樹的過擬合風(fēng)險。
7.3 代碼示例
from sklearn.ensemble import RandomForestRegressor
# 創(chuàng)建并訓(xùn)練隨機森林回歸模型
model = RandomForestRegressor(n_estimators=100, max_depth=5, random_state=42)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
當(dāng)然,繼續(xù)介紹支持向量回歸(Support Vector Regression, SVR)的詳細(xì)內(nèi)容及其代碼示例。
8. 支持向量回歸(Support Vector Regression, SVR)
8.1 簡介
支持向量回歸(SVR)是支持向量機(SVM)的回歸版本。它通過尋找一個最優(yōu)的回歸超平面,使得大多數(shù)數(shù)據(jù)點在超平面上的偏差不超過某個閾值 ε,同時盡量保持模型的平滑性。
8.2 工作原理
SVR通過引入ε-不敏感損失函數(shù),將偏差在 ε 范圍內(nèi)的數(shù)據(jù)點的損失視為0。其目標(biāo)是找到一個平衡的模型,使得:
數(shù)據(jù)點離超平面距離小于 ε 的部分不產(chǎn)生損失。數(shù)據(jù)點離超平面距離大于 ε 的部分產(chǎn)生線性損失。
SVR的優(yōu)化目標(biāo)可以表示為:
min
?
w
,
b
1
2
∥
w
∥
2
+
C
∑
i
=
1
n
(
ξ
i
+
ξ
i
?
)
\min_{\mathbf{w}, b} \frac{1}{2} \|\mathbf{w}\|^2 + C \sum_{i=1}^{n} (\xi_i + \xi_i^*)
w,bmin?21?∥w∥2+Ci=1∑n?(ξi?+ξi??) 其中:
w2是正則化項,用于平滑模型。xi_i 和 xi_i^* 是松弛變量,用于處理誤差超過 ε 的數(shù)據(jù)點。( C ) 是懲罰參數(shù),控制誤差和模型復(fù)雜度之間的權(quán)衡。
8.3 代碼示例
以下示例展示如何使用支持向量回歸模型進(jìn)行訓(xùn)練和預(yù)測。
import numpy as np
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
# 生成數(shù)據(jù)
X, y = make_regression(n_samples=100, n_features=1, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建并訓(xùn)練支持向量回歸模型
model = SVR(kernel='rbf', C=1.0, epsilon=0.1)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
# 打印結(jié)果
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
# 可視化結(jié)果
plt.scatter(X_test, y_test, color='blue', label='True Values')
plt.scatter(X_test, y_pred, color='red', label='Predicted Values')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
8.4 參數(shù)說明
kernel: 核函數(shù)類型,常用的有 ‘linear’、‘poly’、‘rbf’(徑向基函數(shù))和 ‘sigmoid’。C: 懲罰參數(shù),控制模型對誤差的容忍度。較大的 C 值會導(dǎo)致模型對訓(xùn)練數(shù)據(jù)更嚴(yán)格擬合。epsilon: ε-不敏感損失函數(shù)的寬度,控制對誤差的容忍范圍。
9. K近鄰回歸(K-Nearest Neighbors Regression)
9.1 簡介
K近鄰回歸基于K個最近鄰樣本的平均值或加權(quán)平均值進(jìn)行預(yù)測。
9.2 工作原理
KNN回歸通過計算樣本點與訓(xùn)練集所有樣本點的距離,選擇距離最近的K個樣本進(jìn)行預(yù)測。
9.3 代碼示例
from sklearn.neighbors import KNeighborsRegressor
# 創(chuàng)建并訓(xùn)練K近鄰回歸模型
model = KNeighborsRegressor(n_neighbors=5)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
10. 貝葉斯回歸(Bayesian Regression)
10.1 簡介
貝葉斯回歸通過引入先驗分布對模型參數(shù)進(jìn)行推斷,使得模型具有更好的魯棒性。
10.2 工作原理
貝葉斯回歸通過計算后驗分布,結(jié)合數(shù)據(jù)和先驗信息,得到參數(shù)的最優(yōu)估計。
10.3 代碼示例
from sklearn.linear_model import BayesianRidge
# 創(chuàng)建并訓(xùn)練貝葉斯回歸模型
model = BayesianRidge()
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
11. 提升回歸(Boosting Regression)
11.1 簡介
提升回歸是一種集成方法,通過結(jié)合多個弱學(xué)習(xí)器(通常是決策樹)提高預(yù)測性能。
11.2 工作原理
提升回歸通過逐步訓(xùn)練弱學(xué)習(xí)器,每一步根據(jù)之前的錯誤進(jìn)行調(diào)整,從而提高模型性能。
11.3 代碼示例
from sklearn.ensemble import GradientBoostingRegressor
# 創(chuàng)建并訓(xùn)練提升回歸模型
model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)
model.fit(X_train, y_train)
# 預(yù)測與評估
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {np.mean((y_pred - y_test)**2)}")
總結(jié)
回歸算法在機器學(xué)習(xí)中有廣泛的應(yīng)用,選擇合適的回歸算法取決于具體的應(yīng)用場景、數(shù)據(jù)特性和模型需求。常見的回歸算法包括線性回歸、多項式回歸、嶺回歸、套索回歸、彈性網(wǎng)絡(luò)回歸、決策樹回歸、隨機森林回歸、支持向量回歸、K近鄰回歸、貝葉斯回歸和提升回歸等。通過結(jié)合具體問題選擇適當(dāng)?shù)乃惴?,可以提高模型的預(yù)測精度和泛化能力。
柚子快報邀請碼778899分享:回歸 人工智能 機器學(xué)習(xí)
參考鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。