机器学习-线性回归(Linear Regression)
目錄
1.什么是線(xiàn)性回歸
2. 能夠解決什么樣的問(wèn)題
3. 一般表達(dá)式是什么
4. 如何計(jì)算
4.1 Loss Function--MSE
4.2 標(biāo)準(zhǔn)方程方法
5. 過(guò)擬合問(wèn)題如何解決
5.1 什么是L2正則化(嶺回歸)
5.2 什么場(chǎng)景下用L2正則化
5.3 什么是L1正則化(Lasso回歸)
5.4 什么場(chǎng)景下使用L1正則化
5.5 什么是ElasticNet回歸
5.6 ElasticNet回歸的使用場(chǎng)景
6. 線(xiàn)性回歸要求因變量服從正態(tài)分布?
7. 實(shí)現(xiàn)代碼
???????
1.什么是線(xiàn)性回歸
- 線(xiàn)性:兩個(gè)變量之間的關(guān)系是一次函數(shù)關(guān)系的——圖象是直線(xiàn),叫做線(xiàn)性。
- 非線(xiàn)性:兩個(gè)變量之間的關(guān)系不是一次函數(shù)關(guān)系的——圖象不是直線(xiàn),叫做非線(xiàn)性。
- 回歸:人們?cè)跍y(cè)量事物的時(shí)候因?yàn)榭陀^條件所限,求得的都是測(cè)量值,而不是事物真實(shí)的值,為了能夠得到真實(shí)值,無(wú)限次的進(jìn)行測(cè)量,最后通過(guò)這些測(cè)量數(shù)據(jù)計(jì)算回歸到真實(shí)值,這就是回歸的由來(lái)。
2. 能夠解決什么樣的問(wèn)題
對(duì)大量的觀測(cè)數(shù)據(jù)進(jìn)行處理,從而得到比較符合事物內(nèi)部規(guī)律的數(shù)學(xué)表達(dá)式。也就是說(shuō)尋找到數(shù)據(jù)與數(shù)據(jù)之間的規(guī)律所在,從而就可以模擬出結(jié)果,也就是對(duì)結(jié)果進(jìn)行預(yù)測(cè)。解決的就是通過(guò)已知的數(shù)據(jù)得到未知的結(jié)果。例如:對(duì)房?jī)r(jià)的預(yù)測(cè)、判斷信用評(píng)價(jià)、電影票房預(yù)估等。
3. 一般表達(dá)式是什么
w叫做x的系數(shù),b叫做偏置項(xiàng)。
4. 如何計(jì)算
4.1 Loss Function--MSE
利用梯度下降法找到最小值點(diǎn),也就是最小誤差,最后把 w 和 b 給求出來(lái)。
4.2 標(biāo)準(zhǔn)方程方法
可以利用Python進(jìn)行矩陣運(yùn)算直接求解,也可以使用sk-learn進(jìn)行求解
5. 過(guò)擬合問(wèn)題如何解決
使用正則化項(xiàng),也就是給loss function加上一個(gè)參數(shù)項(xiàng),正則化項(xiàng)有L1正則化、L2正則化、ElasticNet。加入這個(gè)正則化項(xiàng)好處:
- 控制參數(shù)幅度,不讓模型“無(wú)法無(wú)天”。
- 限制參數(shù)搜索空間
- 解決過(guò)擬合的問(wèn)題。
5.1 什么是L2正則化(嶺回歸)
方程:
表示上面的 loss function ,在loss function的基礎(chǔ)上加入w參數(shù)的平方和乘以?
?,假設(shè):
回憶以前學(xué)過(guò)的單位元的方程:
正和L2正則化項(xiàng)一樣,此時(shí)我們的任務(wù)變成在L約束下求出J取最小值的解。求解J0的過(guò)程可以畫(huà)出等值線(xiàn)。同時(shí)L2正則化的函數(shù)L也可以在w1w2的二維平面上畫(huà)出來(lái)。如下圖:
L表示為圖中的黑色圓形,隨著梯度下降法的不斷逼近,與圓第一次產(chǎn)生交點(diǎn),而這個(gè)交點(diǎn)很難出現(xiàn)在坐標(biāo)軸上。這就說(shuō)明了L2正則化不容易得到稀疏矩陣,同時(shí)為了求出損失函數(shù)的最小值,使得w1和w2無(wú)限接近于0,達(dá)到防止過(guò)擬合的問(wèn)題。
5.2 什么場(chǎng)景下用L2正則化
只要數(shù)據(jù)線(xiàn)性相關(guān),用LinearRegression擬合的不是很好,需要正則化,可以考慮使用嶺回歸(L2), 如果輸入特征的維度很高,而且是稀疏線(xiàn)性關(guān)系的話(huà), 嶺回歸就不太合適,考慮使用Lasso回歸。
5.3 什么是L1正則化(Lasso回歸)
L1正則化與L2正則化的區(qū)別在于懲罰項(xiàng)的不同:
求解J0的過(guò)程可以畫(huà)出等值線(xiàn)。同時(shí)L1正則化的函數(shù)也可以在w1w2的二維平面上畫(huà)出來(lái)。如下圖:
懲罰項(xiàng)表示為圖中的黑色棱形,隨著梯度下降法的不斷逼近,與棱形第一次產(chǎn)生交點(diǎn),而這個(gè)交點(diǎn)很容易出現(xiàn)在坐標(biāo)軸上。這就說(shuō)明了L1正則化容易得到稀疏矩陣。
5.4 什么場(chǎng)景下使用L1正則化
L1正則化(Lasso回歸)可以使得一些特征的系數(shù)變小,甚至還使一些絕對(duì)值較小的系數(shù)直接變?yōu)?,從而增強(qiáng)模型的泛化能力 。對(duì)于高的特征數(shù)據(jù),尤其是線(xiàn)性關(guān)系是稀疏的,就采用L1正則化(Lasso回歸),或者是要在一堆特征里面找出主要的特征,那么L1正則化(Lasso回歸)更是首選了。
5.5 什么是ElasticNet回歸
ElasticNet綜合了L1正則化項(xiàng)和L2正則化項(xiàng),以下是它的公式:
5.6 ElasticNet回歸的使用場(chǎng)景
ElasticNet在我們發(fā)現(xiàn)用Lasso回歸太過(guò)(太多特征被稀疏為0),而嶺回歸也正則化的不夠(回歸系數(shù)衰減太慢)的時(shí)候,可以考慮使用ElasticNet回歸來(lái)綜合,得到比較好的結(jié)果。
關(guān)于L1/L2正則化的解釋,可以參考這篇文章
機(jī)器學(xué)習(xí)中正則化項(xiàng)L1和L2的直觀理解_小平子的專(zhuān)欄-CSDN博客_l2正則
6. 線(xiàn)性回歸要求因變量服從正態(tài)分布?
我們假設(shè)線(xiàn)性回歸的噪聲服從均值為0的正態(tài)分布。 當(dāng)噪聲符合正態(tài)分布N(0,delta^2)時(shí),因變量則符合正態(tài)分布N(ax(i)+b,delta^2),其中預(yù)測(cè)函數(shù)y=ax(i)+b。這個(gè)結(jié)論可以由正態(tài)分布的概率密度函數(shù)得到。也就是說(shuō)當(dāng)噪聲符合正態(tài)分布時(shí),其因變量必然也符合正態(tài)分布。
在用線(xiàn)性回歸模型擬合數(shù)據(jù)之前,首先要求數(shù)據(jù)應(yīng)符合或近似符合正態(tài)分布,否則得到的擬合函數(shù)不正確。
7. 實(shí)現(xiàn)代碼
參考:https://github.com/Avik-Jain/100-Days-Of-ML-Code/blob/master/Code/Day2_Simple_Linear_Regression.md
# Step 1: Data Preprocessingimport pandas as pd import numpy as np import matplotlib.pyplot as pltdataset = pd.read_csv('studentscores.csv') X = dataset.iloc[ : , : 1 ].values Y = dataset.iloc[ : , 1 ].valuesfrom sklearn.cross_validation import train_test_split X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0) # Step 2: Fitting Simple Linear Regression Model to the training setfrom sklearn.linear_model import LinearRegressionregressor = LinearRegression()regressor = regressor.fit(X_train, Y_train)# Step 3: Predecting the ResultY_pred = regressor.predict(X_test)# Step 4: Visualization ## Visualising the Training resultsplt.scatter(X_train , Y_train, color = 'red')plt.plot(X_train , regressor.predict(X_train), color ='blue')## Visualizing the test resultsplt.scatter(X_test , Y_test, color = 'red')plt.plot(X_test , regressor.predict(X_test), color ='blue')?文章內(nèi)容參考:
ML-NLP/Machine Learning at master · NLP-LOVE/ML-NLP · GitHub此項(xiàng)目是機(jī)器學(xué)習(xí)(Machine Learning)、深度學(xué)習(xí)(Deep Learning)、NLP面試中常考到的知識(shí)點(diǎn)和代碼實(shí)現(xiàn),也是作為一個(gè)算法工程師必會(huì)的理論基礎(chǔ)知識(shí)。 - ML-NLP/Machine Learning at master · NLP-LOVE/ML-NLPhttps://github.com/NLP-LOVE/ML-NLP/tree/master/Machine%20Learning
總結(jié)
以上是生活随笔為你收集整理的机器学习-线性回归(Linear Regression)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 女大学生坐高铁拒绝补票刁难乘务长 后排乘
- 下一篇: AMD R7 7700 处理器降至 18