1. 程式人生 > >ML—線性迴歸系列(一)—線性迴歸

ML—線性迴歸系列(一)—線性迴歸

Andrew Zhang
Tianjin Key Laboratory of Cognitive Computing and Application
Tianjin University
Nov 25, 2015

本來以為線性迴歸是一個特簡單的東西,最近遇到很多基於線性迴歸的東西,才意識到我的無知。為了記錄最近的學習歷程,還是從線性迴歸開始系統總結一下吧。

一、線性迴歸
在實際問題中,在考慮變數 y 與另外一些變數 x1,x2,...,xn 之間關係的時候,為了簡化往往考慮線性模型
h

θ(x)=θ0+θ1x1+...+θnxn=θTx(1-1)
其中 x0=1 .

接下來,目標就是對於訓練資料集 (xi,yi),i=1,2,...,m 確定模型最合適的引數 θ 。採用最小二乘法,定義損失函式
J(θ)=12mi=1(hθ(x(i))y(i))2(1-2)


這裡採用最小二乘是因為最小二乘得到的引數 θ 優效性最好(在所有的線性無偏估計量裡面方差最小).

二、梯度下降法
最小二乘是無約束優化的凸問題,屬於最簡單的凸優化問題,有很多的數值求解的方法,參考參考部落格[1]。本文介紹梯度下降法求解最小二乘優化問題。
在梯度法中引數 θ 的更新規則為:
θj=θjαddθjJ(θ)(2-1)
其中 α

