1. 程式人生 > >機器學習(2):簡單線性迴歸 | 一元迴歸 | 損失計算 | MSE

機器學習(2):簡單線性迴歸 | 一元迴歸 | 損失計算 | MSE

前文再續書接上一回,機器學習的主要目的,是根據特徵進行預測。預測到的資訊,叫標籤。

從特徵映射出標籤的諸多演算法中,有一個簡單的演算法,叫簡單線性迴歸。本文介紹簡單線性迴歸的概念。

(1)什麼是簡單線性迴歸

“迴歸(regression)”是什麼?如之前所講,預測模型可區分為“分類器”跟“迴歸器”,迴歸器,就是用來預測趨勢變化的,比如預測明天哪支股會漲停,預測某天的降雨量是多少,預測未來一年房價的變化,等等。所以迴歸就是預測的意思,沒有什麼高深的。線性是什麼意思?就是一條直線,夠簡單了吧,自然也有“非線性迴歸”。那“簡單”是什麼意思,就是隻有一個變數的,也叫一元迴歸,如果是多個變數(擬合面),那就叫多元迴歸(自然不再是簡單線性)。

所以,簡單線性迴歸,就是隻有一個輸入變數(自變數)的預測,就是這一種:y=ax+b,根據x的值,預測出y。你可以說,簡單線性迴歸,就是一個函式。

簡單線性迴歸是一個預測模型(迴歸模型),是模型就要被訓練,只有不斷的訓練才能得到最佳的預測狀態--雖然這是廢話,但的確是這樣。同樣,簡單線性迴歸的目的,是儘可能擬合所有訓練樣本以達到最佳的預測狀態。什麼是擬合?比如畫一條直線,儘可能地,讓各個點(樣本)的預測標籤接近或重合實際標籤,就是擬合。

為了更好的解釋這個概念,我畫了一個圖,圖上面解釋了相關概念:

從圖上可以看到,如果對於每個點的輸入特徵,得到的預測標籤跟這個點的實際標籤都能重合的話,那就是最佳的。然而,實際上很可能做不到所有點都落在直線上,那這時候,找出一點最佳的直線,獲得最好的擬合效果,就是機器學習要做的事情。

簡單線性迴歸模型,給出了特徵與標籤的關係:

y = mx + b

x是輸入特徵,y是預測標籤。

為了讓這條直線更好的擬合所有的點,就要調整引數m跟b。

m是直線的角度,叫斜率,在機器學習中叫權重。

b叫截距,在機器學習中叫偏差。

所以,使用簡單線性迴歸演算法,機器學習通過大量帶標籤的樣本進行訓練,最終調整出一個最佳的m跟b值,從而達到最好的擬合效果。

那麼,怎麼判斷擬合效果呢?怎麼知道是變好還是變差了?

(2)如何判斷擬合效果

為了判斷擬合的效果,這裡引入一個概念,叫損失計算。

如果點剛好落在直線上,也就是預測標籤跟實際標籤一樣,那損失為0。

而實際上,更多的情況下,損失並不為0,這時要考慮整體損失。

整體損失越小,擬合越好,比如下圖所示,可以明顯分辨出左線的擬合效果優於右線(當整體損失達到某個值時,就可以認為已經取得很好的預測效果,可以停止訓練):

上圖中,每個點跟預測標籤的距離(也就是點到線的紅箭頭)稱為損失。

整體損失的計算可以有很多辦法,這裡引入一個簡單實用的辦法:均方誤差(MSE)。

均方誤差(MSE),就是求出所有點的損失的平方和,再除以樣本的個數。你可以參考這個圖的解釋:

以上這個圖,來源於這個地址:https://developers.google.com/machine-learning/crash-course/descending-into-ml/training-and-loss

基本上,本文的內容與組織方式,都跟這個地址的教程有直接的關係。

以上介紹了簡單線性迴歸的定義,以及損失計算的一個辦法即MSE,接下來小程用例項來演示簡單線性迴歸的實現。

