柚子快報(bào)激活碼778899分享:關(guān)于回歸的一些問題
柚子快報(bào)激活碼778899分享:關(guān)于回歸的一些問題
在這篇文章中,我將介紹一些關(guān)于回歸的問題,分別為回歸的概念、回歸的分類、不同回歸的區(qū)別以及其應(yīng)用等這四部分。
一、回歸的概念
首先我們先認(rèn)識回歸,回歸是一種預(yù)測建模任務(wù),主要目的是根據(jù)已知的數(shù)據(jù)預(yù)測連續(xù)值的輸出。簡而言之,回歸分析用于理解和建立輸入變量(自變量)與輸出變量(因變量)之間的關(guān)系。
二、回歸的分類
接下來,我將講述關(guān)于回歸的分類。回歸可以有多種分類,但在這里我只說三種回歸,分別是線性回歸(Linear Regression)、嶺回歸(Ridge Regression)以及Lasso回歸。
2.1.1 線性回歸的數(shù)學(xué)模型
在線性回歸中,其數(shù)學(xué)模型可以為這樣:
?y?=wx+b
其中,y是預(yù)測值,x是輸入的特征向量,w是權(quán)重向量,b則是偏置項(xiàng)也就是誤差項(xiàng)。
通過觀察這個(gè)模型,其實(shí)不難發(fā)現(xiàn)他就是一條直線的的表達(dá)式,W是斜率,b是截距。
2.1.2 線性回歸的應(yīng)用
線性回歸的模型雖然簡單,但確也時(shí)常用到,比如:IS-LM模型。其實(shí),線性回歸在房價(jià)預(yù)測、股票預(yù)測以及銷售額預(yù)測等上都經(jīng)常會被用到。
2.1.3 線性回歸的優(yōu)缺點(diǎn)
線性回歸的優(yōu)點(diǎn):簡單易懂、計(jì)算效率高等:缺點(diǎn):對異常值敏感、對缺失數(shù)據(jù)敏感、缺乏特征選擇能力等
2.1.4 線性回歸的python實(shí)現(xiàn)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 生成模擬數(shù)據(jù)
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 數(shù)據(jù)分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建線性回歸模型實(shí)例
model = LinearRegression()
# 訓(xùn)練模型
model.fit(X_train, y_train)
# 預(yù)測
y_pred = model.predict(X_test)
# 評估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"模型權(quán)重(斜率): {model.coef_[0][0]}")
print(f"模型截距: {model.intercept_[0]}")
print(f"均方誤差(MSE): {mse}")
print(f"決定系數(shù)(R^2): {r2}")
# 可視化
plt.scatter(X_test, y_test, color='blue', label='Actual Data')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted Line')
plt.title('Simple Linear Regression')
plt.xlabel('Feature X')
plt.ylabel('Target y')
plt.legend()
plt.show()
代碼中,我們先隨機(jī)生成[0,1)的數(shù)據(jù)然后×2,最為X,然后經(jīng)過類似的處理形成y。接著,利用sklearn庫中的分割函數(shù)將之分給成4份數(shù)據(jù)。然后再利用sklearn進(jìn)行模型的訓(xùn)練與預(yù)測,最后評估與畫圖。圖如下:
2.2.1 嶺回歸的數(shù)學(xué)模型
首先我將給出嶺回歸(Ridge Regression)的數(shù)學(xué)模型:
這個(gè)模型根據(jù)“+”分為兩部分,前一部分是平方損失部分,而后一部分則是L2懲罰項(xiàng),用來懲罰大的權(quán)重值α>0?是正則化參數(shù),控制正則化的強(qiáng)度。其中的L2懲罰項(xiàng)(也稱為嶺正則化)是嶺回歸中的一項(xiàng)關(guān)鍵組成部分。L2正則化通過對模型權(quán)重的平方進(jìn)行懲罰,來減小模型的復(fù)雜度,從而降低過擬合的風(fēng)險(xiǎn)。簡言之,L2懲罰項(xiàng)就是系數(shù)平方之和。(補(bǔ)充一提懲罰項(xiàng)的含義:在損失函數(shù)中加入一個(gè)額外項(xiàng),用于限制模型的復(fù)雜度,以防止過擬合)
2.2.2 嶺回歸的應(yīng)用
接下來是關(guān)于嶺回歸的應(yīng)用部分。它可以用于生物醫(yī)學(xué)上:進(jìn)行基因預(yù)測疾病風(fēng)險(xiǎn),以及在金融上,用于預(yù)測信貸違約的概率等。再或者舉個(gè)具體的例子,我們要預(yù)測某一座房子的價(jià)格,那么我們可以通過以下這些個(gè)特征來預(yù)測:房屋的面積,是否為學(xué)區(qū)房,房齡多少,房子周圍是否有地鐵站等。
2.2.3 嶺回歸的優(yōu)缺點(diǎn)
首先是嶺回歸的優(yōu)點(diǎn):可以防止過擬合、具有靈活性(通過調(diào)整正則化參數(shù)?α,可以根據(jù)具體問題靈活控制模型的復(fù)雜度,找到一個(gè)最佳的平衡點(diǎn))、可以處理多重共線性等。
然后是缺點(diǎn):嶺函數(shù)的所有特征都被保留(這可能導(dǎo)致模型仍然包含一些無關(guān)緊要的特征,增加了模型的復(fù)雜度)、參數(shù)的選擇過于依賴α的值、對數(shù)據(jù)預(yù)處理的嚴(yán)格要求等。
2.2.4 嶺函數(shù)的python實(shí)現(xiàn)
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# 生成模擬數(shù)據(jù)
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 數(shù)據(jù)分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建嶺回歸模型
ridge_reg = Ridge(alpha=1.0) # alpha 是正則化強(qiáng)度
# 訓(xùn)練模型
ridge_reg.fit(X_train, y_train)
# 預(yù)測
y_pred = ridge_reg.predict(X_test)
# 評估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# 輸出模型系數(shù)和截距
print("Coefficients:", ridge_reg.coef_)
print("Intercept:", ridge_reg.intercept_)
# 輸出評估指標(biāo)
print("Mean Squared Error (MSE):", mse)
print("R-squared (R^2):", r2)
# 可視化
plt.scatter(X_test, y_test, color='blue', label='Actual Data')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted Line')
plt.title('Ridge Regression')
plt.xlabel('Feature X')
plt.ylabel('Target y')
plt.legend()
plt.show()
代碼中我們設(shè)置一個(gè)隨機(jī)數(shù)種子,以確保之后可以重現(xiàn)數(shù)據(jù),之后進(jìn)行類似于線性回歸的操作,不過不同的是在這個(gè)里面我們需要設(shè)置alpha的值,初始為1.0,之后根據(jù)具體情況可以微調(diào)。
最后代碼出來的matplotlib的圖像是這樣的:
2.3.1 Lasso回歸的數(shù)學(xué)模型
Lasso回歸的目標(biāo)是最小化以下?lián)p失函數(shù):
在Lasso回歸中,使用的是L1懲罰項(xiàng),而它也就是系數(shù)的絕對值之和。
2.3.2 Lasso回歸的應(yīng)用
Lasso回歸可用于基因表達(dá)分析、傳感器的數(shù)據(jù)處理以及市場營銷計(jì)算等。
2.3.3 Lasso回歸的優(yōu)缺點(diǎn)
首先先說Lasso的優(yōu)點(diǎn):它可以防止過擬合通過L1懲罰項(xiàng)、可以處理多重共線性等。
然后是它的缺點(diǎn):它對于α具有敏感性、對于噪聲就具有敏感性、Lasso在特征選擇反面具有一定的隨即性等。
2.3.4 Lasso回歸的python代碼
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
# 生成模擬數(shù)據(jù)
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
# 數(shù)據(jù)分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 創(chuàng)建嶺回歸模型
lasso_reg = Lasso(alpha=1.0) # alpha 是正則化強(qiáng)度
# 訓(xùn)練模型
lasso_reg.fit(X_train, y_train)
# 預(yù)測
y_pred = lasso_reg.predict(X_test)
# 評估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
# 輸出模型系數(shù)和截距
print("Coefficients:", lasso_reg.coef_)
print("Intercept:", lasso_reg.intercept_)
# 輸出評估指標(biāo)
print("Mean Squared Error (MSE):", mse)
print("R-squared (R^2):", r2)
# 可視化
plt.scatter(X_test, y_test, color='blue', label='Actual Data')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted Line')
plt.title('Lasso Regression')
plt.xlabel('Feature X')
plt.ylabel('Target y')
plt.legend()
plt.show()
以下是代碼的matplotlib生成的圖像:
?
綜上便是關(guān)于回歸中的一些問題。
此上
柚子快報(bào)激活碼778899分享:關(guān)于回歸的一些問題
好文閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。