機器學習之全面了解回歸學習器

我們將和大家一起探討機器學習與數據科學的主題。

本文主要討論大家針對回歸學習器提出的問題。我將概要介紹,然后探討以下五個問題:

1. 能否將回歸學習器用于時序數據?

2. 該如何縮短訓練時間?

3. 該如何解釋不同模型的結果和可用的繪圖?

4. 我選擇了具有最小均方根誤差 (RMSE) 的模型;接下來還需要做些什么?

5. 如何基于新數據進行預測?

本文會解答一些有關 MATLAB 回歸學習器的問題,基本上不涉及回歸本身。

引言

自 2017 年起,工程師和科學家可以在 MATLAB 中使用回歸學習器。

回歸分析可以幫助人們理解變量和數值響應之間的關系,可用于預測能耗、財務績效和制造工藝參數等。從根本上說,有了回歸學習器,您無需編寫代碼即可交互構建回歸模型,并衡量模型的準確度和性能。

您可以快速比較各種回歸模型和特征的性能。這款 App 對于剛接觸機器學習的人特別有用,因此我很高興回答一些與該 App 直接相關的問題。

Q1

能否將回歸學習器用于時序數據?

當然可以。

例如,您可以使用回歸模型來預測電力負荷或預測暴風雨造成的損失,與在其他機器學習 App 中一樣,在該 App 中使用時序數據之前,必須對數據進行預處理和清理。

這包括將數據調整到正確的格式、對數據進行歸一化以使其處于同一尺度、均勻地分布數據、處理重復數據或缺失數據,以及執行其他必要任務。

Q2

訓練花費的時間太長;我該怎么做才能更快地訓練我的模型?

您可以在回歸學習器中執行幾項操作來加快訓練速度。提醒一下,在這里我主要介紹該 App 本身提供的方法。

建議 1:使用并行回歸模型訓練

如果您擁有 Parallel Computing Toolbox?,首先可以嘗試的是使用并行回歸學習器模型進行訓練,這也是比較簡單的方法。此方案會創建一個并行池以進行并行訓練,讓您能夠在繼續工作的同時并行訓練多個模型。

如果選擇此方案,您將在“歷史記錄”列表中看到每個訓練中模型和排隊中模型的進度指示器,并且還可以隨時取消某個模型。這種方法將有助于減少訓練所需時間。

在回歸學習器的菜單欄中選擇“使用并行”。

建議 2:使用留出法驗證

如果數據很大,請確保使用正確的驗證選項。

當您在回歸學習器中打開新會話并選擇數據時,默認會選擇交叉驗證。

交叉驗證可將數據劃分為若干折 (k)、訓練模型并計算所有折的平均測試誤差。

與其他方案相比,此方法可以更好地防止過擬合,但需要多次擬合,因此適用于中小型數據集。

留出法驗證可讓您使用滑塊控件選擇要用作測試集的數據百分比。該 App 將在訓練集上訓練模型,并通過測試集評估其性能。用于測試的模型僅基于一部分數據,因此留出法驗證特別適用于大型數據集。當然,您也可以選擇不驗證模型,但是這有可能導致訓練數據過擬合。了解有關回歸問題驗證選項的更多信息

啟動新會話時,默認會選擇交叉驗證。

建議 3:僅在一組模型類型上訓練數據

如果您已知數據特別適合用某一類模型處理,或者某一類模型的訓練速度太慢,則可以在 App 中選中該類型或取消選中,而不必對所有類型進行訓練。如果不確定,則可以嘗試“全部(快速訓練)”選項,該選項將對所有訓練速度通常較快的模型類型進行訓練。

然后,您可以訓練均方根誤差 (RMSE) 最小的那一組的所有模型,以找到最佳模型。

建議 4:精簡訓練數據

人們經常討論如何獲得足夠的數據,但其中的關鍵是確保擁有足夠的正確數據。您可能有一些多年前的歷史數據,一些不必要、不再有用的數據。

刪除或減少這類數據可以加快訓練速度,當然,您需要時刻關注數據的準確性和代表性。這應該是您最后的選擇,因為您必須非常謹慎地減少數據。

Q3

該如何解釋不同模型的結果和可用的繪圖?

這是一個很好的問題!

在用您的數據訓練完模型后,需要采取幾個步驟來解釋結果。

步驟 1:找出具有最小均方根誤差的模型

RMSE 衡量每個模型的預測值與觀測值之間的距離,因此它衡量的是這些殘差的擴散程度。該 App 將在最小 RMSE 周圍加一個框。

步驟 2:探查模型

選擇具有最小 RMSE 的模型后,下一步就是查看 App 中可用的不同繪圖:常用的繪圖有兩種:響應圖,實際值-預測值圖。

