AI時代系列(3) 機器學習三部曲: 🔹 第一部:《機器學習 —— AI 智慧的啟航》
21/100 第三週:監督學習(回歸)
21.線性回歸 📈 最基本的機器學習模型,適合預測連續數據(如房價)!
監督學習(回歸) 的第一部分,將介紹 線性回歸(Linear Regression),它是機器學習中最基本且重要的模型之一。適合用來預測連續數據,如 房價、收入、溫度、銷售額 等。
________________________________________
📌 線性回歸(Linear Regression)
線性回歸 是 最簡單的機器學習模型,它假設輸入特徵與輸出之間存在線性關係,並使用一條直線來擬合數據。
________________________________________
1️⃣ 線性回歸的基本概念
🎯 目標
找出一條最佳直線來預測連續變數 y,滿足:
y=wX+b
其中:
• y 是 目標值(預測值)
• X 是 輸入特徵
• w 是 權重(斜率)
• b 是 截距(bias)
示例:預測房價 假設 X=房屋面積(平方公尺),y=房價(萬元):
房價=5000×面積+10
這表示:
• 每增加 1 平方公尺,房價增加 5000 萬元
• 當面積為 0,房價為 10 萬元(截距)
________________________________________
2️⃣ 如何尋找最佳直線?
使用最小二乘法(Least Squares Method) 來找到最佳的 w 和 b,讓預測值 y^與實際值 之間的誤差最小。
誤差衡量方式:均方誤差(MSE)
均方誤差的文字描述可以這樣表達: 「先計算每筆資料的『預測值減實際值』之差,再將這些差值平方後求平均,就是均方誤差。」
目標:調整 w,b 讓 MSE 最小化。
方法:
• 解析解(Closed-form Solution):直接計算最優解(適用於小數據)
• 梯度下降(Gradient Descent):反覆調整 w,b(適用於大數據)
________________________________________
3️⃣ Python 實作:簡單線性回歸
我們使用 sklearn 來建立 線性回歸模型,並用它來預測房價。
✅ (1) 生成數據
python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 產生隨機房屋面積數據(平方公尺)
np.random.seed(42)
X = np.random.randint(20, 200, size=(50, 1)) # 房屋面積
y = 5000 * X + 10000 + np.random.randint(-50000, 50000, size=(50, 1)) # 房價(加入隨機噪聲)
# 繪製數據點
plt.scatter(X, y, color='blue', alpha=0.5, label="真實數據")
plt.xlabel("房屋面積(平方公尺)")
plt.ylabel("房價(萬元)")
plt.title("房價 vs. 房屋面積")
plt.legend()
plt.show()
________________________________________
✅ (2) 訓練線性回歸模型
python
# 創建線性回歸模型
model = LinearRegression()
# 訓練模型
model.fit(X, y)
# 獲取最佳參數
w = model.coef_[0][0] # 斜率
b = model.intercept_[0] # 截距
print(f"線性回歸方程:房價 = {w:.2f} * 面積 + {b:.2f}")
________________________________________
✅ (3) 預測與視覺化
python
# 預測房價
y_pred = model.predict(X)
# 繪製回歸線
plt.scatter(X, y, color='blue', alpha=0.5, label="真實數據")
plt.plot(X, y_pred, color='red', linewidth=2, label="預測直線")
plt.xlabel("房屋面積(平方公尺)")
plt.ylabel("房價(萬元)")
plt.title("線性回歸模型")
plt.legend()
plt.show()
📌 結果: 一條紅色直線擬合數據,代表模型的預測結果。
________________________________________
4️⃣ 模型評估
為了評估線性回歸的表現,我們使用 R² 決定係數(R-squared) 和 均方誤差(MSE)。
python
from sklearn.metrics import mean_squared_error, r2_score
# 計算 MSE
mse = mean_squared_error(y, y_pred)
# 計算 R² 分數
r2 = r2_score(y, y_pred)
print(f"MSE(均方誤差):{mse:.2f}")
print(f"R² 決定係數:{r2:.4f}")
📌 R²(決定係數)
• 範圍:0 ~ 1
• 越接近 1,模型擬合效果越好
• 若 R² 很低,可能需要增加特徵或考慮非線性模型
________________________________________
線性回歸的優缺點
🎯 優點
✅ 簡單易懂,計算效率高
✅ 結果具有可解釋性(每個特徵的影響力明確)
✅ 適用於數據線性關係明顯的問題
⚠ 缺點
❌ 無法處理非線性關係(如房價 vs. 需求變化)
❌ 容易受異常值影響(Outliers)
❌ 假設數據無共線性(多個變數不應該高度相關)
________________________________________
📌 結論
✅ 線性回歸是機器學習中最基本的回歸模型
✅ 適用於預測「連續數據」,如 房價、銷售額、溫度
✅ 可擴展為多元線性回歸來處理多個變數
✅ 若數據呈非線性關係,需考慮 多項式回歸或決策樹回歸
🚀 下一步:深入探索多元回歸模型! 🎯