?

基于Python的線性回歸最小二乘算法的設計與實現

2021-02-28 12:09王立友
電腦知識與技術 2021年35期
關鍵詞:線性回歸最小二乘法深度學習

王立友

摘要:隨著科學技術的不斷進步,以深度學習為代表的人工智能技術應用逐步走入人們的視野。從車牌、人臉、語音的識別到推薦系統及自動駕駛,人工智能技術的應用越來越貼近人們的日常生活,給予人們極好的切身體驗。得益于大數據的迅猛發展、計算能力的增強、學習算法的成熟,越來越多的人開始關注這個“全新”的研究領域:深度學習。深度學習(Deep Learning)隸屬于機器學習( Machine Learning)領域范疇。深度學習以神經網絡為主要模型,探索學習樣本的內在表現規律。在學習過程中,獲得文本、圖像和音頻等數據的解釋信息。其終極目標是利用計算機模擬人的大腦進行工作,擁有自主分析學習能力,精準地識別音頻、文本、圖像等數據信息。深度學習是一個復雜的機器學習算法,該文將利用 Python 語言對深度學習中的線性回歸最小二乘法的設計與實現做進一步探討,希望讓許多深度學習的初學者和愛好者對深度學習有一個最簡單明了的認知。

關鍵詞:深度學習;Python;線性回歸;最小二乘法

中圖分類號:TP391 ? ? ?文獻標識碼:A

文章編號:1009-3044(2021)35-0123-02

1 深度學習概述

深度學習是機器學習的一個極為重要分支,深度學習基于人工神經網絡的研究[1]。組合若干低層特征,以便于生成更高層次的表征屬性特征,發現數據的分布式特征表述。其本質是對數據進行表征學習的相關算法。例如描述圖像的觀測值過程中,能夠采用多種不同的形式進行表述。如使用像素強度值向量表示;又或抽象為多條邊、特定形狀區域等。近年來監督式深度學習算法(以反饋算法訓練 CNN、LSTM 等)獲得了空前的成功,而基于半監督或無監督的算法(如 DBM、DBN)仍處在研究階段并已獲得不錯的進展。

探索深度學習的初衷,在于建立模擬人腦的神經系統,進行數據的分析和學習。它參照人腦神經工作模式來解釋數據[2-3],例如識別圖像、聲音、文本等。 上述信息的輸入和輸出會形成一對一的映射模式 ,其中的計算問題則利用一個流向圖(flow graph)來闡述。圖中各節點(node)均為一個基本計算單元,計算結果被應用到該節點的子節點的值。進而形成一個計算集合,被允許在各節點和可能的圖結構里。其中,輸入節點無前繼節點,輸出節點無后續節點。該流向圖的一個特別屬性是深度(depth):從一個輸入到一個輸出的最長路徑的長度(含多個隱層的深度學習模型如圖1 所示)。

2 線性回歸及最小二乘法

2.1 線性回歸

線性回歸是指在現有數據集上構建一個線性模型,以便于擬合這個數據集特征向量中多個分量之間的關系[4]??梢酝ㄟ^已經擬合好的線性模型來預測“新數據”的預期結果。二維線性模型為一條直線,三維的則是一個平面。目前,關于線性回歸的算法實現,最小二乘法是應用最為廣泛的算法之一[5]。對于數據集,利用線性模型來擬合其數據關系,相對于一維或多維數據,均可通過構建線性模型的方法來實現。例如,房子估價問題:當已知房子的面積、臥室數量和房屋價格之間的關系時,在得知一個新的房子信息后,如何進行預測,進而得到對應新房子的價格,假設面積用[x1]表示,臥室數量用[x2]表示,則房屋價格[h(x)]是關于面積與臥室數量的一次線性方程:

[h(x)=hθ(x)=θ0+θ1x1+θ2x2]

該線性模型僅包含兩個特征分量:面積和臥室數量。而大多數情況下,擬合的模型可能含有若干個特征分量,那么線性模型中對應的權重值[θ]同樣需要相同的量??梢允褂镁仃囅蛄縼磉M行表示:[hθ=θTX]。

2.2 最小二乘法

向量[θ](長度為[n])中所有的分量都是預測表達式函數[h(x)]中相對應參數,矩陣[X(m*n)]構成了數據集中所有樣本特征向量所組成的矩陣。數據集中的實際值使用向量[Y](長度為[m])表示,若通過實際值來構建方程組,參數向量[θ]中的對應值即為我們所求未知量。通常狀況下,設定一個超定方程組(無確定解),只能求出超定方程組的最優解。利用構建相應的損失函數權衡估值和實際值之間的誤差,將最小誤差損失函數作為約束條件求出參數向量最優解。函數[J(θ)]即為損失函數,它計算出數據集中每一個樣例的估值和實際值的平方差并求取平均,即最小二乘法。最小二乘法經數學推導最終得到一個標準方程,該方程的解即為最優的參數向量。即:

