機器學習十大經典算法——線性迴歸

前言:爲什麼要做這期博客呢,主要有兩個意願,一個是想買米10,希望各位帥哥美女支持一下,覺得不錯就打賞下,另爲一個是想將十大經典算法的推導以及思路清清楚楚的理下,希望這整期教程對大家有幫助,第一期咱們講線性迴歸。這期不似之前的實踐或者接的單子,主要是將之前北風網學到的東西做一個彙總,若有不對或者缺點,希望大家提出,大家一起進步。

1:什麼是線性迴歸

用來構建一個算法模型(函數)來做屬性(x)與標籤之間的映射關係,在算法的學習過程中,試圖尋找函數,使得參數之間的關係擬合性最好。

2:圖解

圖中的點爲數據的分佈,直線爲一個映射函數,如何才能找到一個最好的函數?

 將圖中的d1+d2+d3+d4+d5+d6+d7累加在一起最小,是不是就是最好的函數?

所以我們構造出函數

 最終要求是計算出 的值,並選擇最優的值構成算法公式,我們就要用到似然函數

 我們將原屬數據進行變換,並且帶入

這個式子表示當一定時,x取值下y的概率密度爲多少,咱們需要的是越大越好,所以考慮取最大值,但是這個只是一個變量,咱們需要將所有的變量加起來,組成聯合概率,聯合概率等於各個概率的乘積,所以得出方程爲:

 我們現在要求的是最大值,但是乘積的最大值很難求出,所以通過取對數,將乘法轉化爲加法

 最後化簡得到

 我們要求的是最大值,之前的都是常量,所以我們將後的提取,得到

 之後我們有三種辦法將變量求出,我這裏主要用梯度下降的算法,進行求解,具體梯度下降我會在之後的系列中更新,梯度下降主要求偏導,我講具體的過程列出

 

 之後有BDG,SDG,MBDG求出每次更新的

 到這算是大致的線性迴歸,其餘的是優化過程,如果時間充裕,我將會一點一點出的,下面主要給大家一些代碼,用這些代碼可以快速的用sklearn庫進行模型構建,具體可以看我

十大經典算法_家庭用電預測:線性迴歸算法(時間與功率&功率與電流之間的關係)(https://blog.csdn.net/qq_39309652/article/details/104349850

from sklearn.linear_model import LinearRegression
## 模型訓練
lr = LinearRegression()
lr.fit(X_train, Y_train) ## 訓練模型
## 模型校驗
y_predict = lr.predict(X_test) ## 預測結果

print("訓練R2:",lr.score(X_train, Y_train))
print("測試R2:",lr.score(X_test, Y_test))
mse = np.average((y_predict-Y_test)**2)
rmse = np.sqrt(mse)
print("rmse:",rmse)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章