tft每日頭條

 > 生活

 > 線性回歸怎麼運用

線性回歸怎麼運用

生活 更新时间:2025-02-02 16:36:07
線性回歸原理

一般而言,房價會受很多因素的影響而波動,如果我們假設房價隻與房産面積已經廳室數量有關系,可以看到房價、面積、廳室呈現以下數據:

線性回歸怎麼運用(線性回歸綜述)1

房産數據

我們可以将價格y和面積x1、廳室數量x2的關系表示為f(x)=θ0 θ1x1 θ2x2,很顯然,我們的目的是使得f(x)盡量等于y,這就是一個直觀的線性回歸的樣式。

  • 線性回歸的一般形式

假設有數據集{(x1, y1), (x2, y2), ..., (xn, yn)},其中,xi=(xi1; xi2; xi3; ...; xid)∈n表示變量的數量,d表示每個變量的維度。那麼,我們可以用以下函數來描述y和x之間的關系:

線性回歸怎麼運用(線性回歸綜述)2

y和x之間的關系

如何來确定θ的值,使得f(x)盡可能接近y呢?回歸問題中常用的性能度量是均方誤差,可以表示為如下公式:

線性回歸怎麼運用(線性回歸綜述)3

均方誤差

我們可以選擇合适的θ來讓均方誤差最小化。

  • 極大似然估計

下面我們用極大似然估計來解釋為什麼要用均方誤差作為線性回歸的性能度量。我們可以把目标值和變量寫成如下等式:

線性回歸怎麼運用(線性回歸綜述)4

等式轉換

ϵ表示我們未觀測到的變量的印象,即随機噪音。我們假定ϵ是獨立同分布,服從高斯分布。根據中心極限定理得到如下結果:

線性回歸怎麼運用(線性回歸綜述)5

中心極限定理轉換

我們建立極大似然函數,即描述數據遵從當前樣本分布的概率分布函數。由于樣本的數據集獨立同分布,因此可以寫成如下形式:

線性回歸怎麼運用(線性回歸綜述)6

極大似然函數

我們選擇可以使似然函數最大化的θ,這就是極大似然估計的思想。為了方便計算,我們計算時通常對對數似然函數求最大值,即對兩邊取對數,推導結果如下:

線性回歸怎麼運用(線性回歸綜述)7

推導過程

由上述推導可知,最大化似然函數與最小化紅框部分是等價的(前面的1/2是為了後續計算方便的)。顯然,這一結果就是均方誤差,因此我們證明了用這個式子作為代價函數來優化線性回歸模型在統計學的角度上來說是合理的。

線性回歸的損失函數、代價函數與目标函數

首先明确損失函數、代價函數與目标函數的概念。損失函數度量的是單樣本預測的錯誤程度,損失函數值越小,模型就越好。代價函數度量的是全部樣本集的平均誤差。目标函數則是代價函數和正則化函數,也是模型最終要優化的函數。

從上述概念中可以發現,代價函數已經可以度量樣本集的平均誤差了,那麼我們為什麼還要設定目标函數呢?這是因為當模型複雜度增加時,有可能出現對訓練集模拟得很好,但是對測試集的效果卻不好,也就是我們所說的過拟合現象,我們也稱之為結構化風險。結構化風險最小化就是為了防止過拟合而提出來的策略。定義模型複雜度為J(F),則目标函數可表示為如下形式:

線性回歸怎麼運用(線性回歸綜述)8

目标函數

其中,λJ(F)我們稱為正則化,其目的就是防止過拟合。當訓練集本身存在噪聲時,拟合曲線對未知影響因素的拟合往往不是最好的。通常,随着模型複雜度的增加,訓練誤差會減少;但測試誤差會先增加後減小。我們的最終目的是使測試誤差達到最小,因此我們需要選取适合的目标函數。

線性回歸的優化方法

常見的優化方法有梯度下降法、最小二乘法矩陣、牛頓法和拟牛頓法。對于線性回歸模型,我們一般選用批随機梯度下降法(與随機梯度下降法不同,但現在我們所說的随機梯度下降往往是批随機梯度下降)來優化模型。推導過程如下:

線性回歸怎麼運用(線性回歸綜述)9

線性回歸随機梯度下降法推導

其中,下标j表示第j個參數,上标i表示第i個數據點。随機梯度下降法的優點是當數據點很多時,運行效率更高;缺點是由于每次隻針對一批樣本更新參數,未必能找到最快路徑達到最優值,甚至有時候會出現參數在最小值附近徘徊無法收斂。如果函數為非凸函數,有可能找到的并非全局最優值,而是局部最優值。

線性回歸的評價指标

線性回歸是典型的回歸問題,對于回歸問題,常用的評價指标有均方誤差(MSE)、均方根誤差(RMSE)和平均絕對誤差(MAE),但這些評價指标都無法消除量綱不一緻而導緻的誤差值特别大的問題,因此對于線性回歸,我們最常用的指标是R^2,可以避免量綱不一緻問題。

線性回歸怎麼運用(線性回歸綜述)10

R^2評價指标

其中,VAR為實際結果與預測結果的方差,從式子中可以看出,R^2能夠讓回歸模型可以成功解釋數據方差部分在數據固有方差中所占的比例,R^2越接近1,表示可解釋力度越大,模型拟合的效果也就越好。

使用sklearn實現一個簡單的線性回歸案例

sklearn(scikit-learn)是基于Python實現的機器學習工具以及簡單高效的數據挖掘和數據分析工具,其内部集成了常用的所有機器學習模型,線性回歸模型就包含在sklearn的linear_model庫中。因此,在使用時,我們需要将該線性回歸模型導入。

from sklearn.linear_model import LinearRegression

下面我們通過一個簡單的例子來感受一下線性回歸模型的整個流程。首先我們利用NumPy生成數據:

import numpy as np from sklearn.linear_model import LinearRegression # 生成随機數種子 使每次産生的随機數都一樣 np.random.seed(49) x = np.random.rand(500, 3) print(x) # 構建映射關系,模拟真實的數據待預測值 # 映射關系設置為y = 2.1 2.8*x1 5.4*x2 y = x.dot(np.array([2.1, 2.8, 5.4]))

這裡生成了一組映射關系為y = 2.1 2.8*x1 5.4*x2的數據,然後就可以利用sklearn的線性回歸模型來訓練模型并将訓練好的模型用于預測。

# 生成模型 lr = LinearRegression(fit_intercept=True) # 訓練模型 lr.fit(x, y) print("訓練的參數值結果為:%s" % (lr.coef_)) # 評估模型 print('R^2為:%s' % (lr.score(x, y))) # 預測目标值 x_test = np.array([2, 4, 5]).reshape(1,-1) y_test = lr.predict(x_test) print("預測值為: %s" % (y_test))

運行結果如下所示:

線性回歸怎麼運用(線性回歸綜述)11

運行結果

由于我們設置的線性回歸模型比較簡單,隻有三個參數,因此它的準确度達到了100%。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved