日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

[机器学习笔记]Note9--机器学习系统设计

發布時間:2023/12/10 windows 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [机器学习笔记]Note9--机器学习系统设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

繼續是機器學習課程的筆記,本節課的內容主要是介紹如何設計一個機器學習系統。

首先要做什么

這節課將介紹如何設計一個機器學習系統,首先是以設計一個垃圾郵件分類器算法作為例子。

為了解決這個問題,首先要決定的是如何選擇并表達特征向量x,然后使用y來作為分類結果,y=1表示是垃圾郵件,0則是非垃圾郵件。

然后這里的特征x,可以選擇100個最常出現在垃圾郵件中的詞來構成一個向量,那么將得到一個100×1大小的特征向量x,如???????????0110?1???????????,這里每一行都表示一個詞語,0表示沒有出現,1表示出現該詞語。

實踐中,一般會使用出現頻率最多的n個詞語(10000到50000個)作為訓練集,而不是手動選擇100個單詞。

接下來就是考慮如何優化算法,即提高算法的效果了。

對于垃圾郵件分類器算法,我們可以選擇下列其中一個方法來去改進算法:

  • 首先是收集更多的數據,這樣可以有更多的垃圾郵件和非垃圾郵件的樣本,而且這個也是一個解決過擬合的辦法
  • 基于郵件的路由信息開發一系列復雜的特征
  • 基于郵件的正文信息開發一系列復雜的特征,比如對于像單詞”discount”和”diccounts”是否視為同一個單詞處理,如何處理如”deal”和”Dealer”,還有就是有關標點符號的問題
  • 為探測刻意的拼寫錯誤開發復雜的算法,比如寫成m0rtgage,med1cine(medicine),w4tches(watches)
  • 這些方法很難決定應該在哪個方法上花費時間和精力,可以任意挑選其中一個方法來專研下去,但是切記首先需要做的是列出可行的方法有哪些,然后再挑選,而不是憑著感覺想到什么方法就用什么方法。

    誤差分析

    誤差分析可以幫助我們系統化地選擇該做什么。

    構建一個學習算法的推薦方法如下:

  • 先設計一個簡單快速實現的算法,實現該算法并用交叉驗證集測試這個算法
  • 繪制學習曲線,即判斷是低擬合還是過擬合,然后再決定是增加數據,或者增加特征,還是做其他選擇
  • 進行誤差分析,即人工檢查交叉驗證集中算法錯誤分類的實例,看看這些實例是否有某種系統化的趨勢。
  • 這里還是用垃圾郵件分類器為例,誤差分析要做的是檢驗交叉驗證集中我們算法產生錯誤預測的所有郵件,看:

    • 是否能將這些郵件按照類分組。例如醫藥品垃圾郵件,仿冒品垃圾郵件或者密碼竊取郵件等。然后看分類器對哪一組郵件的預測誤差最大,并著手優化。
    • 思考如何改進分類器。如發現是否缺少某些特征,記下這些特征出現的次數。比如記錄錯誤拼寫出現了多少次,異常的郵件路由情況出現了多少次等,然后從出現次數最多的情況開始著手優化。

    誤差分析并不能總幫助我們判斷應該采取什么辦法,有時我們需要嘗試不同的模型,然后進行比較,而在模型進行比較的時候,使用數值來判斷那一個模型更好更有效,通常我們是看交叉驗證集的誤差

    比如在垃圾郵件分類器例子中,對于“我們是否應該將discount/discounts/discounted/discounting處理成同一個詞語?”,如果這樣子可以改善我們的算法,這里看采用一些詞干提取軟件來查看單詞的前幾個字母是否相同,當然這里可能會有誤判斷的情況,比如universe(宇宙)和university(大學)這兩個單詞前面7個字母都是相同的,很有可能被認為是同一個單詞。
    但是這里一旦嘗試采用詞干提取軟件來改進算法,我們就可以通過對比使用前后的交叉驗證集誤差來判斷是否需要使用。而這就是使用數值檢驗的好處了。

    類偏斜的誤差度量

    類偏斜情況表現為訓練集中有非常多的同一種類的實例,只有很少或沒有其他類的實例。

    假設我們希望用算法來預測癌癥是否是惡性的,在訓練集中只有0.5%的實例是惡性腫瘤。假設我們編寫一非學習而來的算法,在所有情況下都預測腫瘤是良性的,那么誤差只有0.5%。但是通過訓練而得到的神經網絡算法卻有1%的誤差,那么,此時誤差的大小是不能視為算法效果的依據的。

    這里就引入查準率(Precision)和查全率(Recall)。
    我們將算法預測的結構分成4種情況:

  • 正確肯定(True Positive,TP): 預測為真,實際為真
  • 錯誤否定(False Negative,FN): 預測為假,實際為真
  • 錯誤肯定(False Positive,FP): 預測為真,實際為假
  • 正確否定(True Negative,TN): 預測為假,實際為假
  • 如下圖所示:

    上圖左側表格就是一個比較形象的表示,行表示的是預測結果,列表示實際的結果。

    所以,

    • 查準率=TPTP+FP,例如,在所有預測為惡性腫瘤的病人中,實際上有惡性腫瘤的病人的百分比,越高越好。
    • 查全率=TPTP+FN,例如,在所有實際有惡性腫瘤的病人中,被預測為由惡性腫瘤的病人的百分比,也是越高越好。

    那么對于剛剛總是預測腫瘤為良性的算法,其查全率是0,因為其正確肯定TP=0。

    查全率和查準率之間的平衡

    這里繼續使用預測惡性腫瘤的例子。這里使用邏輯回歸算法,然后使用閾值是0.5來預測是否是惡性腫瘤。

    假設我們希望只在非常確信的情況下預測為真,即腫瘤是惡性的,也就是希望更高的查準率,那么可以使用比0.5更多的閾值,即0.7,0.9等,這樣的確可以減少無措預測病人為惡性腫瘤的情況,但是也會增加未能成功預測腫瘤為惡性的情況。

    另一種情況,就是希望提供查全率,也就是盡可能讓所有有可能是惡性腫瘤的病人得到進一步地檢查和診斷,那么就可以使用比0.5更小的閾值,如0.3,0.1等。但是這也必然會增加錯誤預測為惡性腫瘤的數量,也就是會降低查準率。

    我們可以將不同閾值情況下,查全率和查準率的關系繪制成圖表,如下所示:

    所以我們希望有一個幫助我們選擇這個閾值的方法。一種方法是計算F1,其計算公式如下:

    F1?Score=2PRP+R

    我們選擇使得F1值最高的閾值。這里其實還是有很多其他方法結合考慮查準率和查全率,但是出于歷史原因以及習慣原因,大多數使用的還是F1方法。

    機器學習的數據

    最后來探討下一個關鍵的因素,就是使用的數據集的數據量大小。
    視頻中舉出一個例子,有兩個人研究一個如何對混淆的詞語進行分類的問題。這里使用的算法有如邏輯回歸算法,一種叫Winnow的算法,一種基于內存的算法,以及樸素貝葉斯方法。而下面是這不同算法的準確率隨著訓練集數量增多而變化的曲線圖。

    從上圖中可以看出,盡管數據量非常大的時候,所有算法的效果都是非常好的。
    通常情況下需要思考,在使用的這些特征面前,一個真人專家是否可以有信心地預測結果。如果回答是肯定的,我們需要思考的就是我們的模型是如何的。如果算法是高偏差,即過擬合了,那么增加訓練集的數據量就不太可能導致過擬合,這樣可以使得交叉驗證集誤差和訓練集誤差的差距更小,這種情況就必須使用更多數據。

    也可以這樣認識這個問題,我們是希望我們的算法低偏倚和低偏差的,所以做法就應該是選擇更多的特征來降低偏倚,再增加數據量來降低偏差。

    小結

    本節課主要是介紹如何設計一個機器學習系統,也就是針對某個問題,如何設計一個機器學習算法來解決,包括一開始先設計一個簡單的快速實現方法,然后通過誤差分析,學習曲線等來繼續改進算法,提高算法的效果。然后還介紹了查全率和查準率的概念。

    總結

    以上是生活随笔為你收集整理的[机器学习笔记]Note9--机器学习系统设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。