線性迴歸知識總覽

博文內容爲

  • 機器學習的一些概念
    有監督、無監督、泛化能力、過擬合欠擬合(方差和偏差以及各自解決辦法)、交叉驗證
  • 線性迴歸的原理
  • 線性迴歸損失函數、代價函數、目標函數
  • 優化方法(梯度下降法、牛頓法、擬牛頓法等)
  • 線性迴歸的評估指標
  • sklearn參數詳解

機器學習的一些概念

機器學習分類:
  • 按數據分類

  • 分類、迴歸、序列標註

  • 按模型分類

  • 生成式模型、判別式模型

  • 按監督分類

  • 有監督、無監督
    統計學習包括監督學習、非監督學習、半監督學習及強化學習。
    監督學習(supervised learning):
    輸入數據是有標籤的,通過學習一個模型,使得模型能夠對任意給定輸入(可理解爲自變量 X ),對其相應的輸出給出一個預測 y^\hat{y},經典算法包括支持向量機、邏輯迴歸、決策樹,以及概率圖模型:樸素貝葉斯、最大熵模型、隱馬爾科夫模型、條件隨機場等。
    無監督學習:
    給機器輸入無標籤的數據,希望通過模型挖掘數據中存在的某種共性特徵、關聯或者結構。非監督學習主要包括兩大類學習方法:數據聚類和特徵變量關聯。其中,數據聚類使用過多次迭代跟新,找到數據的最優分割,而特徵變量關聯則是 利用各種相關性方法來找到變量之間的關係。
    層次聚類、K均值聚類、主題模型等。

泛化能力,過擬合,欠擬合:

泛化能力一般是對於有監督模型,第一階段,訓練模型,會將已有的帶標籤數據集進行劃分,分爲訓練集和測試集;第二階段,應用模型,在新的數據集(預測集)上應用模型,獲得數據標籤的預測。模型的泛化能力,指的是在第二階段預測數據集上評估指標的表現。見下表:

效果/數據集 訓練集 預測集 結果
效果 泛化能力強
過擬合、泛化能力弱
欠擬合
降低“過擬合”風險:

1.數據方面:增加數據
2.降低模型複雜度:在數據較少是,模型過於複雜是產生過擬合的主要因素。減少線性模型高次項,神經網絡中減少網絡層數、神經元個數等;在決策樹模型中降低樹的深度、進行剪紙等。
3.正則化
4.集成學習:降低單一模型的過擬合風險,防止一家獨大
5.dropout

降低“欠擬合”風險:

1.增加特徵:當特徵不足或者特徵與樣本標籤的相關性不強時,模型容易出現欠擬合。
2.增加模型複雜度
3.減小正則化係數

  • 牛頓法參考內容
交叉驗證(Cross Validation)

交叉驗證(Cross Validation),有的時候也稱作循環估計(Rotation Estimation),是一種統計學上將數據樣本切割成較小子集的實用方法。K折交叉驗證(K-fold cross-validation),留一法(LOOCV)交叉驗證。
和我們常見的訓練集和測試集劃分不同的是,交叉驗證涉及數據的交叉使用:
在給定的建模樣本中,拿出大部分樣本進行建模型,留小部分樣本用剛建立的模型進行預報,並求這小部分樣本的預報誤差,記錄它們的平方加和。這個過程一直進行,直到所有的樣本都被預報了一次而且僅被預報一次。把每個樣本的預報誤差平方加和,稱爲PRESS(predicted Error Sum of Squares)。

損失函數、代價函數、目標函數

監督學習中對數據進行建模得到模型ff,模型對給與的輸入樣本XX,由fXf(X)給出相應的輸出Y^\hat{Y},這個輸出值與真實值YY可能一致也可能不一致,如何衡量錯誤的程度呢?,引入一個非負實函數,計作L(Y,f(X))L(Y,f(X)),爲損失函數(loss function)
基本概念:
損失函數:計算的是一個樣本的誤差
代價函數:是整個訓練集上所有樣本誤差的平均
目標函數:代價函數 + 正則化項
(經驗風險最小化+結構風險最小化)
實際應用中:損失函數和代價函數都是來度量預測值與真實值之間的差異,區分不大。
損失函數越小,就代表模型擬合的越好。那是不是我們的目標就只是讓loss function越小越好呢?還不是。這個時候還有一個概念叫風險函數(risk function)。風險函數是損失函數的期望,這是由於我們輸入輸出的(X,Y)遵循一個聯合分佈,但是這個聯合分佈是未知的,所以無法計算。但是我們是有歷史數據的,就是我們的訓練集,f(X)關於訓練集的平均損失稱作經驗風險(empirical risk),所以我們的目標就是最小化經驗風險。
在這裏插入圖片描述
同時,對於模型來說,越複雜的模型擬合數據越好,但是會帶來過擬合風險,這就引出了結構風險概念,我們不僅要讓經驗風險最小化,還要讓結構風險最小化。
這個時候就定義了一個函數J(f),這個函數專門用來度量模型的複雜度,在機器學習中也叫正則化(regularization)。常用的有L1, L2範數。到這一步我們就可以說我們最終的優化函數是:
在這裏插入圖片描述
監督學習問題就變成經驗風險或者結構風險函數的最優化問題,這時經驗或者結構風險函數是最優化的目標函數。

