數據和算法的相愛相殺(三):常見的數據分類算法

1 評論 6361 瀏覽 36 收藏 9 分鐘

和上一篇一樣,我們不講各個算法的數學原理和編程方式,作為給PM看的文章,我將各個算法原理講解清楚,以及算法的應用的場景、優點缺點、注意事項。

以下是數據與算法相愛相殺的第三篇,常見的數據分類算法。

數據分類在業務中應用無處不在,如果我們要開展多元化的服務、差異化的營銷,就需要對用戶群體進行分類,比如:通過對用戶收入的分類,我們找到高凈值人群,我們可以直接向他們推薦我們的產品或者VIP服務。

如果我們還有年齡的數據,我們可以向20-50歲之間的高凈值人群推薦我們職場的禮包,沿著這樣的路徑往前走,我們發現我們可以將更多維度的數據加入其中,我們的劃分的群體更加具體,我們對他們可以采取的措施也可以更加切合、得當。

如果數據量達到我們肉體難以cover的地步,基于大數據量的分類算法就有了用武之地了。數據分類是一種典型的監督學習,需要我們給出分類結果,然后建立起輸入和輸出之間的模型。

和上一篇一樣,我們不講各個算法的數學原理和編程方式,作為給PM看的文章,我將各個算法原理講解清楚,以及算法的應用的場景、優點缺點、注意事項。各位如果想進一步了解可以留言,或者網上找些材料。

數據分類可以用到算法比較多樣,比如:決策樹、貝葉斯網絡、神經網絡、遺傳算法等,不同的場景下不同的算法有不同的效用。但是分析的過程無外乎訓練過程、識別過程兩種。

  • 訓練過程:是從數據庫中找到訓練集,然后從訓練集中進行特征選取,對分類模型進行訓練,然后形成分類器。
  • 識別過程:是先將待識別的新樣本進行特征選取,然后利用分類器進行分類識別。

基于貝葉斯的數據分類

貝葉斯公式想必大家都比較了解,兩百年前英國數學家貝葉斯的成果,如今機器學習里很多都是將貝葉斯公式作為基礎原理。

樸素的貝葉斯就是揭示了,假如事件A發生的概率已知,事件B發生的概率已知,事件B在事件A發生的情況下發生的概率已知,那我們就知道事件A在事件B發生的情況下概率是多少。

公式如下:

P(A|B)=P(B|A) *P(A) / P(B)

在實際應用過程中,A一般是我們想要預測的概率,A包含的情況我們是清楚地,比如:預測游戲中預測是否有辱罵別人(有 或 無),B即是某一個辱罵詞匯的出現的概率,假如給我們一定的語料,我們就可以得出在某名玩家打出某個詞匯的時候,他被判定為辱罵的概率,如果我們設定一個閾值,我們就可以對其發出辱罵警告了。

通常我們進行一個企業級的分類流程需要經過數據準備、分類器訓練、分類器評估、分類識別。

  1. 數據準備:一般是語料庫或者其他原材料的準備,這個階段主要需要人工對語料進行分類,分類的清楚,合理對分類器的質量至關重要。
  2. 分類器訓練:這個階段有計算機完成,主要是計算各個屬性(事件包含的集),結果的概率,以及最終該屬性下某個結果的概率。
  3. 分類器評估:我們一般留出語料庫中20%的數據量做分類器的評估,常用的評估指標包括正確率、精準度、召回率、錯誤率,通過人工去驗證判斷是否準確,并進行調整。
  4. 分類識別:以上的過程完成后,這個分類器就可以開展實際的工作了。

二、基于adaboost的數據分類

adaboost是一種組合型算法,它會先產生一定數量的弱分類,然后將弱分類按權重組合成強分類,即最終的分類算法。adaboost算法可以用來處理分類問題,回歸問題等,分類方法比較精確的算法,是監督學習的一種。

它的基本原理是:先對初始數據進行訓練,找到閾值,生成模型(弱分類器),然后對分類對的降低其權重,分類錯誤的提升其權重。然后再次訓練模型,選定權重相加最小的,直到達到預定值。

adaboost在人臉識別、表情識別等場景中有較高的分析準確性,其過程較為復雜,這里不展開講,有想進一步了解的可以網上查閱資料。

三、基于K鄰近算法的分類器

k鄰近算法也叫KNN(k-Nearest Neighbor)是一種在互聯網領域常用到的,比較簡答的一種算法,在我們常看到的內容推薦、歌單推薦、購物推薦中多數都用到了該算法。

它的核心思想是:將每一名用戶(其具有大量的信息:身高、體重、興趣、愛好、購物習慣等,每個信息都有值)作為一個樣本點(多維空間的一個點),計算用戶兩兩之間的距離,并根據距離的遠近設定權值,然后評估距離某名用戶最近的(人工設置閾值)幾名用戶的行為(購買某件商品、聽了某首歌、看了某個電影、叫了某個外賣)并結合權重,向該名用戶推薦他有可能想要的產品或服務。

其中用戶與用戶距離的計算我們一般用歐式記錄或者余弦相似性測算,同時KNN也存在兩個問題,一個是由于要計算任意兩個樣本點之間的距離,技術算比較大,每新增一個樣本點都會帶來一輪計算。

另外一個是當一個沒有數據的樣本加入時,無法很短的時間內分析出其可能的屬性。

四、基于svm的數據分類

svm(support vector machine)也是一種線性的分類器,比較常用。

他的基本原理是:建立一個最優決策超平面(多維空間的扭曲平面,即訓練得到的模型),保持超平面分開的兩個樣本距離最大(模型訓練過程即是找到距離最大的兩個點穿過)。

對于一個多維的樣本集,算法隨機產生一個超平面并不斷移動,對樣本進行分類,直到訓練樣本中屬于不同類別的樣本點正好位于該超平面的兩側,滿足該條件的超平面可能有很多個,多以綏中得到這樣一個超平面,使得超平面兩側的空白區域最大化,從而實現對線性可分樣本的最優分法。

如下圖:

除了以上四種常用的分類算法,都是比較常見的分類方法。 除了以上幾種常用的分類算法之外還有其演變出來的算法,或其他實現方式的算法,可以這么說沒有萬全的算法,只有最合適的算法。

以上,歡迎交流,歡迎拍磚。 以上,歡迎交流,歡迎拍磚。

相關閱讀

數據和算法的相愛相殺(一):獲取數據要注意什么?

數據和算法的相愛相殺(二):常見的聚類算法

 

本文由 @沒空兒 原創發布于人人都是產品經理。未經許可,禁止轉載

題圖來自 Unsplash ,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發揮!