Partial Least Squares Regression 偏最小二乘法迴歸
阿新 • • 發佈:2019-01-04
介紹
定義
偏最小二乘迴歸 ≈ 多元線性迴歸分析 + 典型相關分析 + 主成分分析
輸入:
輸出:
目標:最大化
起源
來源於瑞典統計學家Herman Wold,然後由他的兒子Svante Wold發展。
優點
用最簡的方法求值
1. 能夠在自變數存在嚴重多重相關性的條件下進行迴歸建模;
2. 允許在樣本點個數少於變數個數的條件下進行迴歸建模;
3. 偏最小二乘迴歸在最終模型中將包含原有的所有自變數;
4. 偏最小二乘迴歸模型更易於辨識系統資訊與噪聲(甚至一些非隨機性的噪聲);
5. 在偏最小二乘迴歸模型中,每一個自變數的迴歸係數將更容易解釋。
缺點
TODO
應用領域
社會科學,化學計量學,生物資訊學,sensometrics,神經科學,人類學
相關
- 特徵提取
- 資料探勘
- 機器學習
- 迴歸分析
- 典型相關
- Deming regression
- 多線性子空間學習
- 主成分分析
- 總平方和
解法
- 設
X 和Y 都已經過標準化(包括減均值、除標準差等) 。 - 設
X 的第一個主成分為p1 ,Y 的第一個主成分為q1 ,兩者都經過了單位化(這裡的主成分並不是通過PCA得出的主成分) u1=Xp1,v1=Yq1這一步看起來和CCA是一樣的,但是這裡的 p和 q$都有主成分的性質,因此有下面4和5的期望條件。Var(u1)→ma ,即在主成分上的投影,我們期望是方差最大化。Corr(u1,v1)→max 這個跟CCA的思路一致。- 綜合4和5,得到優化目標
Cov(u1,v1)=Var(u1)Var(v1)−−−−−−−−−−−−−√Corr(u1,v1)→max
形式化一點:
求解:
引入拉格朗日乘子
\mathcal{L} = p_1^TX^TYq_1 - \frac{\lambda}{2} (p_1^Tp_1 - 1) - \frac(\theta}{2} (q_1^Tq_1 - 1)
分別對
\frac{}
實現
Python
-
- plsr_example.py
python
from sklearn.cross_decomposition import PLSRegression
X = [[0.0, 0.0, 1.0], [1.0, 0.0, 0.0], [1.0, 1.0, 1.0], [0.4, 1.0, 0.8], [0.1, 0.1, 0.1]]
Y = [[0, 0, 1], [1, 0, 0], [1, 1, 1], [0, 1, 1], [0, 0, 0]]
pls2 = PLSRegression(n_components=3)
pls2.fit(X, Y)
Y_pred = pls2.predict(X)
- output
text
>>> Y_pred
array([[ 0.26087869, 0.15302213],
[ 0.60667302, 0.45634164],
[ 6.46856199, 6.48931562],
[ 11.7638863 , 12.00132061]])
- output
- plsc_example.py
python
from sklearn.cross_decomposition import PLSCanonical
X = [[0., 0., 1.], [1.,0.,0.], [2.,2.,2.], [2.,5.,4.]]
Y = [[0.1, -0.2], [0.9, 1.1], [6.2, 5.9], [11.9, 12.3]]
plsca = PLSCanonical(n_components=2)
plsca.fit(X, Y)
X_c, Y_c = plsca.transform(X, Y)
- output
text
>>> X_c
array([[-1.39700475, 0.1179672 ],
[-1.19678754, -0.17050027],
[ 0.56032252, 0.0991593 ],
[ 2.03346977, -0.04662624]])
>>> Y_c
array([[-1.22601804, 0.01674181],
[-0.9602955 , -0.04216316],
[ 0.32491535, 0.04379 ],
[ 1.86139819, -0.01836865]])
- output
- plsr_example.py
R
- pls
應用
TODO