從 0 開始機器學習 機器學習系統的設計

2022-09-03 12:42:10 字數 1930 閱讀 8543

建議先花點時間實現乙個簡單能用的演算法,比如線性回歸**房價,不需要一開始就花很多時間設計複雜的演算法(在軟體開發中叫避免過早優化),你可以先實現能用的演算法,然後利用上篇文章從 0 開始機器學習 - 機器學習演算法診斷中的學習曲線等診斷法來分析演算法的優化方向,這樣乙個簡單的演算法就成為了優化問題的好工具!

獲得更多的訓練樣本

嘗試減少特徵的數量

嘗試獲得更多的特徵

嘗試增加多項式特徵

嘗試減少正則化程度

嘗試增加正則化程度

...假如我們有多個方向可以作為優化的方向,比如以下的方向都可以解決模型的高方差問題:

獲得更多的訓練樣本 - 適用於高方差的模型

嘗試減少特徵的數量 - 適用於高方差的模型

嘗試增加正則化程度 \(\lambda\) - 適用於高方差的模型

那我們又如何來評估每種方法的效能到底提公升多少呢?或者說有沒有一種直接的指標來告訴我,使用了這樣一種優化措施後我的演算法效能到底提高了多少百分比?

今天就來看看如何分析機器學習演算法的誤差。

在介紹誤差分析指標前,先來了解乙個偏斜類問題:

訓練集中有非常多同一類的樣本,只有很少或者沒有其他類的樣本,這樣的訓練樣本稱為偏斜類。

比如**癌症是否惡性的 100 個樣本中:95 個是良性的腫瘤,5 個惡性的腫瘤,假設我們在這個樣本上對比以下 2 種分類演算法的百分比準確度,即分類錯誤的百分比:

普通非機器學習演算法:人為把所有的樣本都**為良性,則分錯了 5 個惡性的樣本,錯誤率為5 / 100 = 0.05 = 5%

神經網路演算法:訓練後** 100 個樣本,把 10 個良性的樣本誤分類為惡性的樣本,錯誤率為10 / 100 = 10%

如果僅僅從錯誤率大小來判斷演算法的優劣是不合適的,因為第一種人為設定樣本都為良性的演算法不會在實際專案中使用,但是通過指標卻發現效果比神經網路還要好,這肯定是有問題的。

正是因為存在這麼一種偏斜類的訓練樣本,所以我們需要用乙個更加一般性的演算法準確度評價指標,以此適用與任何型別的樣本,解決上面那種荒唐的結論。

為了解決這個問題,使用查準率(precision)和查全率(recall)這 2 個誤差指標,為了計算這 2 者,我們需要把演算法**的結果分為以下 4 種:

正確肯定(true positive,tp):**為真,實際為真

正確否定(true negative,tn):**為假,實際為假

錯誤肯定(false positive,fp):**為真,實際為假

錯誤否定(false negative,fn):**為假,實際為真

把這 4 個寫到**裡面:

實際值 \ **值

positive

negative

positive

tpfn

negative

fptn

然後我們就可以定義這 2 個指標啦:

有了這 2 個指標我們再來分析下上面的演算法效能,第乙個人為的演算法認為所有的腫瘤都是良性的,也就等價於原樣本中 5 個惡性的腫瘤樣本乙個都沒有**成功,也即所有惡性腫瘤樣本,該演算法成功**惡性腫瘤的比例為 0,所以查全率為 0,這說明該演算法的效果並不好。

在實際的使用中,查準率和查全率往往不能很好的權衡,要想保持兩者都很高不太容易,通過使用以下的公式來整合這 2 個評價指標可以幫助我們直接看出乙個演算法的效能優劣:

\[f_1 score = 2 \frac

\]以後評價乙個演算法的效能直接比較 f1 score 即可,這就大大方便了我們對比演算法的效能。

除了評價指標,還有乙個要關心的問題就是樣本的規模,在機器學習領域有一句話:「取得成功的人不是擁有最好演算法的人,而是擁有最多資料的人」,這句話的意思就是說當我們擁有非常多的資料時,選擇什麼樣的演算法不是最最重要的,一些在小樣本上表現不好的演算法,經過大樣本的訓練往往也能表現良好,比如下面這 4 種演算法在很大樣本上訓練後的效果相差不是很大,但是在小樣本時有挺大差距:

開始學習機器學習

由於想入深度學習坑,但基礎太薄弱,打算還是先把機器學習系統學習一遍,參考教材為周志華的 機器學習 之後再重點學習神經網路 caffe啥的吧。機器學習基本術語 1 資料的集合為資料集,每乙個資料具有屬性還有相應的屬性值 2 從資料中學得模型的過程稱為 學習 或 訓練 使用的資料稱為 訓練資料 樣本稱為...

機器學習 從0開始

by 香蕉麥樂迪 機器學習簡介 機器學習是許多演算法的統稱,其中包含最近幾年火熱的深度學習,還包括許多適用於各種不同場景的其他機器學習演算法 邏輯斯特回歸,svm,knn,adaboost,em,kmeans等等 這些演算法從誕生到現在都有了幾十年的歷史 深度學習指的是深度神經網路,其中用於處理影象...

從0開始的機器學習的學習

mar 2,2015 從2012年開始我在微博上關注了一些混段子界和學術界 主要是計算機視覺和機器學習 的博主,很有收穫,總算找到一些門道。其實也簡單,首先還是要補充自己的數學基礎,即線性代數 概率論以及微積分等。我自己的微積分還記得,馬馬虎虎,線性代數幾乎忘掉,完全是靠重新學習 mit的線代代數入...