現乙個key-value的資料庫,那麼有很多種模式都可以實現,但是他們最終所達到的效果卻是千差萬別的。同樣,在機器學習領域,如果我想實現乙個分類器,也有很多種演算法,但是每種演算法都對資料做了不同的前提假設。
曾經當我們處理少量資料的時候,我們往往可以先設計若干種演算法,然後每種都測試一下,選擇一種最優的方法,但是當面對大資料時,我們就需要轉變一下思路,首先對資料進行分析,然後選擇一種模型對資料進行處理。
在過去,我們經常會發現,很多人都沉迷於某一種模型,無論遇到任何問題他們都會選擇同樣的模型來解決問題,而原因僅僅是他們擅長這個模型,而不是資料適合這個模型。在這篇文章中,主要會來陳述下在機器學習時常見的幾種錯誤。
1. 使用模型預設的損失函式
損失函式是乙個機器學習演算法的核心,損失函式決定了最終優化後得到的引數以及模型本身。在不同的業務場景下,優化的目標應該是不同的。例如我在珍愛網做付費使用者**時,由於付費使用者本身數量級就不大,所以我寧可誤判十個,也不能錯過乙個。所以這個時候我們就需要去修改分類器模型的損失函式。
2. 無根據地選擇線性模型
這個同樣是我很常遇到的同事會犯的錯誤。遇到乙個分類問題,二話不說就上邏輯回歸,其實原因很簡單,就是因為邏輯回歸效率高,實現容易。但是大家往往都忽略了一點,邏輯回歸本身就是乙個線性模型,但是真實資料是否線性可分卻是我們未知的情況。其實我個人認為,由於高維資料下判斷資料是否線性可分幾乎是乙個不現實的任務,所以我個人的經驗往往是先使用邏輯回歸做一次分類,但是同時也會採用決策樹,或者svm等非線性模型來對該資料進行重新的分模擬對。(我不知道是否有更好的方法)
話說在大資料情況下,很多人都來和我講現在都提倡海量資料+線性模型,但是我個人認為這句話是有誤的,線性模型的成立並非建立在海量資料的基礎上,而是建立在海量特徵的基礎上,說的更恰當些,應該是建立在更好的特徵工程的基礎之上。
3. 忽視異常值的意義
異常值是個很有趣的事情,讓你又愛又恨。我記得之前在統計之都上看過一篇文章對我啟發很大,說曾經我們都願意把異常值直接給丟掉,但是我們卻忘記了異常值並非錯誤值,而同樣是真實情況的表現,我們之所以認為異常,只是因為我們的資料量不足夠大而已。文中還舉了乙個例子,說我們用計算機來模擬高斯分布,也一樣會模擬出一些資料點落在n個標準差之外,而我們並不能說這是異常點,因為如果我們把這些點刪除掉,這就不是乙個高斯分布了。所以異常值很多情況下非但不能丟掉,還需要引起我們的足夠重視和分析,例如**的收入突然增長。
但是我們又要注意這個異常值是否是錯誤值,如果是錯誤值,這個時候我們就應該想辦法把這些錯誤值去掉,因為這些錯誤往往會影響我們實際的模型效果。如果當訓練資料中包含一些異常值的時候,我們就需要考慮模型的敏感性了,例如adaboost, kmeans這種就屬於對異常值很敏感的機器學習模型。
4. 不考慮n和p的關係
n: 訓練資料的數量。p: 特徵的數量。svm核函式的乙個關鍵概念就是維度提公升,如果當n << p的時候,還依然採用svm來選定模型,那麼就必然會導致p進一步增加,於是導致特徵的引數中自由變數增加,必然會對分類的效果產生很大的影響。
5. l1 / l2 正則化之前並沒有對特徵進行標準化
這個道理很簡單,如果你的每個特徵是處在不同的區間時,你是沒辦法去做l1/l2的正則化的,舉個例子,x1 代表年齡,x2 代表收入,如果我採用乙個廣義的線性模型,比如 y = f(ax1 + bx2),然後x1大小範圍是10-50,x2大小範圍是5000 – 100000,a和b根本就沒辦法在乙個量級上,這時正則化一定是有問題的。
6. 變數之間的共線性問題
當特徵變數之間產生共線性時,產生最大的問題就是讓線性模型的引數是無法解釋的,正常來說線性模型的引數權重基本就代表了該特徵變數的重要性,但是如果共線性,那麼這個意義就失效了。但是我也並不知道這個有什麼特別好的解決方法,因為當特徵增加時,特徵之間的共線性(或者說相關性吧,這樣更泛一些)幾乎是不可避免的。
機器學習常見的六大錯誤
現乙個key value的資料庫,那麼有很多種模式都可以實現,但是他們最終所達到的效果卻是千差萬別的。同樣,在機器學習領域,如果我想實現乙個分類器,也有很多種演算法,但是每種演算法都對資料做了不同的前提假設。曾經當我們處理少量資料的時候,我們往往可以先設計若干種演算法,然後每種都測試一下,選擇一種最...
機器學習常用六大演算法
機器學習是人工智慧行業的乙個創新且重要的領域。我們為機器學習程式選擇的演算法型別,取決於我們想要實現的目標。現在,機器學習有很多演算法。可能對於初學者來說,這是相當不堪重負的。此前,educative.io 聯合創始人法希姆烏爾哈克 fahim ul haq 發文簡要介紹了幾種流行的機器學習演算法,...
學習英語的六大要訣
當我們意識到有必要學會英語,並且下決心去攻克這個難關時,我們就一定要 1 投資我們的時間和心智。我們並不傻,有足夠的智慧型和大腦空間來消化儲存那些abcd。別人能學會,我們也能學會,只要我們善於投資自己的時間。上帝賦於我們每日24小時,上班8小時,睡覺7小時,三餐飯2小時,莫名其妙kill2小時,無...