為學習率,可以設定為常數,也可以採用一維搜尋方法確定,具體可以檢視參考部落格[2]
ddθjJ(θ)
=ddθj(12mi=1(hθ(x(i))y(i))2
=12mi=12(hθ(x(i))y(i))x(i)j
=mi=1(hθ(x(i))y(i))x(i)j
(2-2)
公式(2-2)帶入公式(2-1)得到 θj 的更新規則為:
θj=θjαmi=1(hθ(x(i))y(i))x(i)j(2-3)
採用公式(2-3)的方法被稱為批梯度下降法。由於批梯度下降法對與每一次 θ 的更新需要計算所有的樣本,不利於線上計算,因此一般使用如下公式(2-4)所示的隨機梯度下降法(理解的時候只需要每次對引數進行更新迭代的時候假設只有一個樣本即可):
θj=θjα(hθ(x(i))y(i))x(i)j(2-4)
並且往往公式(2-4)的收斂效率要遠遠高於(2-3),可以更早的達到收斂。

三、最小二乘的概率解釋
在參考部落格3中說了線性規劃的最小二乘屬於廣義線性模型,並進行了推導,得到了
p(y|x,θ)=12πexp(12(yθTx)2)(3-1)
在這裡我們看一種更簡單點的解釋,假設輸出y與輸入x服從如下等式
y(i)=θTx(i)+ϵ(i)(3-2)
由於對於取樣的每個樣本都是獨立同分布的,假設誤差項 ϵ(i) ~ N(0,σ2)
則對於每一個取樣樣本有
p(ϵ(i)

相關推薦

ML線性迴歸系列線性迴歸

Andrew Zhang Tianjin Key Laboratory of Cognitive Computing and Application Tianjin University Nov 25, 2015 本來以為線性迴歸是一個特簡單的東西,最近遇到很多基於線性迴歸的東

通俗得說線性迴歸演算法線性迴歸初步介紹

一.從線性迴歸的故事說起 相信大家都聽過著名的博物學家,達爾文的大名,而今天這個故事的主人公就是他的表弟高爾頓。 高爾頓是一名生理學家,在1995年的時候,他研究了1078堆父子的身高,發現他們大致滿足一條公式,那就是 Y=0.8567+0.516*x 這條式子中的x指的是父親的身高,Y指的是兒子的身高。

機器學習十大算法系列——邏輯迴歸

  本系列博文整理了常見的機器學習演算法,大部分資料問題都可以通過它們解決: 1.線性迴歸 (Linear Regression) 2.邏輯迴歸 (Logistic Regression) 3.決策樹 (Decision Tree) 4.支援向量機(SV

Android UI布局-1.1線性布局-線性布局基礎

dev 其中 兩種 wid alt encoding 基本 ofo version LinearLayout,中文意思就是線性布局,是一種最簡單、最常用的布局方式,它將其中的組件以線性方式進行排列。其中有垂直和水平兩種布局方向,可以使用orientation屬性來對它的方向

機器學習筆記線性迴歸模型

一、線性迴歸模型 (一)引入—梯度下降演算法 1. 線性假設: 2. 方差代價函式:   3. 梯度下降:   4. : learning rate (用來控制我們在梯度下降時邁出多大的步子,值較大,梯度下降就很迅速) 值過大易造成無法收斂到minimum(每一步邁更大)

線性迴歸與特徵歸化(feature scaling)

吳恩達機器學習視訊 https://study.163.com/course/courseMain.htm?courseId=1004570029   線性迴歸是一種迴歸分析技術,迴歸分析本質上就是一個函式估計的問題(函式估計包括引數估計和非引數估計),就是找出因變數和自變數之

pytorch自我學習基礎 線性迴歸

pytorch 版本 0.2.0 #coding=utf-8 from matplotlib import pylab as plt import numpy as np import random import torch.nn as nn import torch fr

深入理解線性迴歸演算法

前言 線性迴歸演算法是公眾號介紹的第一個機器學習演算法,原理比較簡單,相信大部分人對線性迴歸演算法的理解多於其他演算法。本文介紹的線性迴歸演算法包括最小二乘法和最大似然法,進而討論這兩種演算法蘊含的一些小知識,然後分析演算法的偏差和方差問題,最後總結全文。        

深度學習框架Keras學習系列線性代數基礎與numpy使用Linear Algebra Basis and Numpy

又開一個新坑~~ 因為確實很有必要好好地趁著這個熱潮來研究一下深度學習,畢竟現在深度學習因為其效果突出,熱潮保持高漲不退,上面的政策方面現在也在向人工智慧領域傾斜,但是也有無數一知半解的人跟風吹捧,於是希望藉此教程,讓自己和讀者一起藉助keras,從上到下逐漸

機器學習線性迴歸

  哇!耽擱了兩天,今天來把第一篇正兒八經的機器學習的演算法部落格補上,其實我也是在校學生一枚,看了很多演算法和別人的總結,寫了很多筆記。所以現在想試著把自己之前整理過的筆記和思考之後的注意點寫下來,如果有問題歡迎給我指出來哦~ 1.什麼是線性迴歸

數據結構系列線性

復雜 -o -type 復雜度 順序結構 之前 包含 替換 鏈式存儲結構 線性表是什麽 零個或多個數據元素的有序序列 線性存儲結構 例如 java中的數組,每次都申請固定長度內存空間,並且長度不可變 而arraylist則是長度可變的數組,這是java在底層對數組

【高斯消元】CDOJ1783 曜醬的線性代數課堂

turn abs swap size wap n) memset efi 高斯 高斯消元求逆矩陣板子。 #include<cstdio> #include<cmath> #include<algorithm> #include

機器學習理論——線性回歸

隨機 .cn 過程 小寫 找到 想想 每次 回歸 所在 (一)單變量線性回歸。 舉個例子來說,假如你要在北京的五環路租房,要預測房子的價格,其中一個比較顯著的特征就是房子的面積,根據不同的房間的面積來預測租金是多少。於是你就可以構建一個模型橫軸是房間面積,縱軸是租金

ng機器學習視頻筆記——線性回歸、代價函數、梯度下降基礎

info 而且 wid esc 二維 radi pan 圖形 clas ng機器學習視頻筆記(一) ——線性回歸、代價函數、梯度下降基礎 (轉載請附上本文鏈接——linhxx) 一、線性回歸 線性回歸是監督學習中的重要算法,其主要目的在於用一個函數表

第二章之集成運算放大器的線性應用基礎

+= 比例 com 作用 什麽是 開始 應用電路 ID 通過   第一章已經介紹了有關放大器的基本概念以及最重要的思想——負反饋思想。而第二章就開始介紹最重要的放大部件——集成運算放大器的性質和應用電路 分別從模型(基本電路),電壓傳輸特性(性質),線性和非線性運用(實踐)

python實現線性回歸原理

函數 乘法 學習 偏移量 python實現 機器 線性 計算 梯度 線性回歸是機器學習的基礎,用處非常廣泛,在日常工作中有很大作用。 1.什麽是線性回歸 通過多次取點,找出符合函數的曲線,那麽就可以完成一維線性回歸。 2.數學表示 是截距值,為偏移量。 因為單純計算多項

數據結構線性表鏈式存儲實現

spl 原因 pause main -- 基本 無法 輸入 pen (一)前提 在前面的線性表順序存儲結構,最大的缺點是插入和刪除需要移動大量的元素,需要耗費較多的時間。原因:在相鄰兩個元素的存儲位置也具有鄰居關系,他們在內存中的位置是緊挨著的,中間沒有間隙,當然無法快速

數據結構線性表循環鏈表之約瑟夫環

cli amp tlist isp alloc 個人 pla 初始 ont (一)前提 41個人報數,1-3,當誰報數為3,誰就去嗝屁。現在獲取他們嗝屁的順序 (二)實現結構 順序:3->1->5->2->4 (三)代碼實現 #def

數據結構線性表循環鏈表相關補充

width hide cli 機器 都是 實時 思路 在外 for循環 (一)合並兩個循環鏈表 p = rearA->next; //A的頭結點,一會還要使用 rearA->next = rearB->next->next

數據結構線性表雙向鏈表

tro i++ crt 初始 emp 交換 strong truct erro (一)定義 雙向鏈表是在單鏈表的每個結點中,再設置一個紙箱其前驅結點的指針域 (二)結點結構 typedef struct Node { ElemType data; st