1. 程式人生 > >python手擼線性迴歸及引數解釋

python手擼線性迴歸及引數解釋

線性迴歸,簡單的理解,在二維空間中,找到一條直線去儘可能的擬合樣本資料,給出新的樣本x,可以預測其y值,y是連續值,分類是離散值,如圖1所示;如果是高維空間,那就是找到一個超平面去擬合,當然也可以是曲線;為了方便理解,以二維空間的直線為例,所謂找到最好的直線,就是找引數a和b,也就是theta[0],theta[1]。

         如何去衡量一條直線是否是最好,在迴歸問題中一般用預測值與真實值之間的距離來定義損失函式,如圖2所示,使損失函式值最小的直線就是最好的直線,注意,損失函式是圖中紅色線段的平方和,而不是綠色線段,m代表樣本的總數量,1/2是為了求導方便,可以與2次項約為1。


圖 1線性迴歸舉例



圖2 損失函式


         所以,線性迴歸的目標就是找到一組theta值,使損失函式最小,所以線性迴歸就變為求最小化J的問題。

         最小化J常用的方法是梯度下降,梯度下降是逐步減小損失的過程,方向就是梯度(梯度/導數的方向是變化最快的方向),學習速率a是步長,可以理解為沿著梯度的方向每次變化多少,梯度下降的原理如圖3所示,當走到最低點後,也就是損失最小的地方,此時梯度為0,theta將不再變化。


圖3 梯度下降原理圖

         下面就用python來實現一個簡單的線性迴歸模型


圖4 讀入資料並畫出散點圖



圖5 定義損失函式、梯度下降函式並使用學習速率0.01畫出損失變化圖


圖6 畫出自實現的線性迴歸與sklearn中的模型做比較


圖7 損失函式與theta的變化關係

下面我們來看一下學習速率a和迭代次數對模型的影響,程式碼下所示



圖8是迭代次數為20000,學習速率分別是0.0001,0.001,0.003,0.01時,cost隨迭代次數的變化曲線,可以看出a越大,收斂越快,能夠越快的取到最優解,而當a取0.0001和0.001時,所有迭代完成後,都沒有達到最優;不斷調大迭代次數,發現當迭代次數到500000時,a=0.0001仍沒有收斂。Andrew在其機器課程中提到a的選擇一般按照如下策略:從一個較小的a,比如0.001,然後每次增大3倍(0.003,0.01……)在訓練集開始嘗試,畫出迭代次數與cost的變化曲線,取一個略小於最大值(使cost下降最快)的a應用在測試集,這樣能加快訓練速度。如果a的值取的太大會怎樣,圖14畫出a取0.03時的變化曲線,可以看出損失函式不能收斂,當a太大時,會出現震盪不收斂的情況,我們可以這樣來理解,如果a取100000000,在向下的時候,因為步子太大,就可能跨過最低點,甚至超過對稱點,再往上走。



圖8 迭代20000次


圖9 迭代50000次


圖10迭代100000次


圖11迭代200000次


圖12迭代500000次


圖13迭代1000000次



圖14 a=0.03


相關推薦

python線性迴歸引數解釋

線性迴歸,簡單的理解,在二維空間中,找到一條直線去儘可能的擬合樣本資料,給出新的樣本x,可以預測其y值,y是連續值,分類是離散值,如圖1所示;如果是高維空間,那就是找到一個超平面去擬合,當然也可以是曲線;為了方便理解,以二維空間的直線為例,所謂找到最好的直線,就是找引數a和

Python邏輯迴歸(logistic regression)

與線性迴歸用於預測連續值不同,邏輯歸回用於分類,原理與線性迴歸類似,定義損失函式,然後最小化損失,得到引數既模型,只不過損失的定義不同。 邏輯迴歸的假設如圖1所示,可以理解為線性迴歸外面套了一層sigmoid函式g(z),sigmoid函式影象如圖2所示,該函式有很好的數學

python資料探勘課程】十八.線性迴歸多項式迴歸分析四個案例分享

這是《Python資料探勘課程》系列文章,也是我這學期大資料金融學院上課的部分內容。本文主要講述和分享線性迴歸作業中,學生們做得比較好的四個案例,經過我修改後供大家學習,內容包括:    1.線性迴歸預測Pizza價格案例    2.線性迴歸分析波士頓房價案例    3.隨機

python資料探勘筆記】十八.線性迴歸多項式迴歸分析四個案例分享

python資料探勘課程】十八.線性迴歸及多項式迴歸分析四個案例分享 #2018-03-30 18:24:56 March Friday the 13 week, the 089 day SZ SSMR 1.線性迴歸預測Pizza價格案例 2.線性迴歸分析波士頓房

機器學習入門 線性迴歸梯度下降

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

線性迴歸RANSAC異常值清除演算法案例

線性迴歸及RANSAC異常值清除演算法案例 1、常規線性迴歸 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd import numpy as np from sklearn.linear_mo