較小的 RMSE 將以粗體顯示,并帶有一個方框。

響應圖

響應圖以豎線顯示預測響應與觀測值之間的差異。如果您對數據使用留出法驗證或交叉驗證,則此圖特別有用,因為圖中顯示的預測值對應的是留出的觀測值,模型未在這部分數據上進行訓練。

使用響應圖查看預測值和觀測值之間的距離。

實際值-預測值圖

實際值-預測值圖可幫助您檢查模型性能。該圖繪制了模型的預測響應對真實響應的圖。

在此圖中,理想的回歸模型應有與觀測值相同的預測響應,因此所有點都將位于對角線上。

然而,這在現實中是不可能的,所以我們的目標是讓這些點盡可能靠近對角線,并大致對稱地分散在對角線附近。如果能在此圖中檢測到模式,則意味著模型可以改進,您可以選擇訓練其他模型類型,也可以選擇使用高級選項使模型更靈活。

實際值-預測值圖可幫助您可視化回歸模型的準確度。

Q4

我選擇了具有最小均方根誤差 (RMSE) 的模型;要優化模型,接下來還需要做些什么?

在針對數據訓練和評估初始模型之后,可以通過調整模型的超參數來確保實現最佳性能。

要自動選擇并找到模型的最佳超參數值,可以使用超參數優化功能。

該 App 會嘗試不同的超參數值組合,以最小化模型的均方誤差 (MSE),并返回使用優化超參數的新模型。

超參數調整的效果因模型而異,因此您需要為多種類型的模型優化超參數,因為初始模型可能無法實現最佳性能。

Q5

如何開始進行預測?

要使用經過全面訓練和優化的模型基于新數據進行預測,您需要將模型導出到某個位置。您可以將其導出到 MATLAB 工作區,或者生成 MATLAB 代碼,以使用剛才在 App 中所用的步驟來訓練模型。

然后,您可以使用 MATLAB Compiler? 部署模型,或者使用 MATLAB Coder? 從模型生成 C/C++ 代碼。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/206766.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/206766.shtml
英文地址,請注明出處:http://en.pswp.cn/news/206766.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

No suitable driver found for jdbc:mysql://localhost:3306(2023/12/7更新)

有兩種情況: 壓根沒安裝下載了但沒設為庫或方法不對 大多數為第一種情況: 一. 下載jdbc 打開網址選擇一個版本進行下載 https://nowjava.com/jar/version/mysql/mysql-connector-java.html 二.安裝jdbc 在項目里建一個lib文件夾 在把之前下載的jar文…

優化 SQL 日志記錄的方法

為什么 SQL 日志記錄是必不可少的 SQL 日志記錄在數據庫安全和審計中起著至關重要的作用,它涉及跟蹤在數據庫上執行的所有 SQL 語句,從而實現審計、故障排除和取證分析。SQL 日志記錄可以提供有關數據庫如何訪問和使用的寶貴見解,使其成為確…

JNPF低代碼平臺詳解 -- 系統架構

目錄 一、技術介紹 技術架構 二、設計原理 三、界面展示 1.代碼生成器 2.工作流程 3.門戶設計 4.大屏設計 5.報表設計 6.第三方登錄 7.多租戶實現 8.分布式調度 9.消息中心 四、功能框架 JNPF低代碼是一款新奇、實用、高效的企業級軟件開發工具,支持企…

Qt/C++音視頻開發58-逐幀播放/上一幀下一幀/切換播放進度/實時解碼

一、前言 逐幀播放是近期增加的功能,之前也一直思考過這個功能該如何實現,對于mdk/qtav等內核組件,可以直接用該組件提供的接口實現即可,而對于ffmpeg,需要自己處理,如果有緩存的數據的話,可以…

Rust的eBFP框架Aya(一) - Linux內核網絡基礎

前言 在我的Rust入門及實戰系列文章中已經說明, Rust是一門內存安全的高性能編程語言,從它的這些優秀特性來看,就是一門專為系統開發而誕生的語言。至于很多使用Rust來進行web開發的行為,不能說它們不好,只能說是殺雞…

2017下半年軟工(橋接模式)

