多元線性回歸模型


多元線性回歸模型

一、總結

一句話總結:

【也就是多元且一次的回歸,系數是一次自然是線性】:回歸分析中,含有兩個或者兩個以上自變量,稱為多元回歸,若自變量系數為1,則此回歸為多元線性回歸。

 

1、一元線性回歸 與 二元線性回歸圖像(要回憶圖)?

一元線性回歸圖形為一條直線。而二元線性回歸,擬合的為一個平面。

 

 

 

二、機器學習(多元線性回歸模型&邏輯回歸)

轉自或參考:機器學習(多元線性回歸模型&邏輯回歸)
https://blog.csdn.net/weixin_44638960/article/details/104081680

多元線性回歸

定義:回歸分析中,含有兩個或者兩個以上自變量,稱為多元回歸,若自變量系數為1,則此回歸為多元線性回歸。

(特殊的:自變量個數為1個,為一元線性回歸)多元線性回歸模型如下所示:

如上圖所示,一元線性回歸圖形為一條直線。而二元線性回歸,擬合的為一個平面。多元線性回歸擬合出的圖像為以超平面;

邏輯回歸(分類問題的處理)

求解步驟:1)確定回歸函數 (通常用Sigmoid函數) ; 2)確定代價函數(含有參數);3)求解參數(梯度下降/最大似然)

1)Sigmoid函數可以作為二分類問題的回歸函數,而且此函數為連續的且通過0為界限分為大於0.5與小於0.5的兩部分;

Sigmoid函數形式為:

Sigmoid函數圖像為:(連續可導滿足我們的需求,便於后續參數的求解

第一步:構造預測函數為:

在這里就是將sigmoid函數中的自變量部分替換為多元線性回歸模型

第二步:構造損失函數:

這里的y為樣本的真實值,根據預測值與真實值之間的關系構造損失函數,求解預測函數參數使得其損失值最小。

結合函數圖像當真實值y=1時,預測值越接近1則代價越小(反之越大),同理可得真實值y=0的情況;

由此我們根據y的取值不同構造出損失函數:

第三步:求解函數參數:在這里采用梯度下降法求解參數

通過對參數求偏導數可得變化率為,並通過此關系式求解參數;

邏輯回歸實戰(Fight)

1)導入所需要的庫文件以及獲取數據集合(數據集合在最底部^_^)

import numpy as np
import matplotlib.pyplot as plt
import  math
#導入必備的包

positive = [] #正值點
negative = [] #負值點
#導入數據
dataSet = [] #數據點
def functionexp(k1,k2,x,y,b):
    return math.exp(k1 * x + k2 *y + b)  #e^(θx+b)

#數據集合獲取
with open('testSet.txt') as f:
    for line in f:
        line = line.strip('\n').split('\t')
        if line[2]=='1':
            positive.append([float(line[0]),float(line[1])])
        else:
            negative.append([float(line[0]),float(line[1])])
        dataSet.append([float(line[0]),float(line[1]),int(line[2])])

2)根據樣本集合求解參數(使用梯度下降法)

#求解參數
k1 = 0
k2 = 0
b = 0
step =2500 #學習步長
learnrate = 1 #學習率
for i in range(step):
    temp0 = 0
    temp1 = 0 #初始化參數
    temp2 = 0
    for j in dataSet:
        e = functionexp(k1, k2, j[0], j[1], b)
        temp0 = temp0 + (e /( 1 + e ) - j[2] ) / len(dataSet)
        temp1 = temp1 + (e / (1 + e ) - j[2] ) * j[0]/ len(dataSet)
        temp2 = temp2 + (e / (1 + e ) - j[2] ) * j[1] / len(dataSet)
    k1 = k1 - temp1 * learnrate
    k2 = k2 - temp2 * learnrate
    b  = b  - temp0 * learnrate

3)繪制樣本散點圖以及決策邊界(擬合曲線)

#繪制樣本點以及分類邊界
dataX = []#樣本點X集合
dataY = []#樣本點Y集合
for i in positive:
    dataX.append(i[0])
    dataY.append(i[1])
plt.scatter(dataX,dataY,c='red')#繪制正樣本散點圖
dataX.clear()
dataY.clear()
for i in negative:
    dataX.append(i[0])
    dataY.append(i[1])
plt.scatter(dataX,dataY,c='blue')#繪制負樣本散點圖
XX=[-3,3]
plt.plot(XX,(-k1/k2)*np.array(XX)-b/k2,'yellow')
plt.show()

運行結果如下圖所示(這里沒有過多使用numpy庫中的矩陣運算,僅限理解邏輯回歸)

up通過sklearn進行邏輯回歸:

import numpy as np
import matplotlib.pyplot as plt
import  math
from sklearn import linear_model
from sklearn import preprocessing
from sklearn.metrics import classification_report

positive = [] #正值點
negative = [] #負值點
#導入數據
dataSet = [] #數據點
X=[]
Y=[]