梯度下降法求多元線性迴歸Java實現

 對於資料分析而言,我們總是極力找數學模型來描述資料發生的規律, 有的資料我們在二維空間就可以描述,有的資料則需要對映到更高維的空間。資料表現出來的分佈可能是完全離散的,也可能是聚整合堆的,那麼機器學習的任務就是讓計算機自己在資料中學習到資料的規律。那麼這個規律通常是可以用一些函式來描述,

Python_一元線性迴歸迴歸顯著性

1、資料準備 資料來源自《應用迴歸分析》(第四版) ## 火災損失表 ### 距離消防站km x = [3.4, 1.8, 4.6, 2.3, 3.1, 5.5, 0.7, 3.0, 2.6, 4.

機器學習筆記之七——邏輯迴歸簡單推導、softmax簡單理解以及sklearn中邏輯迴歸常用引數解釋

邏輯迴歸 對邏輯迴歸的理解:對線性迴歸的假設函式的 f(x) 又套上了一層sigmoid函式,即g(f(x)). 然後sigmoid函式是長這樣的: 它的影象長這樣: 對於線性迴歸得到的結果,再經過一層sigmoid函式,以x=0為界限,左邊為0,右邊為1,邏輯迴歸就是這樣一個二分類

python實現簡單線性迴歸

用python實現R的線性模型(lm)中一元線性迴歸的簡單方法,使用R的women示例資料,R的執行結果: > summary(fit) Call: lm(formula = weight ~ height, data = women) Resi

入門 | 貝葉斯線性迴歸方法的解釋和優點

本文對比了頻率線性迴歸和貝葉斯線性迴歸兩種方法,並對後者進行了詳細的介紹,分析了貝葉斯線性迴歸的

python,tensorflow線性迴歸Django網頁顯示Gif動態圖

1.工程組成 2.urls.py """Django_machine_learning_linear_regression URL Configuration The `urlpatterns` list routes URLs to views. For more information p

機器學習入門:線性迴歸梯度下降(附matlab程式碼)

 本文會講到: (1)線性迴歸的定義 (2)單變數線性迴歸 (3)cost function:評價線性迴歸是否擬合訓練集的方法 (4)梯度下降:解決線性迴歸的方法之一 (5)feature scaling:加快梯度下降執行速度的方法 (6)多變數線性迴歸 Linea

機器學習之線性迴歸程式碼示例

一、線性迴歸 線性迴歸一般用來做連續值的預測,預測的結果為一個連續值。因訓練時學習樣本不僅要提供學習的特徵向量X,而且還要提供樣本的實際結果(標記label),所以它是一種有監督學習。其中 X={x0,x1,...,xn}。 線性迴歸需要學習得到的是一個對映

python實現一元線性迴歸

最近在看中長期水文預報,打算使用python語言實現課本的模型並進行例項的計算結果的檢驗,為了監督自己和整理記錄自己實現的模型程式碼,打算寫部落格記錄自己的程式碼實現和部分思路。首先,自己不使用現成的模組實現的是一元線性迴歸模型,然後和模組實現對比,學習模組的呼叫。接下來是直接編寫的程式檔案,並計算

線性迴歸梯度下降演算法詳解

一、線性迴歸問題   迴歸最簡單的定義是,給出一個點集D,用一個函式去擬合這個點集,並且使得點集與擬合函式間的誤差最小,如果這個函式曲線是一條直線,那就被稱為線性迴歸,如果曲線是一條二次曲線,就被稱為二次迴歸。   總的來說,迴歸的目的就是建立一個迴歸方程用

機器學習:單變數線性迴歸梯度下降

***************************************** 注:本系列部落格是博主學習Stanford大學 Andrew Ng 教授的《機器學習》課程筆記。博主深感學過課程後,不進行總結很容易遺忘,根據課程加上自己對不明白問題的補充遂有此係列部落格。

Machine Learning(Stanford)| 斯坦福大學機器學習筆記--第二週(1.多元線性迴歸多元線性迴歸的梯度下降)

一.Multivariate Linear regression(多元線性迴歸) 現在起將開始介紹一種新的更為有效的線性迴歸形式。這種形式適用於多個變數或者多特徵量的情況。 在之前學習過的線性迴歸中

09 線性迴歸矩陣運算

09 線性迴歸及矩陣運算 線性迴歸 定義:通過一個或者多個自變數與因變數之間進行建模的迴歸分析。其中可以為一個或者多個自變數之間的線性組合。 一元線性迴歸:涉及到的變數只有一個 多元線性迴歸:變數兩個或以上 通用公式:h(w) = w0 + w1x1 + w2x2 + ....= wTx 其中w,x 為矩陣

線性迴歸之最小二乘法舉例推導python實現

1 核心思想 通過最小化方差,使得擬合結果無限接近目標結果。 2 通過一元線性方程舉例說明 3 通過python實現一元線性擬合 import matplotlib.pyplot as plt import random # 用於儲存x,y擬合數據 x = []