[J(θ)=12i=1m(hθ(x(i))-y(i))2]

3 線性回歸最小二乘法的Python程序實現

3.1 實驗數據來源

本文實驗數據來源于互聯網上的網絡資源。數據主要內容為:某大城市用戶一天的用電時間、用電功率。編寫Python程序,以便實現輸出用戶用電時間和用電功率之間的線性關系的真實值和采用線性回歸最小二乘法的預測值,并對兩者之間進行比對。

3.2 程序實現

編寫主程序并運行,實現線性回歸最小二乘法,具體實現的主要代碼如下:

from sklearn.linear_model import LinearRegression ?# 導入線性回歸模型

from sklearn.model_selection import train_test_split ?# 導入訓練測試集

from sklearn.preprocessing import StandardScaler ? ?# 導入數據標準化

import numpy as np

import pandas as pd

import matplotlib as mpl

import matplotlib.pyplot as plt

import time

path1 = 'datas/household_power_consumption.txt' #實驗數據所在路徑

df = pd.read_csv(path1, sep=';', low_memory=False)

# 異常數據的處理

new_df = df.replace('?', np.nan)

datas = new_df.dropna(axis=0, how='any')

Y = datas['Global_active_power'] # 提取Y的實際值

def data_format(dt):#格式化時間數據

t = time.strptime(' '.join(dt), '%d/%m/%Y %H:%M:%S') # 合并第一列和第二列中X的對應值,將t轉化為時間元組,并格式化t

return t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec

X = datas.iloc[:, 0:2] # 利用索引提取第一列和第二列的X的值

X = X.apply(lambda x: pd.Series(data_format(x)), axis=1)

# 對數據集進行測試、訓練集劃分,X: 特征矩陣(類型一般為DataFrame)

# Y: 特征對應的Label標簽或目標屬性(類型一般為Series)

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

ss = StandardScaler()

X_train = ss.fit_transform(X_train) ?# 標準化

X_test = ss.transform(X_test)

lr = LinearRegression(fit_intercept=True) ?# fit 模型訓練

lr.fit(X_train, Y_train) ?# 對模型進行訓練

y_predict = lr.predict(X_test)

print('訓練集上的R^2:', lr.score(X_train, Y_train))

print('測試集上的R^2:', lr.score(X_test, Y_test))

mse = np.average((y_predict - Y_test) ** 2)

rmse = np.sqrt(mse)

print('rmse:', rmse)

print('模型訓練后的系數:', end='')

print(lr.coef_)

print('模型訓練后的截距:', end='')

print(lr.intercept_)

t = np.arange(len(X_test))

plt.figure(facecolor='w')

plt.plot(t, Y_test, 'r-', linewidth=2, label='真實值')

plt.plot(t, y_predict, 'g-', linewidth=2, label='預測值')

plt.legend(loc='upper left')

plt.title('線性回歸預測時間和功率之間的關系', fontsize=20)

plt.grid(b=True)

plt.show() #顯示時間和功率的真實值與預測值圖表

4 結束語

本研究利用Python程序實現了線性回歸最小二乘算法,預測值與真實值之間存在一定的差異,希望在以后的研究中逐步改進現有算法,爭取獲得更好的實驗效果。

參考文獻:

[1] 汪飛.基于人工智能下深度學習的現狀及趨勢研究[J].電腦迷,2018(10):140-141.

[2] 王梓橋,劉沛豐,郝峰,等.基于深度學習的手寫數字識別技術應用[J].數字技術與應用,2018,36(11):78-79.

[3] 史聰慧.基于深度學習的智能參考咨詢服務模式[J].電腦知識與技術,2020,16(3):205-206,229.

[4] 李嚴明.基于機器學習的氣象因素對小麥產量影響的分析預測[D].鄭州:河南農業大學,2019.

[5] 羅潤林,阮懷寧,朱昌星.基于粒子群-最小二乘法的巖石流變模型參數反演[J].遼寧工程技術大學學報(自然科學版),2009,28(5):750-753.

【通聯編輯:謝媛媛】

猜你喜歡
線性回歸最小二乘法深度學習
馬爾科夫鏈在市場預測中的應用
國道公路養護管理與規劃研究
一種改進的基于RSSI最小二乘法和擬牛頓法的WSN節點定位算法
MOOC與翻轉課堂融合的深度學習場域建構
大數據技術在反恐怖主義中的應用展望
最小二乘法基本思想及其應用
企業退休金收支平衡的研究
基于最小二乘擬合的太陽影子定位模型
企業退休金收支平衡的模型分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合