入門機器學習 十一 機器學習系統的設計

2021-09-22 21:23:16 字數 2042 閱讀 5520

1. 誤差分析(error analysis)

當研究機器學習時,最好的方法不是使用複雜的系統,而是用簡單的演算法,最快得到結果。即便執行不完美,但是也要執行一遍,最後通過交叉驗證來驗證資料。一旦做完,可以畫出學習曲線,通過畫出學習曲線,以驗證檢驗誤差來判斷演算法是否具有高偏差或者高方差的問題。在分析之後再決定使用更多的資料訓練或者加入更多的特徵變數。所以構建乙個學習演算法的推薦方法為:

① 從乙個簡單的能快速實現的演算法,實現該演算法並用交叉驗證集資料測試這個演算法;

② 繪製學習曲線,決定增加更多資料,或者新增更多特徵,還是其他選擇;

③ 進行誤差分析:人工檢查交叉驗證集中我們演算法中產生**誤差的例項,看看這些例項是否有某種系統化的趨勢。

有以下幾個tips可以注意一下:

① 強烈推薦在交叉驗證集上來實施誤差分析,而不是在測試集上;

② 當研究乙個新的機器學習問題時,推薦實現乙個較為簡單快速的演算法,當有了初始的實現之後,他會變成乙個非常有力的工具來幫助決定下一步的做法。可以先看看演算法造成的錯誤,通過誤差分析,來決定優化的方式。

2. 類偏斜的誤差度量(error metrics for skewed classes)

當我們遇到這樣一種問題時:**癌症是否為惡性,但是在訓練集中,只有0.5%的例項是惡性腫瘤,假設我們編寫乙個演算法,在所有的情況下都**所有的腫瘤都是良性的,那麼誤差只有0.5%,然後我們通過訓練而得到的神經網路的演算法卻有1%的誤差,顯然這時候誤差的大小式不能視為評判演算法效果的依據的。所以這種問題可以通過查準率(precision)和查全率(recall)來衡量類偏斜的誤差。

先明白一下幾個變數的意義:

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

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

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

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

查準率p=tp/(tp+fp),即在所有的**為正例的樣本中,真正是正例的比例。例如,在所有實際上有惡性腫瘤的病人中,成功**有惡性腫瘤的病人的百分比。

查全率r=tp/(tp+fn),即在所有的正例中,**正確的比例。例如,在所有實際上有惡性腫瘤的病人中,成功**有惡性腫瘤病人的百分比。

那麼查準率和查全率怎麼取捨呢,假設我們的演算法輸出結果在0到1之間,我們使用閾值為0.5來經**真和加的判斷。如果我們希望在非常確信的情況下**為真(腫瘤為惡性),即我們希望更高的查準率,我們可以使用更大的閾值,比如0.7,這樣做我們會減少錯誤**病人為惡性腫瘤的情況,同時卻會增加未能成功**腫瘤為惡性的情況;如果我們希望提高查全率,盡可能讓所有有可能是惡性腫瘤的病人都得到進一步的檢查和診斷,我們應該使用比0.5更小的閾值,比如0.3.

在不同的閾值下,查全率和查準率的關係可以由一下圖來表示:

有乙個可以幫助選擇閾值的方法,就是計算f1值(fi score),其計算公式為:

這樣我們可以選擇是f1更高的閾值,依次來權衡查全率和查準率之間的關係。

3. 關於機器學習中的資料(data for machine learning)

① 關於機器學習系統的資料,不要盲目地開始,要花大量的時間來收集大量的資料,因為資料有時候是唯一能起到實際作用的。

② 關於資料量和機器學習演算法效能之間的關係了,可以由下圖表示出來:

該圖表示的含義為,總體趨勢上,資料量越大,演算法(不管好的演算法還是劣的演算法)的效能越好。在資料量少的時候,好的演算法的效能要優於劣的演算法,但是隨著資料量的增大,劣的演算法的效能可能會趕超好的演算法。

機器學習 1 機器學習的入門

最近由於專案要求,從零開始自學機器學習,使用語言是python2.7。機器學習分類 監督學習,無監督學習,強化學習 監督學習 對事物未知表現的 包括分類問題和回歸問題。1 分類 指給乙個新的模式,根據訓練模型推斷它所對應的類別是多少,是一種定性輸出,也叫離散變數 2 回歸 指給乙個新的模式,根據訓練...

機器學習入門

研究生考試結束了,考研通知書也在幾天前到手了,是時候安心下來考慮一下未來研究生的生活和學習了,看現在機器學習特別的火,所以我就先跟風學習一下機器學習吧。由於剛開始學習,所以對一些專有名詞不是很熟悉,所以特別做了一下總結,因為剛剛入門,所以就先整理了這些。人工智慧 一 認知和感知 區別看待 目前是在感...

機器學習入門

1.常用演算法 決策樹 隨機森林演算法 邏輯回歸 svm 樸素貝葉斯 knn演算法 k means演算法 adaboost 演算法 神經網路 馬爾可夫 2.聚類和分類的區別 分類 比如有一堆資料,你已經事先對他們做好了分類。你想要的功能就是,假如來了一條測試資料,我想知道他是哪一類,這就是分類。聚類...