(3)簡單線性迴歸示例

這裡以python來演示,主要是因為python易於使用。

首先,給定一些雜湊的點,你可以參考下圖的實現,截圖中對部分程式碼做了解釋:

執行這一部分程式碼,可以看到這樣的效果:

然後,對這些點進行簡單線性迴歸,也就是畫一條擬合線,並取得最好的擬合效果,參考下圖:

最終執行的效果是這樣的:

好了,回頭看一下吧。本文介紹了簡單線性迴歸的定義以及損失計算的一個辦法即MSE,最後用python示範了怎麼使用簡單線性迴歸演算法繪製一條擬合線。簡單線性迴歸,就是一個預測模型,更直接一點,就是一個函式--你可以說預測模型其實就是函式,就是一個演算法設計(比如y=ax+b就是一個最核心的東西),它接受訓練後的進化(比如不斷地調整引數),從而得到最佳的預測狀態。


相關推薦

機器學習2簡單線性迴歸 | 一元迴歸 | 損失計算 | MSE

前文再續書接上一回,機器學習的主要目的,是根據特徵進行預測。預測到的資訊,叫標籤。 從特徵映射出標籤的諸多演算法中,有一個簡單的演算法,叫簡單線性迴歸。本文介紹簡單線性迴歸的概念。 (1)什麼是簡單線性迴歸 “迴歸(regression)”是什麼?如之前所講,預測模型可區分為“分類器”跟“迴歸器”,迴歸器,就

機器學習2DBSCAN聚類演算法