線性迴歸的原理

通俗來說是對於樣本點,將其描繪在座標軸上,通過找到一條直線去刻畫數據的分佈,盡力找到一條直線使得儘可能多的樣本點落在直線上或分佈在直線周圍。
圖片來自百度

線性迴歸

1 理解迴歸
迴歸分析的目的是利用變量間的簡單函數關係,用自變量對因變量進行“預測”,使“預測值”儘可能地接近因變量的“觀測值”。
2.定義
線性迴歸是利用數理統計中迴歸分析,來確定兩種或兩種以上變量間相互依賴的定量關係的一種統計分析方法,運用十分廣泛。其表達形式爲y = w’x+e,e爲誤差服從均值爲0的正態分佈。
X:輸入變量
y:目標變量
希望找到一個映射使得 F:X>yF: X -> y
$$
3.線性迴歸特點:

  • 1.兩個連續變量正常的散點圖呈現雲狀;
  • 2.一條穿過這些點中間的直線可以使得方差的和最小,並用其去描述某種趨勢;
  • 3.至少從理論上來說,當X向更高或者更低的值延續時,Y也如此;同一條直線在X值較大時可以預測對應的Y值,也可以在X值較小時預測對應的Y值
    在這裏插入圖片描述
    如何才能選擇到最合適的直線去擬合數據呢?以下幾條直線都在擬合數據,哪一條更好呢?這時需要引入損失函數來衡量各個模型。
    在這裏插入圖片描述

線性迴歸損失函數

線性迴歸使用平方損失函數:
L(Y,f(X))=(Yf(X))2L(Y,f(X))= (Y-f(X))^2。殘差,是指真是值與預測值的差值,殘差平方和越小等價於預測值與真實值的差異越小,對於線性迴歸模型來說平方損失也等價於殘差平方,線性迴歸通過最小化殘差平方和,選取最合適的模型參數。目標函數爲:
min(SSE)min(SSE),
在這裏插入圖片描述
進行簡單的改寫
在這裏插入圖片描述
求解參數方法可使用最小二乘法求解參數,其原理也是最小化殘差平方和。

高斯-馬爾可夫定理
在誤差零均值,同方差,且互不相關的線性迴歸模型中,由最小二乘估計得出的迴歸係數是所有估計中的最佳線性無偏估計(BLUE)

線性迴歸的評估指標

殘差估計
線性迴歸法的指標MSE, RMSE,MAE和R Square
SSE(誤差平方和)
同樣的數據集的情況下,SSE越小,誤差越小,模型效果越好
缺點:
SSE數值大小本身沒有意義,隨着樣本增加,SSE必然增加,也就是說,不同的數據集的情況下,SSE比較沒有意義。

MSE (Mean Squared Error)叫做均方誤差。也是線性迴歸的損失函數。
在這裏插入圖片描述
RMSE(Root Mean Squard Error)均方根誤差。
在這裏插入圖片描述
這個和均方誤差本質一樣的,不同點就體現在解釋上,平方後的單位顯得不那麼好解釋。
R-square(決定係數)
在這裏插入圖片描述
分母理解爲原始數據的離散程度,分子爲預測數據和原始數據的誤差,二者相除可以消除原始數據離散程度的影響。

其實“決定係數”是通過數據的變化來表徵一個擬合的好壞。
理論上取值範圍(-∞,1], 正常取值範圍爲[0 1] ------實際操作中通常會選擇擬合較好的曲線計算R²,因此很少出現-∞
越接近1,表明方程的變量對y的解釋能力越強,這個模型對數據擬合的也較好
越接近0,表明模型擬合的越差
經驗值:>0.4, 擬合效果好
缺點:
數據集的樣本越大,R²越大,因此,不同數據集的模型結果比較會有一定的誤差
原文:https://blog.csdn.net/shy19890510/article/details/79375062

關於擬合優度可參考
Adjusted R-Square (校正決定係數)
在這裏插入圖片描述
n爲樣本數量,p爲特徵數量
消除了樣本數量和特徵數量的影響

優化方法(梯度下降法、牛頓法、擬牛頓法等)

統計學習方法 附錄 篇217頁

梯度下降法

梯度下降法的優化思想是用當前位置負梯度方向作爲搜索方向,因爲該方向爲當前位置的最快下降方向,所以也被稱爲是”最速下降法“。最速下降法越接近目標值,步長越小,前進越慢。

牛頓法

簡單來說是爲了求最值,而在可導的情況下,最值存在於在導數爲零的點,牛頓法就是一種求導數=0點的算法。 牛頓法和擬牛頓法是求解無約束最優化問題的常用方法,它們比梯度下降收斂更快。考慮同樣的一個無約束最優化問題:

sklearn參數詳解

#切割數據集
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1)
#導入
from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
linreg.fit(X_train, y_train)
#擬合完畢後,我們看看我們的需要的模型係數結果:
#LinearRegression將方程分爲兩個部分存放,coef_存放回歸係數,intercept_則存放截距,因此要查看方程,就是查看這兩個變量的取值。
print(linreg.intercept_)
print (linreg.coef_)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章