題目——橋接模式(抽象調用實現部分) package org.example.橋接模式;/*** 橋接模式的核心思想是將抽象部分與它的實現部分分離,使它們可以獨立變化,就是說你在實現部分:WinImp、LinuxImp基礎上還能加上RedHatImp&#…

03-微服務架構構建之微服務拆分

文章目錄 前言一、微服務拆分的原則二、微服務拆分的時機三、微服務拆分的方法總結 前言 微服務架構是將一個單體應用程序拆分為一個個獨立且保持松耦合的服務的一種架構方式,每個服務有著獨立的數據庫并且能獨立運行部署。微服務架構的構建過程中,第一…

偷竊別人的密碼

在工作中都用到virtual machine吧,同事之間還互相借用機器,或者不借用但憑借自己的域賬號能登錄任意機器,而且每個域賬號都有sudo權限? 那你要小心了! 因為我可以輕易記錄下每個ssh登錄到我機器,或者我在…

uniapp 輸入框輸入時,會將內容頂上去的解決方案

// 設置頁面最小高度 export const setPageMinHeight () > {return {position: relative,min-height: uni.getSystemInfoSync().windowHeight px} }頁面使用: import {setPageMinHeight} from "/utils/uniUtil";data() {return {minHeight: setPag…

Unity 狀態系統

狀態系統 原理食用方法Demo 原理 #mermaid-svg-lUbxJ8eMP3KqrEhY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lUbxJ8eMP3KqrEhY .error-icon{fill:#552222;}#mermaid-svg-lUbxJ8eMP3KqrEhY .error-text{fill:#55…

官方officevisio在線安裝包

在線安裝包,在線就是要有網絡環境,你能搜到這篇博客,就初步具備網絡環境 visio在線安裝包.zip官方版下載丨最新版下載丨綠色版下載丨APP下載-123云盤 在線安裝包如下,雙擊執行安裝即可,可供選擇的64/32位 軟件的激活與…

netty使用

支持協議 TCP/UDPHTTP/HTTPSWebSocketSPDY/HTTP2MQTT/CoAP 服務端 常用類 ServerBootstrap 服務端配置類 //設置線程組、parentGroup處理連接、childGroup處理I/O group(EventLoopGroup parentGroup, EventLoopGroup childGroup) //Channel通過何種方式獲取新的連接(NioSe…

【擴散模型】ControlNet從原理到實戰

ControlNet從原理到實戰 ControlNet原理ControlNet應用于大型預訓練擴散模型ControlNet訓練過程ControlNet示例1 ControlNet與Canny Edge2. ControlNet與Depth3. ControlNet與M-LSD Lines4. ControlNet與HED Boundary ControlNet實戰Canny Edge實戰Open Pose 小結參考資料 Cont…

Linux系統上RabbitMQ安裝教程

一、安裝前環境準備 Linux:CentOS 7.9 RabbitMQ Erlang 1、系統內須有C等基本工具 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xz socat2、下載安裝包 1)首先&a…

[linux] kaggle 數據集用linux下載

你可以通過以下步驟獲取Kaggle的下載鏈接并在Linux中進行下載: 首先,確保你已經安裝了Python和Kaggle API。如果沒有安裝,你可以通過以下命令安裝: pip install kaggle 接著,你需要在Kaggle網站上獲取API Token。登錄…

時間相關類

內容 JDK7時間相關類JDK8時間相關類 第一章 Date類 1.1 Date概述 java.util.Date類 表示特定的瞬間,精確到毫秒。 繼續查閱Date類的描述,發現Date擁有多個構造函數,只是部分已經過時,我們重點看以下兩個構造函數 public Dat…

【PyTorch】 暫退法(dropout)

文章目錄 1. 理論介紹2. 實例解析2.1. 實例描述2.2. 代碼實現2.2.1. 主要代碼2.2.2. 完整代碼2.2.3. 輸出結果 1. 理論介紹 線性模型泛化的可靠性是有代價的,因為線性模型沒有考慮到特征之間的交互作用,由此模型靈活性受限。泛化性和靈活性之間的基本權…

Docker構建自定義鏡像

創建一個docker-demo的文件夾,放入需要構建的文件 主要是配置Dockerfile文件 第一種配置方法 # 指定基礎鏡像 FROM ubuntu:16.04 # 配置環境變量,JDK的安裝目錄 ENV JAVA_DIR/usr/local# 拷貝jdk和java項目的包 COPY ./jdk8.tar.gz $JAVA_DIR/ COPY ./docker-demo…

Java基礎50題: 21.實現一個方法printArray, 以數組為參數,循環訪問數組中的每個元素,打印每個元素的值.

概述 實現一個方法printArray, 以數組為參數,循環訪問數組中的每個元素,打印每個元素的值. 代碼 public static void printArray(int[] array) {for (int i 0; i < array.length; i) {System.out.println(array[i] " ");}System.out.println();}public static…

【數據結構c實現】順序表實現

文章目錄 線性表線性表的順序實現結點結構結點初始化增配空間Inc打印順序表show_list線性表長度length尾部插入push_back頭部插入push_front尾部刪除pop_back頭部刪除pop_front按位置插入insert_pos按值查找find按位置刪除delete_pos按值刪除delete_val排序sort(冒泡&#xff1…