一、DBSCAN演算法基本概念 1.全稱:Density-Based Spatial Clustering of Applications with Noise 基於密度帶有噪聲聚類 2.核心物件:若某個點的密度達到演算法設定的閾值則其為核心點。 (即某點的r 鄰域內,點的數量不小於設定閾值 m

機器學習入坑指南簡單線性迴歸

學習了「資料預處理」之後,讓我們一起來實現第一個預測模型——簡單線性迴歸模型。 一、理解原理 簡單線性迴歸是我們接觸最早,最常見的統計學分析模型之一。 假定自變數 xxx與因變數 yyy 線性相關,我們可以根據一系列已知的 (x,y)(x,y)(x,y) 資料

用python來實現機器學習線性迴歸linear regression

需要下載一個data:auto-mpg.data 第一步:顯示資料集圖 import pandas as pd import matplotlib.pyplot as plt columns = ["mpg","cylinders","displacement","horsepowe

槓精的機器學習線性迴歸

主要參考資料為《小象學院-機器學習IV》 打個廣告,這套視訊真的非常贊,建議大家看三遍以上,每一遍都有新的收穫,BiliBili上有免費資源,感謝鄒博!!!   前言:在實際應用中,迴歸是非常常見的一類問題,當然用於解決迴歸問題的方法也有很多,例如線性迴歸(

機器學習快速入門線性分類器

定義 假設特徵與分類結果存線上性關係的模型,這個模型通過累加計算每個維度的特徵與各自權重的乘積來幫助類別決策。 線性關係公式 :f(w,x,b)=w^tx+b x=(x1,x2,…xn) 代表n維特徵列向量,w=(w1,w2,…wn)代表對應的權

Java學習2將鍵盤錄入的內容保存到指定文件中

stream exce 創建 txt 關閉 如果 下午 line 再次 要求:保存鍵盤錄入的內容,當鍵盤輸入end時,錄入結束。 1 /** 2 * 保存鍵盤輸入,並以end結束 3 * 4 * @author xcx 5 * @time 2017年6

Unity3D學習簡單梳理下Unity跨平臺的機制原理

12px get 一個 bsp 嵌入 ram 屬於 開源 runtime 前言 首先需要了解的是,Unity3D的C#基礎腳本模塊是通過Mono來實現的。 什麽是Mono? 參考下百度百科:Mono是一個由Novell公司(由Xamarin發起)主持的項目,並由Migu

web前端學習2開始編寫HTML

其中 title 養成 的人 以及 字體 寫入 文本格式 軟件   在第一章中,我們初步了解了上網的過程,同時也明白了所謂網頁,其本質就是主要用HTML語言所寫的一份文檔。相信大多數人在了解HTML文件前,最先接觸的是利用“記事本”所寫的文檔或者是利用辦公軟件“Word”

機器學習1 - TensorflowSharp 簡單使用與KNN識別MNIST流程

定義 機器學習算法 三角形 演示 ron static 分享 con 區別 機器學習是時下非常流行的話題,而Tensorflow是機器學習中最有名的工具包。TensorflowSharp是Tensorflow的C#語言表述。本文會對TensorflowSharp的使用進行一

機器學習2 - KNN識別MNIST

min lose fse skip show turn ESS 行數 sna 代碼 https://github.com/s055523/MNISTTensorFlowSharp 數據的獲得 數據可以由http://yann.lecun.com/exdb/mnist

Andrew Ng機器學習什麽是機器學習

中學 修正 style tar 輸入 color 情況 html 知識 1.什麽是機器學習? 自動化:讓計算機處理繁瑣和重復的工作。 編程:設計一種算法,適用於解決特定的問題。 機器學習:可以解決更廣泛的而不是特定的問題。類比於人類從經驗中學習這種活動,從已有的數據中發現自

ADB 學習2adb install 命令

一、前言         作為一個測試人員,對於手機的應用軟體肯定少不了安裝到指定的手機裝置中,所以 adb install 這個命令是必不可少的。 二、詳解         Ⅰ、當我們只有一臺裝置連線到

robotframework 學習2 使用RIDE進行介面測試之傳送請求和接收資料斷言

一、RIDE的介紹:         RIDE是robotframework圖形操作前端,也可以理解為一種編輯器,它以cell的形式來進行定義資料和方法,返回結果等,我們可以使用它進行建立測試用例和編寫測試指令碼,並且執行自動化測試。  

three.js學習2Scene

scene是場景,裡面能放置物件(Objects)、燈光(Lights)、攝像機(Cameras)等。 1.建立場景: Scene() 2.場景的屬性: 》》》fog(霧): 。。。建立fog: 。。。。。。(1).fog(color:int, near:float, far:float)

Java虛擬機器學習1體系結構 記憶體模型

JVM記憶體區域模型 1.方法區 也稱”永久代” 、“非堆”,  它用於儲存虛擬機器載入的類資訊、常量、靜態變數、是各個執行緒共享的記憶體區域。預設最小值為16MB,最大值為64MB,可以通過-XX:PermSize 和 -XX:MaxPermSize 引數限制方法區的大小。

機器學習--------單變數線性迴歸(Linear Regression with One Variable)

   面積與房價 訓練集 (Training Set)  Size       Price 2104       460 852         

雜七雜八2簡單的加聖誕帽的程式,python3+opencv3.4

簡單的加聖誕帽的程式,python3+opencv3.4 最最最最簡單的加聖誕帽的程式,python3+opencv3.4 # -*- coding: utf-8 -*- """ Created on Mon Dec 25 15:22:14 2017 @author: Ela

tensorflow學習2計算圖,tf.get_default_graph(),tf.Graph()

一、基本概念 顧名思義,TensorFlow的名字已經出賣了它的“靈魂”,TensorFlow=tensor(張量)+flow(流動)。TensorFlow是一個通過計算圖的形式來表達計算的程式設計框架。其每一個計算都是計算圖上的一個節點,而節點之間的邊描述了計算之間的依賴關係。 計算圖

numpy學習2陣列建立方式

一、前言 Numerical Python,即數值Python包,是Python進行科學計算的一個基礎包,所以是一個掌握其他Scipy庫中模組的基礎模組,一定需要先掌握該包的主要使用方式。 NumPy模組是Python的一種開源的數值計算擴充套件,是一個用py