1. 程式人生 > >機器學習系統設計——誤差分析

機器學習系統設計——誤差分析

Rcommended approach

  • Start with a simple algorithm that you can implement quickly. Implement it and test it on your cross-validation data.
  • Plot learning curves to decide if data, more features, etc. are likely to help.
  • Error analysis: Manually examine the example (in cross validation set) that your algorithm make errors on. See if you spot any systematic trend in what type of examples it is making errors on.

建議的方法

  • 從一個可以快速實現的簡單演算法開始。 實現它並在交叉驗證資料上進行測試。
  • 繪製學習曲線以確定資料,更多功能等是否可能有所幫助。
  • 錯誤分析:手動檢查演算法發生錯誤的示例(在交叉驗證集中)。 看看出現錯誤的哪種型別的例子的任何系統趨勢。

誤差分析的具體例子(垃圾郵件)

交叉驗證集有500組資料(mcv=500)

演算法分類錯誤100個郵件

手動檢查這100個錯誤的郵件,並基於以下幾點分類:

  • 錯誤郵件的型別
    • 比如你發現這100箇中有12個關於“製藥”的、4個關於“複製品”的、53個關於“釣魚網站”的和31個其他的。你就會發現你的演算法對於“釣魚網站”的識別是比較欠缺的,這時你就可以針對性的優化演算法。
  • 你覺得什麼線索(特徵)能幫助演算法正確分類
    • 比如你發現有5個有“蓄意的誤解”(m0rgage, med1cine, etc)的特徵、16個“異常路由”的特徵、32個“異常標點”特徵等,然後針對性的優化演算法。

數值評估的重要性

有些演算法會取單詞中的前幾個字母來加快演算法的執行等,比如取 discount/discounts/discounted/discounting 的前6個字母,這樣這些詞就會被視為是一個詞。

那麼該不該使用這種方法呢?

最簡單的方法就是“試試”。試試使用和不使用的時候“交叉驗證誤差”的差別,比如,不用這種方法得到5%的誤差,用了3%的誤差,那就用。

另外是大小寫問題,比如 Mom/mom 需要做同樣的處理嗎?“試試”就知道了。比如,處理後得到3.2%的誤差,不用3%,那就不用。