#數據集合獲取
with open('testSet.txt') as f:
    for line in f:
        line = line.strip('\n').split('\t')
        if line[2]=='1':
            positive.append([float(line[0]),float(line[1])])
        else:
            negative.append([float(line[0]),float(line[1])])
        dataSet.append([float(line[0]),float(line[1]),int(line[2])])
        X.append([float(line[0]),float(line[1])])
        Y.append([int(line[2])])

#求解參數
logistic = linear_model.LogisticRegression()
logistic.fit(np.array(X),np.array(Y))

#繪制樣本點以及分類邊界
dataX = []#樣本點X集合
dataY = []#樣本點Y集合
for i in positive:
    dataX.append(i[0])
    dataY.append(i[1])
plt.scatter(dataX,dataY,c='red')#繪制正樣本散點圖
dataX.clear()
dataY.clear()
for i in negative:
    dataX.append(i[0])
    dataY.append(i[1])
plt.scatter(dataX,dataY,c='blue')#繪制負樣本散點圖
XX=[-3,3]
plt.plot(XX,(-np.array(XX)*logistic.coef_[0][0]-logistic.intercept_)/logistic.coef_[0][1],'black')
plt.show()

回歸效果(感覺比自己寫的回歸效果好=_=)

總結 (關於邏輯回歸的思考以及正確率、召回率、F1指標)

在分類問題中可以靈活運用二分類的解法來求解多分類問題(是否問題,即是這一類的和不是這一類的),將多分類問題

轉化為二分類問題。而且采用的模型並不一定必須是多元線性模型(非線性模型),根據情況選取合適的模型。

正確率:檢索出來的條目有多少是正確的(相對於結果而言)。即:正確的個數在預測為正確總個數的比例;

召回率:正確的有多少被檢測出來了,即:檢測(預測)出的正確個數/總正確個數;

F1指標:2*正確率*召回率/(正確率+召回率);(綜合反映上述兩個指標)

以上的指標都是介於0-1之間的,且數值越接近於1說明效果越好

-0.017612	14.053064	0
-1.395634	4.662541	1
-0.752157	6.538620	0
-1.322371	7.152853	0
0.423363	11.054677	0
0.406704	7.067335	1
0.667394	12.741452	0
-2.460150	6.866805	1
0.569411	9.548755	0
-0.026632	10.427743	0
0.850433	6.920334	1
1.347183	13.175500	0
1.176813	3.167020	1
-1.781871	9.097953	0
-0.566606	5.749003	1
0.931635	1.589505	1
-0.024205	6.151823	1
-0.036453	2.690988	1
-0.196949	0.444165	1
1.014459	5.754399	1
1.985298	3.230619	1
-1.693453	-0.557540	1
-0.576525	11.778922	0
-0.346811	-1.678730	1
-2.124484	2.672471	1
1.217916	9.597015	0
-0.733928	9.098687	0
-3.642001	-1.618087	1
0.315985	3.523953	1
1.416614	9.619232	0
-0.386323	3.989286	1
0.556921	8.294984	1
1.224863	11.587360	0
-1.347803	-2.406051	1
1.196604	4.951851	1
0.275221	9.543647	0
0.470575	9.332488	0
-1.889567	9.542662	0
-1.527893	12.150579	0
-1.185247	11.309318	0
-0.445678	3.297303	1
1.042222	6.105155	1
-0.618787	10.320986	0
1.152083	0.548467	1
0.828534	2.676045	1
-1.237728	10.549033	0
-0.683565	-2.166125	1
0.229456	5.921938	1
-0.959885	11.555336	0
0.492911	10.993324	0
0.184992	8.721488	0
-0.355715	10.325976	0
-0.397822	8.058397	0
0.824839	13.730343	0
1.507278	5.027866	1
0.099671	6.835839	1
-0.344008	10.717485	0
1.785928	7.718645	1
-0.918801	11.560217	0
-0.364009	4.747300	1
-0.841722	4.119083	1
0.490426	1.960539	1
-0.007194	9.075792	0
0.356107	12.447863	0
0.342578	12.281162	0
-0.810823	-1.466018	1
2.530777	6.476801	1
1.296683	11.607559	0
0.475487	12.040035	0
-0.783277	11.009725	0
0.074798	11.023650	0
-1.337472	0.468339	1
-0.102781	13.763651	0
-0.147324	2.874846	1
0.518389	9.887035	0
1.015399	7.571882	0
-1.658086	-0.027255	1
1.319944	2.171228	1
2.056216	5.019981	1
-0.851633	4.375691	1
-1.510047	6.061992	0
-1.076637	-3.181888	1
1.821096	10.283990	0
3.010150	8.401766	1
-1.099458	1.688274	1
-0.834872	-1.733869	1
-0.846637	3.849075	1
1.400102	12.628781	0
1.752842	5.468166	1
0.078557	0.059736	1
0.089392	-0.715300	1
1.825662	12.693808	0
0.197445	9.744638	0
0.126117	0.922311	1
-0.679797	1.220530	1
0.677983	2.556666	1
0.761349	10.693862	0
-2.168791	0.143632	1
1.388610	9.341997	0
0.317029	14.739025	0

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM