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

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

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

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

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

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

如果數(shù)據(jù)量達到我們?nèi)怏w難以cover的地步,基于大數(shù)據(jù)量的分類算法就有了用武之地了。數(shù)據(jù)分類是一種典型的監(jiān)督學(xué)習(xí),需要我們給出分類結(jié)果,然后建立起輸入和輸出之間的模型。

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

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

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

基于貝葉斯的數(shù)據(jù)分類

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

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

公式如下:

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

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

通常我們進行一個企業(yè)級的分類流程需要經(jīng)過數(shù)據(jù)準備、分類器訓(xùn)練、分類器評估、分類識別。

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

二、基于adaboost的數(shù)據(jù)分類

adaboost是一種組合型算法,它會先產(chǎn)生一定數(shù)量的弱分類,然后將弱分類按權(quán)重組合成強分類,即最終的分類算法。adaboost算法可以用來處理分類問題,回歸問題等,分類方法比較精確的算法,是監(jiān)督學(xué)習(xí)的一種。

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

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

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

k鄰近算法也叫KNN(k-Nearest Neighbor)是一種在互聯(lián)網(wǎng)領(lǐng)域常用到的,比較簡答的一種算法,在我們??吹降膬?nèi)容推薦、歌單推薦、購物推薦中多數(shù)都用到了該算法。

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

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

另外一個是當(dāng)一個沒有數(shù)據(jù)的樣本加入時,無法很短的時間內(nèi)分析出其可能的屬性。

四、基于svm的數(shù)據(jù)分類

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

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

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

如下圖:

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

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

相關(guān)閱讀

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

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

 

本文由 @沒空兒 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash ,基于 CC0 協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 目前還沒評論,等你發(fā)揮!