機器學習_最小二乘法,線性迴歸與邏輯迴歸
1. 線性迴歸
線性迴歸是利用數理統計中迴歸分析,來確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法。
直觀地說,在二維情況下,已知一些點的X,Y座標,統計條件X與結果Y的關係,畫一條直線,讓直線離所有點都儘量地近(距離之和最小),用直線抽象地表達這些點,然後對新的X預測新的Y。具體實現一般使用最小二乘法。
線性迴歸的優點是理解和計算都相對簡單,缺點是無法解決非線性問題。
2. 最小二乘法
1) 原理
最小二乘法(ordinary least squares,簡稱OLS)的核心就是保證所有資料偏差的平方和最小(“平方”的在古時侯的稱謂為“二乘”)。
如果有一個變數,我們用直線擬合一些點,直線方是y’=ax+b,每點偏差是y-y’,其中y是實際值,y’是估計值。sum((y-y’)2)最小時,直線擬合最好。上試代入y’,可得M=sum((y-(ax+b))2),對它求導取極值。此時,x,y是已知的,未知的是a和b,所以分別求M對a和b的偏導,解出的a,b即迴歸係數,記作W。線性迴歸就是計算引數W的過程。有了W,就能將Y表示成多屬性的加權線性組合。
假設有兩個變數(多元迴歸)y’=w0+w1x1+w2x2,就變成了一個三維的問題,同樣也用誤差平方最小的方法M=sum((y’-(w0+w1x1+w2x2))^2),M對w0,w1,w2的偏導為0處是極值,然後解出w0,w1,w2。更多元的情況見下面的公式推導。
預測時,用迴歸係數乘以輸入值,再將結果加在一起就得到了預測值,一般用矩陣乘法實現。
2) 公式推導
通過矩陣運算求解迴歸係數的W={w0,w1,w2…}
3. 線性迴歸程式碼實現
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
# 訓練
def standRegres(xArr,yArr):
m,n = np.shape(xArr)
xMat = np.mat(np.ones((m, n+1))) # 加第一列設為1,為計算截距
x = np.mat(xArr)
xMat[:,1:n+1] = x[:,0:n];
yMat = np.mat(yArr).T
xTx = xMat.T*xMat
if np.linalg.det(xTx) == 0.0:
print("This matrix is sigular, cannot do inverse") #行列式的值為0,無逆矩陣
return
ws = xTx.I*(xMat.T*yMat)
return ws
# 預測
def predict(xArr, ws):
m,n = np.shape(xArr)
xMat = np.mat(np.ones((m, n+1))) # 加第一列設為1, 為計算截距
x = np.mat(xArr)
xMat[:,1:n+1] = x[:,0:n];
return xMat*ws
if __name__ == '__main__':
x = [[1], [2], [3], [4]]
y = [4.1, 5.9, 8.1, 10.1]
ws = standRegres(x,y)
print(ws)
print(predict([[5]], ws))
# 畫圖
plt.scatter(x, y, s=20)
yHat = predict(x, ws)
plt.plot(x, yHat, linewidth=2.0, color='red')
plt.show()
注意:迴歸係數的個數應該比屬性多一個,用於表示截距,在sklearn中也是這樣,只不過截距相關的放在intercept_中,其它放在coef_中。
4. 邏輯迴歸
邏輯迴歸,也叫邏輯斯蒂迴歸,logistic regression。
有監督學習常分成:分類和迴歸,不要一聽xx迴歸,以為就是預測具體值了,這裡的“邏輯迴歸”其實是個分類的方法。之所以叫邏輯迴歸,是因為最常見用它處理二分類問題,即分類為0或1(邏輯值)。如圖所示,它是用一條直線,將例項分類。
與線性迴歸不同的只是這裡的Y是分類0或1,而不是具體數值。所以它叫廣義線性模型。
把具體資料對應成0,1的方法是sigmoid,sigmoid函式只能分兩類,而softmax能分多類,softmax是sigmoid的擴充套件。
5. Sigmoid函式
Sigmoid函式,就是S型函式,這就是一個數值和邏輯值間轉換的工具,如下圖示,它把X從負無窮到正無窮對映到Y的0-1之間。很多時候需要求極值,而0,1分類不是連續的,不可導,所以用一個平滑的函式擬合邏輯值,因為用了它,所以這叫邏輯迴歸。
相關文章
- 機器學習 | 線性迴歸與邏輯迴歸機器學習邏輯迴歸
- 線性迴歸與邏輯迴歸邏輯迴歸
- 機器學習:邏輯迴歸機器學習邏輯迴歸
- 機器學習之邏輯迴歸機器學習邏輯迴歸
- 機器學習整理(邏輯迴歸)機器學習邏輯迴歸
- 對比線性迴歸、邏輯迴歸和SVM邏輯迴歸
- 機器學習:線性迴歸機器學習
- 線性迴歸,邏輯迴歸的學習(包含最小二乘法及極大似然函式等)邏輯迴歸函式
- 【小白學AI】線性迴歸與邏輯迴歸(似然引數估計)AI邏輯迴歸
- 機器學習簡介之基礎理論- 線性迴歸、邏輯迴歸、神經網路機器學習邏輯迴歸神經網路
- [DataAnalysis]機器學習演算法——線性模型(邏輯迴歸+LDA)機器學習演算法模型邏輯迴歸LDA
- 人工智慧-機器學習-邏輯迴歸人工智慧機器學習邏輯迴歸
- 【機器學習基礎】邏輯迴歸——LogisticRegression機器學習邏輯迴歸
- 機器學習之線性迴歸機器學習
- 機器學習:線性迴歸(下)機器學習
- 機器學習整理(線性迴歸)機器學習
- 【機器學習】邏輯迴歸過程推導機器學習邏輯迴歸
- 機器學習之邏輯迴歸:計算概率機器學習邏輯迴歸
- 機器學習之邏輯迴歸:模型訓練機器學習邏輯迴歸模型
- 機器學習之使用Python完成邏輯迴歸機器學習Python邏輯迴歸
- 【6%】100小時機器學習——邏輯迴歸機器學習邏輯迴歸
- 機器學習筆記-多類邏輯迴歸機器學習筆記邏輯迴歸
- 機器學習之邏輯迴歸:計算機率機器學習邏輯迴歸計算機
- 【機器學習】線性迴歸預測機器學習
- 機器學習5-線性迴歸機器學習
- 從零開始學機器學習——邏輯迴歸機器學習邏輯迴歸
- 邏輯迴歸邏輯迴歸
- 機器學習入門 - 快速掌握邏輯迴歸模型機器學習邏輯迴歸模型
- 手擼機器學習演算法 - 邏輯迴歸機器學習演算法邏輯迴歸
- 對數機率迴歸(邏輯迴歸)原理與Python實現邏輯迴歸Python
- 【機器學習】線性迴歸python實現機器學習Python
- 【機器學習】線性迴歸原理介紹機器學習
- 【機器學習】線性迴歸sklearn實現機器學習
- 機器學習實戰(一)—— 線性迴歸機器學習
- 機器學習演算法--邏輯迴歸原理介紹機器學習演算法邏輯迴歸
- Python邏輯迴歸Python邏輯迴歸
- 邏輯迴歸模型邏輯迴歸模型
- 模式識別與機器學習——迴歸的線性模型模式機器學習模型
- 機器學習-----線性迴歸淺談(Linear Regression)機器學習