Machine Learning學習日記 — Coursera篇 (Week 6.3):Prioritizing What to Work on, Error Analysis
Building a Spam Classifier
回目錄:Coursera章節
大綱
- Prioritizing What to Work on
- Error Analysis
1. Prioritizing What to Work on
假設我們要建立一個垃圾郵件的過濾器
先看一下垃圾郵件跟一般郵件的差別:
使用supervised learning,建立100個可能跟垃圾郵件相關的詞彙(實務上可能為數以萬計的數量),根據這些詞彙在郵件中的出現頻率與次數來預測其是否為垃圾郵件
這邊有幾個可以使垃圾郵件分類器更為精準的辦法:
大概的意思是:
1.在網路上到處註冊以收集大量的訓練資料(垃圾郵件)
2.將郵件標頭(header)的資訊變為參數的一種
3.辨別相似的詞彙
4.偵測拼字錯誤
隨堂練習
Ans:
2. Error Analysis
Andrew建議,若是要建立一個垃圾郵件分類器,可以先快速的建立一個簡單所需的演算法,然後用其驗證cross-validation的資料
再來根據繪出的圖形來決定是否更多的資料、更多的參數會改善此模型
另外可以透過Error analysis來人工檢驗出錯的郵件,藉此觀察是哪邊可能出了系統性的錯誤(下圖將詳細說明Error analysis)
假設在cross validation set中我們發現有100個分類錯誤,接下來以人工的方式檢驗:分類這些錯誤的資料(像是釣魚郵件)、或許可以改善的特點(不尋常的標點符號、郵件路由)
最後,若這個演算法是有著評估數值的話,會非常有幫助的。
舉例來說:是否該將discount/discounts/discounted/discounting等視為是同一個字呢?若判斷出文字的大小寫會有幫助嗎?
假設我們採用了一個stemming software,並區分出大小寫的不同,然後一併陳列出其與並未使用的評估比較
因為Error analysis對於這種是否有可能改善的提案沒什麼太大的幫助,因此唯一的辦法就是藉由評估數值try & error。
隨堂練習
Ans: