模型選擇、過擬合與欠擬合

一、訓練誤差與泛華誤差

1、在訓練時,我們關心的是泛化誤差,也就是對新數據的預測

2、訓練誤差:模型在訓練數據上的誤差;泛化誤差:模型在新數據上的誤差

二、驗證數據集與測試數據集

1、驗證數據集:用于評估模型好壞的數據集,就像模擬考試

2、測試數據集:只用一次,就像正式考試

3、訓練數據集:訓練模型參數;對于訓練數據集,我們會拿出一部分作為驗證數據集,訓練數據就像平時進行刷題

4、在實際中使用的測試數據集,其實來源于我們的驗證數據集,所以驗證數據集上得出來的超參數可能會在泛化誤差之中虛高

三、K折交叉驗證

1、沒有足夠多的數據時指無論什么情況下,訓練數據都是越多越好。

2、對于k折,數據量大時可以將k取更小的值,數據量小時則反之

3、K折交叉驗證誤差做平均是為了超參數的選擇

四、總結

五、過擬合與欠擬合

1、模型容量:擬合各種函數的能力,可以理解為模型的復雜程度,低就是簡單模型,高就是復雜模型。復雜模型可以使用復雜函數,簡單模型就不太行;比如線性模型就簡單,多層感知機就比較復雜。

2、簡單數據與復雜數據,簡單數據比如人工數據集

3、簡單數據高模型容量可能過擬合,就相當于模型將數據全部記下來了,包括很多噪音,對新數據沒有泛化性;復雜數據使用簡單模型應該會欠擬合,就是字面意思。

4、估計模型容量

(1)模型容量在不同種類的算法之間難以比較,比如樹模型與神經網絡之間的差別非常大

(2)給定模型種類,有兩個因素估計模型容量:參數個數與參數選擇范圍

對于上圖線性回歸,輸入為d維向量,自然就有d個權重w,參數就是d個w和一個偏差d;

對于有一層隱藏層的感知機,其中這一層輸出位m維向量,最終輸出層向量為k,按照線性模型反推,輸入->隱藏層(d+1)*m,隱藏層->輸出層(m+1)*k

(3)VC維:VC維度定義了在假設空間中能夠被模型擬合的樣本點的最大數量,例如二維空間的vc維是3,在多1個點,比如四個點就陷入了XOR問題,這里知道大概概念就好了。

支持N維輸入的感知機的VC維是N+1;

一些多層感知機的VC維O(Nlog2N)

5、數據復雜度

(1)數據復雜度是一個相對概念,多樣性指分為幾類,比如softmax輸出分成了許多類

(2)多個重要因素

6、總結

六、多項式生成數據集

max_degree = 20  # 多項式的最大階數,除了前面四個其他都是屬于噪音
n_train, n_test = 100, 100  # 訓練和測試數據集大小
true_w = np.zeros(max_degree)  # 分配大量的空間
true_w[0:4] = np.array([5, 1.2, -3.4, 5.6])
#總計為200的訓練和測試集
features = np.random.normal(size=(n_train + n_test, 1))
np.random.shuffle(features)
#生成了200個,多項式的樣本相當于200*20
poly_features = np.power(features, np.arange(max_degree).reshape(1, -1))
#相當于除以階乘
for i in range(max_degree):poly_features[:, i] /= math.gamma(i + 1)  # gamma(n)=(n-1)!
# labels的維度:(n_train+n_test,)
labels = np.dot(poly_features, true_w)
#添加噪聲
labels += np.random.normal(scale=0.1, size=labels.shape)

七、模型進行訓練和測試

1、評估模型在給定數據集上的損失的函數

def evaluate_loss(net, data_iter, loss):
...#跟之前的一樣
return metric[0]/metric[1]

2、定義訓練函數

train(train_features, test_features, train_labels, test_labels,num_epochs=400):
略,跟之前的一樣

3、三階多項式函數擬合(正常)

