結構化機器學習專案第二週1 5筆記

2021-09-09 05:35:19 字數 2302 閱讀 1995

如果你偶然發現你的分類器在某乙個方向犯錯誤,是否應該花費時間去專注於修正這個錯誤?

吳老師舉了這樣乙個例子:如果你發現你的貓分類器總是會把狗認成貓,是否應該花幾個月時間去做乙個專案區分是否是狗,然後應用到這個專案中?

在做這個決定之前,首先收集一下錯誤的開發集例子,然後手動檢查你的開發集裡有多少錯誤標記是狗。假設你的錯誤例子中只有百分之五是狗,那麼即便你花了幾個月時間,也只是讓你的錯誤率下調百分之五。或許在這種情況下也應該花費時間,但至少這個分析給出了乙個你的誤差調整上限。如果你的開發集裡錯誤標記裡有百分之五十是狗,這種情況下就很有必要去探索一下這個誤差減半的方向了。

如果遇到有多重錯誤或改進的方向的話,可以去列乙個**。

當你遍歷完你的開發集錯誤例子之後,對於其中的錯誤型別想必一定有了比較充分的認識。通過**的最後一行,你可以明顯地看出當前影響分類器的判斷的最重要因素是什麼,並得到你之後一段時間的任務。如圖,影響最高的顯然是模糊影象而不是狗的干擾,那麼接下來你的研究也許可以專門針對模糊進行優化。

這個快速統計的**你可以經常做,在幾個小時內就可以真正幫你選出高優先順序的任務並了解每個手段有多大的提公升空間。

如果你偶然發現資料的人工標註有錯誤,那是否應該花費時間去校正這一類錯誤呢?

如果你發現你的資料中有標註錯誤的資料,它對於不同集的影響是不同的。

對於訓練集來說,如果你的標註錯誤的資料足夠隨機的話,其實對於最後訓練的效果是沒有什麼影響的。只要總資料量足夠大,實際誤差可能不會太高。

ps:雖然深度學習演算法對隨機誤差具有魯棒性,但對系統性錯誤就沒有這種性質了。比如,你的標註一直把白色的狗標註成貓,你的分類器就有問題了,它把白色的狗認成貓的可能性就大大增加了。

如果你仍舊十分擔心錯誤標註對你的分類器造成的影響,不妨仿照上一節來列乙個**,不過於上乙個**不同,我們可以在**中加一列#標註錯誤#的選項,然後通過最後的統計來看一下這類錯誤對你的影響。

老師的建議是:如果這百分之六的錯誤標註嚴重影響到了你在開發集評價演算法的能力,那就有必要修正錯誤的標籤。(比較重要度)

如果你要修正你的開發集,注意如下:

當你面臨乙個全新的任務,需要構建乙個全新的模型的時候,大多是情況下不能及時開始構建你的新系統,因為你考慮到了很多的問題……

對此,老師的建議是,快速下手:

這個例子完全是將大資料量全部分給大資料量,然後將少數資料量平分給開發集和測試集。

如果你的訓練集和開發集來自不同的分布,那麼怎麼樣處理方差和偏差的問題呢?

定義乙個新的資料集,叫做訓練-開發集。

隨機打散訓練集和開發集,然後生成訓練-開發集。就像開發集和測試集來自同一分布一樣,訓練-開發集和訓練集、開發集也來自同一分布。所以觀察誤差的時候,就要同時觀察訓練集的誤差,訓練-開發集的誤差,開發集的誤差,來判斷是方差的問題還是資料不匹配的問題。

所以我們一般要關注的誤差有:人的平均水平誤差,訓練集誤差,訓練-開發集誤差,開發集誤差。他們之間分別對應著可避免誤差,方差,資料不匹配問題的嚴重程度。同時你也可以檢視測試集的誤差來看是否模型對開發集過擬合了。如果測試集誤差和開發集誤差相差過大,就說明是這個問題了,也許你需要乙個更大的開發集了。

但有些時候,誤差並不是一直都在變大,而有些時候在測試集上的結果還會變小。下面的表比較總體地展示了各個誤差之間的關係。

結構化機器學習專案

機器學習 ml 策略 2 參考鏈結 deeplearning.ai的第三課 structuring machine learning projects.講解了如何從誤差角度分析改善模型,如何劃分訓練驗證測試集,設定優化目標,偏差方差分析,資料不匹配問題,遷移學習和多工學習,端到端學習的優缺點.原載於...

深度學習(吳恩達 ) 結構化機器學習

一 關於訓練誤差分析 二 關於錯誤的標註資料 背景 深度網路隨機誤差魯棒性高,系統性誤差魯棒性低。機制 抽樣分析誤差分布,focus 最主要的誤差部分。方針 1.開發集和測試集需要同時修正 2.好壞都要關注 3.訓練集可以有部分差異,同dev和testtest 吳 重視對訓練誤差樣本的統計分析,幫助...

機器學習 第二週 (決策樹)

1.屬性選擇的先後順序 1.id3演算法實現 id3演算法的詳細實現步驟如下 import pandas as pd from sklearn.tree import decisiontreeclassifier,export graphviz from sklearn.metrics import...