吳恩達公開課心得——機器學習的系統設計

設計機器學習系統時應該優先考慮的問題:

  1. 垃圾郵件識別中,輸出很容易確定,是或者不是。特徵怎麼確定呢?一般選擇某些關鍵字,在一個郵件中尋找這些關鍵字,找到即為1,沒找到即為0,把這些1和0組成一個向量,就構成了一個輸入。關鍵字的選擇不僅應該包括垃圾郵件的特徵,比如buy,deal,discount等等,也應該包括可以明確為非垃圾郵件的關鍵字,比如所在領域的轉有名詞等等。試想,如果只有垃圾郵件的特徵,那麼難免在工作郵件中也出現一兩個特徵單詞,很容易被誤判為垃圾郵件。有了非垃圾郵件關鍵字,就可以抵消一部分他們的影響。
  2. 那麼問題來了,我們應該如何選擇關鍵字呢?應該使用誤差分析法。簡單的說,就是先實現一個簡單的算法,畫出學習曲線來決定是需要更多特徵值還是需要更多的數據等等。最後使用誤差分析法,從交叉驗證集中找出分類錯誤的例子,然後找出原因並進行統計,把出錯最多的原因找出來,然後在算法中解決這類原因造成的錯誤。然後繼續這個循環。
  3. 算法中最好給出一個數字化的評價指標,這樣就可以直觀的看出某個改進是否有效,幫助你更快的做出選擇。

4. 誤差度量值優化。舉個例子,是否癌症的預測中,假如我們的算法能得到99%的正確率,你可能會說效果很好。可是如果測試集中實際只有0.5%的樣本是癌症,那麼我可以簡單設計一個所有的樣本都不是癌症的算法,那麼這個算法的準確率至少99.5%,這個算法能說是一個更好的算法嗎?對這種樣本嚴重不成比例的問題,建議使用查準率和召回率來作為評價指標。查準率是指當我做出正面的判決時,患者確實得了癌症得比率;召回率是指,在所有實際上有癌症的患者中,我有多大比例能預測對,也就是說我會召回多大比例的癌症患者來治療。

吳恩達公開課心得——機器學習的系統設計

剛才那個例子中,如果算法把所有人都判定為非癌症,那麼顯然召回率為0,因此可以認為不是一個好算法。

一般我們需要用一個數字來評估一個算法的優劣,查準率和召回率又不可偏廢,那該如何取捨呢?

這裡推薦使用F1 score: 2*P*R/(P+R)

5.之前一直強調,樣本多並不一定對學習算法有幫助。但是事實證明,在某些條件下,樣本多是有重要作用的。具體條件就是特徵X已經包含了足夠多的信息,使得該領域的專家能據此做出準確的判決,那麼大量的數據是有效的,而且此時具體哪種算法就顯得不那麼重要了。比如完形填空。相反,假如你只有一個房子的面積信息,要你預測房價,這是任何人都無法做到的事情,因此再高明的算法,再多的數據也無法得到好的結果。


分享到:


相關文章: