监督学习——通用线性模型
一、何謂監(jiān)督學(xué)習(xí)
要給出監(jiān)督學(xué)習(xí)準(zhǔn)確的定義并不容易,因?yàn)槊勘緟⒖假Y料中都給出了不同的解釋,雖然核心的思想是相同的,但是再 寫(xiě)博客的時(shí)候,總得選擇自己滿意的定義。在監(jiān)督學(xué)習(xí)這個(gè)概念上,我選擇以李航老師的統(tǒng)計(jì)學(xué)習(xí)方法中的定義作為 標(biāo)準(zhǔn),監(jiān)督學(xué)習(xí)(supervisedlearning)的任務(wù)是一個(gè)學(xué)習(xí)模型,使模型能夠?qū)θ我饨o定的輸入,對(duì)其相應(yīng)的輸出做出 一個(gè)好的預(yù)測(cè)(注意:這里的輸入何輸出,是指某個(gè)系統(tǒng)的輸入、輸出,與學(xué)習(xí)的輸入、輸出不同)。1 通用線性模型
首先我們要介紹的是一組用于回歸的方法,“回歸”一詞源于最佳擬合,表示要找到最佳擬合參數(shù)集。在回歸方法中,目標(biāo)值被估計(jì)為輸入變量的線性組合。在數(shù)學(xué)概念中,被稱為估計(jì)值(predicted value)。線性的回歸方程:
稱為回歸系數(shù),稱為截距。
1.1 普通最小二乘
線性回歸(LinearRegression)模型的目標(biāo)是擬合一個(gè)系數(shù)為的線性模型,使得觀測(cè)變量的值與目標(biāo)值之間的殘差盡可能小。在數(shù)學(xué)中,它主要解決以下形式的問(wèn)題:
線性回歸把數(shù)組X,y的你和系數(shù)存儲(chǔ)在成員變量coef_中:
[python]?view plaincopy
然而,最小普通二乘系數(shù)的估計(jì)和模型的獨(dú)立性相關(guān),輸入矩陣X的列有近似的線性關(guān)系時(shí),最小普通二乘對(duì)觀察到的數(shù)據(jù)的隨錯(cuò)誤估計(jì)非常敏感,這種情況下會(huì)產(chǎn)生較大的方差。
例子:
- Linear Regression Example
回歸系數(shù)、殘差平方、 Variance score的計(jì)算如下:
[plain]?view plaincopy如果X是一個(gè)大小為n行p列的矩陣,假設(shè)n>=p,則線性回歸的普通最小二乘的算法復(fù)雜度為。
1.2 嶺回歸(Ridge regression)
嶺回歸通過(guò)對(duì)回歸系數(shù)增加一個(gè)懲罰因子解決了如下形式的普通最小二乘問(wèn)題,嶺回歸系數(shù)使得殘差平方和最小:
是一個(gè)控制收縮率大小的參數(shù):越大,收縮率就越大,因此,回歸線數(shù)的共線性就越健壯,圖1給出了和權(quán)重weights之間的關(guān)系。
同其他線性模型一樣,嶺回歸把數(shù)組X,y的你和系數(shù)存儲(chǔ)在成員變量coef_中:
[python]?view plaincopy
- Plot Ridge coefficients as a function of the regularization
- Classification of text documents using sparse features
嶺回歸的復(fù)雜度與線性回歸復(fù)雜度一樣。
1.2.1 設(shè)置正則化的參數(shù):廣義交叉驗(yàn)證
RidgeCV?的嶺回歸中實(shí)現(xiàn)了參數(shù)alpha的交叉驗(yàn)證。RidgeCV與GridSearchCV的實(shí)現(xiàn)原理一樣,只是RidgeCV用的方法是廣義交叉驗(yàn)證(GCV),而GridSearchCV則用的是一對(duì)一交叉驗(yàn)證(leave-one-out cross-validation)。1.3 Lasso
Lasso是估計(jì)稀疏系數(shù)的線性模型。Lasso總是傾向于解決參數(shù)較少的問(wèn)題,并可以有效的減少解決方案依賴的變量參數(shù)。為此,Lasso及其變形 是壓縮感知領(lǐng)域的基礎(chǔ),在特定的情況下,Lasso可以恢復(fù)非零權(quán)重的準(zhǔn)確集合。 Lasso是由正則化參數(shù)組成的線性模型,目標(biāo)函數(shù)為:為常數(shù),范數(shù)為參數(shù)向量的主題。
?Lasso使用梯度下降法擬合系數(shù),另一種實(shí)現(xiàn)方法參考?Least Angle Regression?。 >>> from sklearn import linear_model >>> reg = linear_model.Lasso(alpha = 0.1) >>> reg.fit([[0, 0], [1, 1]], [0, 1]) Lasso(alpha=0.1, copy_X=True, fit_intercept=True, max_iter=1000, normalize=False, positive=False, precompute=False, random_state=None, selection='cyclic', tol=0.0001, warm_start=False) >>> reg.predict([[1, 1]]) array([ 0.8])
例子:
- Lasso and Elastic Net for Sparse Signals
- Compressive sensing: tomography reconstruction with L1 prior (Lasso)
總結(jié)
以上是生活随笔為你收集整理的监督学习——通用线性模型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 重构—改善既有代码的设计
- 下一篇: 一、数据挖掘概述