# 從多項式特征中選擇前4個維度,即1,x,x^2/2!,x^3/3!
train(poly_features[:n_train, :4], poly_features[n_train:, :4],labels[:n_train], labels[n_train:])

4、線性函數擬合(欠擬合)

# 從多項式特征中選擇前2個維度,即1和x
train(poly_features[:n_train, :2], poly_features[n_train:, :2],labels[:n_train], labels[n_train:])

5、高階多項式函數擬合(過擬合)

# 從多項式特征中選取所有維度
train(poly_features[:n_train, :], poly_features[n_train:, :],labels[:n_train], labels[n_train:], num_epochs=1500)

6、總結

  • 欠擬合是指模型無法繼續減少訓練誤差。過擬合是指訓練誤差遠小于驗證誤差。

  • 由于不能基于訓練誤差來估計泛化誤差,因此簡單地最小化訓練誤差并不一定意味著泛化誤差的減小。機器學習模型需要注意防止過擬合,即防止泛化誤差過大。

  • 驗證集可以用于模型選擇,但不能過于隨意地使用它。

  • 我們應該選擇一個復雜度適當的模型,避免使用數量不足的訓練樣本。

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

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

相關文章

Percona Toolkit 神器全攻略(配置類)

Percona Toolkit 神器全攻略(配置類) Percona Toolkit 神器全攻略系列共八篇,前文回顧: 前文回顧Percona Toolkit 神器全攻略Percona Toolkit 神器全攻略(實用類) 全文約定:$為命令提示符、gr…

Spring Boot集成jsoup實現html解析

1.什么是jsoup jsoup 是一款 Java 的 HTML 解析器,可直接解析某個 URL 地址、HTML 文本內容。它提供了一套非常省力的 API,可通過 DOM,CSS 以及類似于 jQuery 的操作方法來取出和操作數據,可操作 HTML 元素、屬性、文本。 JSo…

函數內部結構分層淺析(從MVC分層架構聯想)

函數內部結構分層淺析(從MVC分層架構聯想) 分層架構:一種將軟件代碼按不同功能進行劃分的架構模式。 優點包括: 可維護性:各層職責明確,易于單獨修改維護。 可擴展性:方便添加或修改某一層,不…

優化Java應用的日志記錄方法

優化Java應用的日志記錄方法 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 引言 在開發和維護Java應用程序時,良好的日志記錄是確保應用穩定性和…

優化Java中網絡通信的性能策略

優化Java中網絡通信的性能策略 大家好,我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編,也是冬天不穿秋褲,天冷也要風度的程序猿! 在現代軟件開發中,優化網絡通信的性能是確保應用程序高效運行的關鍵…

Rocketmq在單節點情況下新增從節點

Rocketmq在單節點情況下新增從節點 在docker-compose部署rocketmq單節點的基礎上,新增一個從節點 一,修改docker-compose配置文件 原docker-compose文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:server-4.5.2container_name: rm…

選擇診所管理系統的原則是什么?

如今,診所管理系統已成為醫療機構提升管理效率、優化患者服務的重要工具。然而,市場上的診所管理系統琳瑯滿目,功能各異,因此,如何選擇一款適合自己診所的管理系統,是許多診所管理者需要思考的問題。下面&a…

進程調度的基本過程

文章目錄 CPU執行指令過程進程PCB“分時復用” ??結語 CPU執行指令過程 一個CPU能執行那些指令,可以認為是cpu最初設計的時候就已經寫死了。有一個“表格”描述了都有哪些指令。 以上的表格只是一個簡化版本,真實的cpu指令表要復雜很多。此處假設每個…

RUC2024《綜合設計》期中測試

T1 原題鏈接https://www.luogu.com.cn/problem/P1025 不是我出的 T2 原題鏈接:https://www.luogu.com.cn/problem/P26787 這道題就是講過的二分貪心,先二分規定每兩個點之間都必須大于等于某個值,然后依次枚舉通過貪心求出最少需要刪除的點數…

薄冰英語語法學習--名詞2-格

