機器學習中的迴歸分析



什麼是迴歸分析?

在機器學習中,迴歸分析是一種統計技術,它根據自變數和因變數之間的關係來預測連續的數值。迴歸分析的主要目標是繪製一條最適合資料的線或曲線,並估計一個變數如何影響另一個變數。

迴歸分析是機器學習中的一個基本概念,它被用於許多應用中,例如預測、預測分析等。

在機器學習中,迴歸是一種監督學習型別。基於迴歸的任務的關鍵目標是預測輸出標籤或響應,這些是給定輸入資料的連續數值。輸出將基於模型在訓練階段學到的內容。

基本上,迴歸模型使用輸入資料特徵(自變數)及其對應的連續數值輸出值(因變數或結果變數)來學習輸入和相應輸出之間特定的關聯。

迴歸分析中使用的術語

在深入瞭解之前,讓我們瞭解一下回歸分析中使用的一些基本術語。以下是一些重要的術語:

  • 自變數 - 這些變數用於預測因變數的值。這些也被稱為預測變數。在資料集中,這些表示為特徵
  • 因變數 - 這些是我們想要預測其值的變數。這些是迴歸分析中的主要因素。在資料集中,這些表示為目標變數
  • 迴歸線 - 它是迴歸器繪製以最好地擬合數據點的直線或曲線。
  • 過擬合和欠擬合 - 過擬合是指回歸模型在訓練資料集上執行良好,但在測試資料集上執行不佳。它也被稱為高方差問題。欠擬合是指模型在訓練資料集上執行不佳。它也被稱為高偏差問題。
  • 異常值 - 這些是不符合資料其餘部分模式的資料點。它們是資料集中極高或極低的值。
  • 多重共線性 - 當自變數(特徵)之間存在依賴關係時,就會發生多重共線性。

迴歸是如何工作的?

機器學習中的迴歸是一種監督學習。基本上,迴歸是一種統計技術,它尋找因變數和自變數之間的關係。為了在機器學習中實現迴歸,迴歸演算法使用帶標籤的資料集進行訓練。資料集包含特徵(自變數)和目標值(因變數)。

在訓練階段,迴歸演算法學習自變數(預測變數)和因變數(目標)之間的關係。

迴歸模型根據訓練期間學習到的預測變數和目標之間的關係預測新值。

機器學習中的迴歸型別

通常,迴歸方法的分類是根據三個指標進行的:自變數的數量、因變數的型別以及迴歸線的形狀。

機器學習中使用了許多回歸技術。但是,以下是一些常用的迴歸型別:

  • 線性迴歸
  • 邏輯迴歸
  • 多項式迴歸
  • Lasso迴歸
  • 嶺迴歸
  • 決策樹迴歸
  • 隨機森林迴歸
  • 支援向量迴歸

讓我們詳細討論機器學習中每種型別的迴歸。

1. 線性迴歸

線性迴歸是機器學習中最常用的迴歸模型。線性迴歸可以定義為分析因變數與給定一組自變數之間線性關係的統計模型。變數之間的線性關係意味著當一個或多個自變數的值發生變化(增加或減少)時,因變數的值也會相應地發生變化(增加或減少)。

線性迴歸進一步分為兩個子類別:簡單線性迴歸和多元線性迴歸(也稱為多元線性迴歸)。

在簡單線性迴歸中,單個自變數(或預測變數)用於預測因變數。

在數學上,簡單線性迴歸可以表示如下:

$$Y=mX+b$$

其中,

  • Y是我們試圖預測的因變數。
  • X是我們用來進行預測的自變數。
  • m是迴歸線的斜率,它表示X對Y的影響。
  • b是一個常數,稱為Y截距。如果X = 0,則Y將等於b。

在多元線性迴歸中,多個自變數用於預測因變數。

我們將在後續章節中更詳細地學習線性迴歸。

2. 邏輯迴歸

邏輯迴歸是一種流行的機器學習演算法,用於預測事件發生的機率。

邏輯迴歸是一種廣義線性模型,其中目標變數服從伯努利分佈。邏輯迴歸使用邏輯函式或Logit函式來學習自變數(預測變數)和因變數(目標)之間的關係。

