ML講座2 誤差是怎麼來的

2021-09-13 09:26:22 字數 1654 閱讀 8640

本文主要介紹機器學習中誤差的**以便improve model

由前面介紹的內容我們知道,在設計並完成乙個解決目標問題的model以後,我們能通過一系列的方法找到在當前model下的乙個「最好的」function,但是這個function與真實的function總是有差距的,表現就是**未知資料集的時候正確率不是百分之百。

這些誤差主要是來自bias和variance。

將真實function作為靶心,使用我們得到的最優function進行若干次實驗,實驗的平均值即我們的方程靶心,兩個靶心的距離就是bias,這若干次實驗範圍的方差就是variance

在不同模型上進行若干次實驗,可以直觀觀察出variance

在下圖中,左邊是簡單模型實驗100次的結果,右邊是複雜模型實驗100次的結果,可以看到複雜模型的variance更大一些。

同樣,下圖可以看到複雜模型的bias更小一些

underfitting:表示與training data不擬合,訓練集都不能很好的fitting

原因:模型太過簡單,模型的space沒有包含target,要注意的是,這種情況下即使加入更多的data也不會有太大幫助,需要重新設計模型。

比如:回想寶可夢的例子,簡單模型只考慮cp值的時候很難做出好的**,因為寶可夢進化與種類也有相關性。因此思路可以是加入更多feature以及使用更複雜的模型。

加訓練資料:這是overfitting的現象,可以通過增加訓練資料來改善。可以通過現有資料製造更多的資料,例如的翻轉,角度轉換等。增加訓練資料能夠很好地解決large variance的問題。

**regularization:**使曲線更加平滑 ,缺點是可能會傷害bias

在真正的測試集上,實際上可能是大於你自己的選擇的那個模型的

所以要用乙個validation set來進行model篩選

不建議在testings上結果不好時再修改模型了,這是不能反應在真正未知資料集上得到結果。

所以提出一種方法使得到的模型更能表示在位置資料集上的效果

,使用乙個從training set 分離出validation set 用來篩選模型,用testing set 模擬真正未知的資料。這時候不建議再根據testing set來更改模型了,因為這樣就失去了使用validation的意義。

為了更好的利用訓練資料,還可以使用交叉方式訓練

效能是怎麼來的

效能是怎麼來的 網際網路的效能可以模擬測試嗎?怎樣保證效能?一 架構 系統架構 分散物理部署 前端層 負載均衡 靜態化 cdn 邏輯層 非同步 服務化 資料層 讀寫分離 快取 訊息佇列 不同資料不同資料引擎 資料同步 二 開發 dba 核心交易表 資料型別拆分 資料列拆分 資料行拆分 索引 開發le...

效能是怎麼來的

效能是怎麼來的 網際網路的效能能夠模擬測試嗎?如何保證效能?一 架構 系統架構 分散物理部署 前端層 負載均衡 靜態化 cdn 邏輯層 非同步 服務化 資料層 讀寫分離 快取 訊息佇列 不同資料不同資料引擎 資料同步 二 開發 dba 核心交易表 資料型別拆分 資料列拆分 資料行拆分 索引 開發le...

promise是怎麼來的?

一 promise是如何產生的 1.promise並不是乙個新的功能,它是乙個類,它只是對 非同步程式設計的 進行整合,它是解決非同步 層層巢狀的這種關係 讓你的 看起來更簡潔。2.在 es6 中 promise是乙個類 建構函式 使用它需要 new 例項。注意 在 es5 裡 類和建構函式是乙個意...