Scikit-learn筆記02_監督式學習(迴歸及分類)_線性迴歸(Linear Regression)
監督式學習(Supervised Learning)
特點:
- 屬於機器學習算法中較常用的、也是較為成功的模式。
- 監督式學習的核心概念(輸入 → 輸出)非常直觀,容易理解和實施。
- 常應用於分類、迴歸問題分析以及時間序列預測等情境。
- 具有較高的可解釋性,便於商業應用中說明模型的預測邏輯。
- 可量化的評估,透過標準化的指標(如準確率、均方誤差)進行量化評估和優化。
- 模型建構於輸入跟輸出配對之訓練資料,對尚未見過的資料做預測。
限制及困難:
- 標籤數據的獲取可能耗時且昂貴。依賴於帶標籤的數據集(每個輸入樣本都有相應的目標輸出),使得模型可以清楚地學到輸入與輸出的映射關係。
- 無法處理未見過的類別或樣本
- 訓練資料通常要耗時人工建立。
常見監督式學習演算法:
線性模型/線性迴歸 (Lineaer Models)
決策樹(Decision Trees)、隨機森林(Random Forests)
最近鄰居法(K-Nearest Neighbors)
支持向量機(SVM)
類神經網路(Neural Networks)
監督式學習任務
1.分類(Classification):
在已定義的離散標籤中預測資料屬於何種標籤(類比數值)
僅兩種標籤的問題又俗稱二元分類,yes/no。比方:信件是否屬於垃圾郵件?
多種標籤問題則稱為多元(類別)分類,比方某筆鳶尾花資料屬於何種品種?
2.迴歸(Regression):預測連續數值(浮點數、實數)
比方:房價趨勢預測、農產收成量預測
線性迴歸(Linear Regression)
- 屬於常見統計方法,也是機器學習起初接觸時優先探討的問題。
- 目的在於藉由過去資料找出已經存在的關係,並且利用X來預測Y可能的結果。
- 線性迴歸模型指的是X(自變數)跟Y(應變數)之線性關係
- 依照自變數多寡可分成簡單線性迴歸和多(複)元迴歸。
- 迴歸分析又依照函數型態,細分為線性、非線性。
多(複)元迴歸 -> 像鳶尾花有四個變數維度,就屬於此類迴歸。
簡單線性迴歸 ->像是單價、銷數量關係
簡單線性迴歸模型: y = ax + b,a跟b稱作迴歸係數(regression coefficients)。
為了找出迴歸係數,常用方法為最小平方法(Ordinary Least Squares,OLS),找出
跟各點殘差(Residual)最小的公式。
sklearn本身提供一種api : make_regression
常使用到的就是這幾種參數
n_samples
n_features
n_targets
noise
from sklearn import datasets import matplotlib.pyplot as plt X,y = datasets.make_regression(n_samples=200, n_features=1, n_targets=1, noise=7) plt.scatter(X, y) plt.show()
也可透過數學式方式來產生迴歸線段資料
測試程式,如下是斜率3,截距-5的直線方程式。
輸出是一張散點圖,其中 x 是隨機生成的數據點。
而 y 是通過線性關係 y = 3*x - 5 加上隨機噪聲後的結果。
from sklearn import datasets import numpy as np import matplotlib.pyplot as plt rng = np.random.RandomState(2) x = 10 * rng.rand(50) print(x) y=3*x-5+rng.randn(50) print(y) plt.scatter(x, y) plt.show()
10 * rng.rand(50):
將隨機數擴展到 [0, 10) 的範圍,作為自變數 x。
rng.randn(50):
生成 50 個服從標準正態分佈的隨機數(平均值為 0,標準差為 1),用於引入噪聲。
y = 3*x - 5 + rng.randn(50):
將線性函數的值加上噪聲,生成帶有隨機誤差的應變數 y。
plt.scatter(x, y):
繪製自變數 x 和應變數 y 的散點圖。
Ref:
留言
張貼留言