机器学习线性回归算法实验报告_从零实现机器学习算法(九)线性回归
1. 回歸簡介
在客觀世界中普遍存在著變量與變量之間的關系。變量之間的關系一般可以分為確定關系和不確定關系。確定關系是指變量之間的關系可以通過函數關系來表達。非確定關系即所謂的相關關系。而回歸分析是研究非確定關系的方法,可以幫助我們從一個或一系列變量的值去估計另一個變量的值。
線性回歸模型為
通過最小化損失函數
求得最優的
。具體的方法有線性回歸、局部加權回歸、嶺回歸、Lasso回歸和逐步線性回歸等。2. 回歸模型
線性回歸
線性回歸求解
有兩種方法,一種是使用梯度下降法求解,另一種是通過正規方程求解。梯度下降法前面已經介紹過了,下面介紹下正規方程的解法。對損失函數求導
令導數等于0,得
解得
其中
為訓練集, 為訓練集標簽。線性回歸代碼如下:def局部加權回歸
線性回歸容易出現欠擬合的現象,因為它求的是具有最小均方差的無偏估計。為了解決這一問題,局部加權回歸在待預測點附近的每一個點賦予一定的權重,然后在這個自己是基于最小均方差來進行普通的回歸分析。對于局部加權回歸來說其損失函數為
和線性回歸類似,對損失函數求導,然后令導數為零可得
對于局部加權回歸的權重
類似于支持向量機的核函數,常用的為高斯核函數局部加權回歸代碼:
def嶺回歸
在做回歸分析時,有時候特征維度比樣本數量多,此時輸入的特征矩陣不是滿秩的,因此不存在其逆矩陣。為了解決這個問題,嶺回歸在矩陣
上加上一個 使得矩陣非奇異。實際上,對于嶺回歸來說,其損失函數加上一個L2正則化項,即和線性回歸類似,對損失函數求導,然后令導數為零可得
嶺回歸代碼如下:
defLasso回歸
Lasso與嶺回歸類似,Lasso回歸也是在損失函數上增加正則化項。但是Lasso正價的是L1正則化項,即
由于L1范數采用的是絕對值導致Lasso不是處處可導的,因此不能使用梯度下降或者牛頓法來求解。這里使用坐標下降法求得最優的
值。坐標下降法通過每次沿一個方向優化獲取最小值,即坐標下降法可以得到閉式解
其中
為系數。Lasso回歸代碼:
def逐步線性回歸
逐步線性回歸和Lasso算法類似,它采用貪心算法,每一次所做的決策是對權重增加或者減少一個很小的值。
逐步線性回歸代碼如下:
def3. 總結與分析
線性回歸分析的內容還是蠻多的,其中很多方法都有相應的改進算法,這里值介紹了它們的基礎算法。最后貼一下本文實現的線性回歸與Sklearn檢測性能的比較。
Sklearn線性回歸本文線性回歸發現兩者運行時間差不多,但是Sklearn的回歸效果要好一些,本文的到后來就飄了。
本文相關代碼和數據集:
https://github.com/Ryuk17/MachineLearning?github.com參考文獻:
[1] 【機器學習】一文讀懂正則化與LASSO回歸,Ridge回歸
[2] Peter Harrington, Machine Learning IN ACTION
總結
以上是生活随笔為你收集整理的机器学习线性回归算法实验报告_从零实现机器学习算法(九)线性回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个字节为什么是8位(为什么一个字节是8
- 下一篇: 支付宝账户是什么 支付宝账户是指什么意思