它將因變數對映為自變數的S形函式。S形函式產生0到1之間的機率。機率值用於估計因變數的值。

它主要用於二元分類問題,其中目標變數是具有兩個類別的分類變數。它根據輸入特徵對目標變數的機率進行建模,並預測機率最高的類別。

3. 多項式迴歸

多項式線性迴歸 是一種迴歸分析,其中自變數和因變數之間的關係被建模為 n 次多項式函式。與簡單線性迴歸和多元線性迴歸中的線性關係相比,多項式迴歸允許捕獲變數之間更復雜的關係。

多項式迴歸是最廣泛使用的非線性迴歸之一。它非常有用,因為它可以模擬預測變數和目標變數之間的非線性關係,並且對異常值更敏感。

4. Lasso 迴歸

Lasso 迴歸是一種正則化技術,它使用懲罰來防止過擬合併提高迴歸模型的準確性。它執行 L1 正則化。它透過新增等於係數絕對值之和的懲罰(收縮量)來修改損失函式。

Lasso 迴歸通常用於處理高維和高度相關的資料。

5. Ridge 迴歸

Ridge 迴歸是一種統計技術,用於機器學習中防止線性迴歸模型過擬合。它用作正則化技術,執行 L2 正則化。它透過新增等於係數大小平方和的懲罰(收縮量)來修改損失或代價函式。

Ridge 迴歸有助於降低模型複雜度並提高預測準確性。它在開發許多具有高權重的引數時很有用。它也適用於特徵變數數量多於觀測數量的資料集。

它還修正了迴歸分析中的多重共線性。當自變數相互依賴時,就會發生多重共線性。

6. 決策樹迴歸

決策樹迴歸使用決策樹演算法來預測數值。決策樹演算法是一種監督式機器學習演算法,可用於分類和迴歸。

它用於預測數值或連續變數。它的工作原理是根據輸入特徵的值將資料分成更小的子集,併為每個子集分配一個數值。因此,它逐步地開發了一個決策樹。

該樹擬合局部線性迴歸以近似曲線,每個葉子表示一個數值。該演算法試圖減少每個子節點的均方誤差,該誤差衡量預測與原始目標的偏差程度。

決策樹迴歸可用於預測股票價格或客戶行為等。

7. 隨機森林迴歸

隨機森林迴歸是一種監督式機器學習演算法,它使用決策樹的整合來預測連續的目標變數。它使用一種裝袋技術,該技術涉及隨機選擇訓練資料的子集來構建較小的決策樹。這些較小的模型組合在一起形成一個隨機森林模型,該模型輸出單個預測值。

該技術透過結合多個決策樹的預測來提高準確性和降低方差。

8. 支援向量機迴歸

支援向量機迴歸 (SVR) 是一種機器學習演算法,它使用支援向量機來解決迴歸問題。它可以學習輸入資料(特徵變數)和輸出資料(目標值)之間的非線性關係。

支援向量機迴歸具有許多優點。它可以處理資料集中的線性關係和非線性關係。它對異常值具有魯棒性。它具有較高的預測精度。

如何選擇最佳迴歸模型?

您可以考慮效能指標、模型複雜度、可解釋性等因素來選擇最佳迴歸模型。使用均方誤差 (MSE)、平均絕對誤差 (MAE)、R 平方等指標評估模型效能。比較不同模型(如線性迴歸、決策樹、隨機森林等)的效能,並選擇具有最高效能指標、最低複雜度和最佳可解釋性的模型。

迴歸評估指標

迴歸模型的常用評估指標 -

  • 平均絕對誤差 (MAE) - 它是預測值與真實值之間絕對差值的平均值。
  • 均方誤差 (MSE) - 它是實際值與估計值之間差值的平方的平均值。
  • 中位數絕對誤差 - 它是預測值與真實值之間絕對差值的中位數。
  • 均方根誤差 (RMSE) - 它是均方誤差 (MSE) 的平方根值。
  • R2(決定係數)得分 - 最佳可能得分是 1.0,它可以為負數(因為模型可以任意變差)。
  • 平均絕對百分比誤差 (MAPE) - 它是平均絕對誤差 (MAE) 的百分比等價物。

