Machine Learning學習日記 — Coursera篇 (Week 6.3):Prioritizing What to Work on, Error Analysis

Pandora123
5 min readJun 8, 2016

--

Building a Spam Classifier

回目錄:Coursera章節

上一篇:Bias vs. Variance

下一篇:Handling Skewed Data

大綱

  1. Prioritizing What to Work on
  2. Error Analysis

1. Prioritizing What to Work on

假設我們要建立一個垃圾郵件的過濾器

先看一下垃圾郵件跟一般郵件的差別:

使用supervised learning,建立100個可能跟垃圾郵件相關的詞彙(實務上可能為數以萬計的數量),根據這些詞彙在郵件中的出現頻率與次數來預測其是否為垃圾郵件

這邊有幾個可以使垃圾郵件分類器更為精準的辦法:

honeypot:故意作為誘餌(資安術語) / sophisticated:複雜的 / Dealer:貿易商 / punctuation:標點符號

大概的意思是:

1.在網路上到處註冊以收集大量的訓練資料(垃圾郵件)

2.將郵件標頭(header)的資訊變為參數的一種

3.辨別相似的詞彙

4.偵測拼字錯誤

隨堂練習

routing:路由(網路術語) / in advance:事先 / deliberate:故意的 / misspelling:拼錯 / dimensional:維度的 / presence or absence:是否出現 / massive:大量的 / alternatives:替代方案

Ans:

2. Error Analysis

systematic:系統地 / trend:趨勢

Andrew建議,若是要建立一個垃圾郵件分類器,可以先快速的建立一個簡單所需的演算法,然後用其驗證cross-validation的資料

再來根據繪出的圖形來決定是否更多的資料、更多的參數會改善此模型

另外可以透過Error analysis來人工檢驗出錯的郵件,藉此觀察是哪邊可能出了系統性的錯誤(下圖將詳細說明Error analysis)

Manually:人工地 / 製藥業 / Replica:複製品

假設在cross validation set中我們發現有100個分類錯誤,接下來以人工的方式檢驗:分類這些錯誤的資料(像是釣魚郵件)、或許可以改善的特點(不尋常的標點符號、郵件路由)

最後,若這個演算法是有著評估數值的話,會非常有幫助的。

舉例來說:是否該將discount/discounts/discounted/discounting等視為是同一個字呢?若判斷出文字的大小寫會有幫助嗎?

假設我們採用了一個stemming software,並區分出大小寫的不同,然後一併陳列出其與並未使用的評估比較

stemming:詞幹的

因為Error analysis對於這種是否有可能改善的提案沒什麼太大的幫助,因此唯一的辦法就是藉由評估數值try & error。

隨堂練習

recommended:推薦的 / examining:檢驗 / specifically:特定的 / no longer:不再是 / generalize:歸納、一般化 / excessive:過多的

--

--