名詞后面 s,代表后面這個東西屬于前面的。 比如toms book,湯姆的書。 末尾是s,那么直接在最后加就行了。比如boys,男孩們的 表示幾個詞共同 的所有關系在最后一個詞的詞尾加 sMary and Toms books 瑪麗和湯姆共有的書表示幾個詞…

深入探討C++的高級反射機制

反射是一種編程語言能力,允許程序在運行時查詢和操縱對象的類型信息。它廣泛應用于對象序列化、遠程過程調用、測試框架、和依賴注入等場景。 由于C語言本身的反射能力比較弱,因此C生態種出現了許多有趣的反射庫和實現思路。我們在本文一起探討其中的奧秘…

DOM遍歷

DOM 遍歷是指在 HTML 文檔中導航和定位元素的過程。通過 DOM 遍歷,您可以在文檔中移動并查找特定的元素,以便對其進行操作或者檢索信息。 尋找子元素 //DOM遍歷 const h1 document.querySelector(h1);//尋找子元素 console.log(h1.querySelectorAll(.…

每天一個數據分析題(三百九十)- 多元線性回歸

在多元線性回歸中,下列哪項可以緩解多重共線性問題? A. 取對數 B. 平方 C. 去除異常值 D. 逐步回歸 數據分析認證考試介紹:點擊進入 題目來源于CDA模擬題庫 點擊此處獲取答案 數據分析專項練習題庫 內容涵蓋Python,SQL&am…

從入門到精通:使用Python的Watchdog庫監控文件系統的全面指南

從入門到精通:使用Python的Watchdog庫監控文件系統的全面指南 引言Watchdog庫概述核心組件工作原理 快速開始:設置Watchdog安裝Watchdog創建一個簡單的監控腳本設置和啟動Observer 事件處理:如何響應文件系統的變化基本事件處理處理復雜的場景…

論文生成新紀元:探索頂尖AI寫作工具的高效秘訣

在學術探索的征途中,AI論文工具本應是助力前行的風帆,而非讓人陷入困境的漩渦。我完全理解大家在面對論文壓力的同時,遭遇不靠譜AI工具的沮喪與無奈。畢竟,時間可以被浪費,但金錢和信任卻不可輕棄。 作為一名資深的AI…

@Transactional(rollbackFor = Exception.class)注解

當作用于類上時,該類的所有 public 方法將都具有該類型的事務屬性,同時,我們也可以在方法級別使用該標注來覆蓋類級別的定義。 在項目中,Transactional(rollbackForException.class),如果類加了這個注解,那…

Java使用Graphics2D畫圖,畫圓,矩形,透明度等實現

背景 如上圖,需要使用Java生成一個圖片, 并以base64編碼的形式返回給前端展示。 使用Graphics2D類,來進行畫圖,其中需要畫方框、原型、插入圖標、寫入文字等,同時需要設置透明度等細節點 環境:Jdk17&#…

Java面試八股之JVM內存泄漏按照發生的方式可以分為哪幾類

JVM內存泄漏按照發生的方式可以分為哪幾類 常發性內存泄漏(Frequent Memory Leak) 這類內存泄漏發生的代碼會被頻繁執行,每次執行時都會導致一塊或多塊內存無法被回收。由于泄漏行為重復發生,故稱為常發性。這類泄漏通常比較容易…

下一代廣域網技術2:SRv6

2.SRv6 SR架構設計之初,就為SR數據平面設計了兩種實現方式:一種是SR-MPLS,其重用了MPLS數據平面,可以在現有IP/MPLS網絡上增量部署;另一種是SRv6,使用IPv6數據平面,基于IPv6路由擴展頭進行擴展…

Docker部署常見應用之Oracle數據庫

文章目錄 安裝部署參考文章 安裝部署 使用Docker安裝Oracle數據庫是一個相對簡便的過程,可以避免在本地環境中直接安裝Oracle數據庫的復雜性。 安裝Docker環境:確保你的系統上已經安裝了Docker,并且Docker服務正在運行。具體的安裝方法可以根…