迴歸在機器學習中的應用

ML 迴歸演算法的應用如下 -

預測或預測分析 - 迴歸的重要用途之一是預測或預測分析。例如,我們可以預測 GDP、油價,或者簡單地說,隨時間推移而變化的定量資料。

最佳化 - 我們可以藉助迴歸最佳化業務流程。例如,商店經理可以建立統計模型來了解顧客高峰時間。

錯誤修正 - 在業務中,做出正確的決策與最佳化業務流程同等重要。迴歸可以幫助我們做出正確的決策以及修正已經實施的決策。

經濟學 - 它是經濟學中使用最廣泛的工具。我們可以使用迴歸來預測供給、需求、消費、存貨投資等。

金融 - 金融公司始終對最小化風險投資組合感興趣,並希望瞭解影響客戶的因素。所有這些都可以藉助迴歸模型進行預測。

使用 Python 構建迴歸器

可以使用 Python 從頭開始構建迴歸器模型。Scikit-learn 是一個用於機器學習的 Python 庫,也可以用於在 Python 中構建迴歸器。

在以下示例中,我們將構建一個基本的迴歸模型,該模型將擬合一條線到資料,即線性迴歸器。在 Python 中構建迴歸器的必要步驟如下 -

步驟 1:匯入必要的 Python 包

要使用 scikit-learn 構建迴歸器,我們需要匯入它以及其他必要的包。我們可以使用以下指令碼匯入它 -

import numpy as np
from sklearn import linear_model
import sklearn.metrics as sm
import matplotlib.pyplot as plt

步驟 2:匯入資料集

匯入必要的包後,我們需要一個數據集來構建迴歸預測模型。我們可以從 sklearn 資料集中匯入它,也可以根據我們的需要使用其他資料集。我們將使用我們儲存的輸入資料。我們可以使用以下指令碼匯入它 -

input = r'C:\linear.txt'

接下來,我們需要載入此資料。我們使用np.loadtxt函式載入它。

input_data = np.loadtxt(input, delimiter=',')
X, y = input_data[:, :-1], input_data[:, -1]

步驟 3:將資料組織成訓練集和測試集

由於我們需要在未見過的資料上測試我們的模型,因此我們將資料集分成兩部分:訓練集和測試集。以下命令將執行此操作 -

training_samples = int(0.6 * len(X))
testing_samples = len(X) - num_training
X_train, y_train = X[:training_samples], y[:training_samples]
X_test, y_test = X[training_samples:], y[training_samples:]

步驟 4:模型評估和預測

將資料劃分為訓練集和測試集後,我們需要構建模型。我們將為此使用 Scikit-learn 的 LineaRegression() 函式。以下命令將建立一個線性迴歸器物件。

reg_linear = linear_model.LinearRegression()

接下來,使用訓練樣本訓練此模型,如下所示 -

reg_linear.fit(X_train, y_train)

現在,最後我們需要使用測試資料進行預測。

y_test_pred = reg_linear.predict(X_test)

步驟 5:繪圖和視覺化

預測後,我們可以使用以下指令碼繪製和視覺化它 -

plt.scatter(X_test, y_test, color = 'red')
plt.plot(X_test, y_test_pred, color = 'black', linewidth = 2)
plt.xticks(())
plt.yticks(())
plt.show()

輸出

Plot Visualization

在上面的輸出中,我們可以看到資料點之間的迴歸線。

步驟 6:效能計算

我們還可以使用各種效能指標來計算迴歸模型的效能,如下所示。

print("Regressor model performance:")
print("Mean absolute error(MAE) =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error(MSE) =", round(sm.mean_squared_error(y_test, y_test_pred), 2))
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2))
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

輸出

Regressor model performance:
Mean absolute error(MAE) = 1.78
Mean squared error(MSE) = 3.89
Median absolute error = 2.01
Explain variance score = -0.09
R2 score = -0.09
廣告