
以性別預測為例,談談數(shù)據(jù)挖掘中的分類問題
互聯(lián)網(wǎng)的迅猛發(fā)展,催生了數(shù)據(jù)的爆炸式增長。面對海量的數(shù)據(jù),如何挖掘數(shù)據(jù)的價值,成為一個越來越重要的問題。本文首先介紹數(shù)據(jù)挖掘的基本內(nèi)容,然后按照數(shù)據(jù)挖掘基本的處理流程,以性別預測實例來講解一個具體的數(shù)據(jù)挖掘任務是如何實現(xiàn)的。
數(shù)據(jù)挖掘的基本內(nèi)容
首先,對于數(shù)據(jù)挖掘的概念,目前比較廣泛認可的一種解釋如下:
Data mining is the use of efficient techniques for the analysis of very large collections of data and the extraction of useful and possibly unexpected patterns in data.
數(shù)據(jù)挖掘是一種通過分析海量數(shù)據(jù),從數(shù)據(jù)中提取潛在的但是非常有用的模式的技術。
主要的數(shù)據(jù)挖掘任務
數(shù)據(jù)挖掘任務可以分為預測性任務和描述性任務。預測性任務主要是預測可能出現(xiàn)的情況;描述性任務則是發(fā)現(xiàn)一些人類可以解釋的模式或規(guī)律。數(shù)據(jù)挖掘中比較常見的任務包括分類、聚類、關聯(lián)規(guī)則挖掘、時間序列挖掘、回歸等,其中分類、回歸屬于預測性任務,聚類、關聯(lián)規(guī)則挖掘、時間序列分析等則都是解釋性任務。
按照數(shù)據(jù)挖掘的基本流程,來談談分類問題
在簡單介紹了數(shù)據(jù)挖掘的基本內(nèi)容后,我們來切入主題。以數(shù)據(jù)挖掘的流程為主線,穿插性別預測的實例,來講解分類問題。根據(jù)經(jīng)典教科書和實際工作經(jīng)驗來看,數(shù)據(jù)挖掘的基本流程主要包括五部分,首先是明確問題,第二是對數(shù)據(jù)進行預處理,第三是對數(shù)據(jù)進行特征工程,轉(zhuǎn)化為問題所需要的特征,第四是根據(jù)問題的評價標準選擇最優(yōu)的模型和算法,最后將訓練的模型用于實際生產(chǎn),產(chǎn)出所需結(jié)果(如圖1所示)。
圖1 數(shù)據(jù)挖掘的基本流程
下面我們分別介紹各環(huán)節(jié)涉及的主要內(nèi)容:
1.明確問題和了解數(shù)據(jù)
這一環(huán)節(jié)最重要的是需求和數(shù)據(jù)的匹配。首先需要明確需求,有著怎樣的需求?是需要做分類、聚類、推薦還是其他?實際數(shù)據(jù)是否支持該需求?比如,分類問題需要有或者可以構(gòu)造出training set,如果沒有training set,就沒有辦法按照分類問題來解決。此外,數(shù)據(jù)的規(guī)模、重要feature的覆蓋度等,也是需要特別考慮的問題。
2.數(shù)據(jù)預處理
1)數(shù)據(jù)集成,數(shù)據(jù)冗余,數(shù)值沖突
數(shù)據(jù)挖掘中準備數(shù)據(jù)的時候,需要盡可能地將相關數(shù)據(jù)集成在一起。如果集成的數(shù)據(jù)中,有兩列或多列值一樣,則不可避免地會產(chǎn)生數(shù)值沖突或數(shù)據(jù)冗余,可能需要根據(jù)數(shù)據(jù)的質(zhì)量來決定保留沖突中的哪一列。
2)數(shù)據(jù)采樣
一般來說,有效的采樣方式如下:如果樣本是有代表性的,則使用樣本數(shù)據(jù)和使用整個數(shù)據(jù)集的效果幾乎是一樣的。抽樣方法有很多,需要考慮是有放回的采樣,還是無放回的采樣,以及具體選擇哪種采樣方式。
3)數(shù)據(jù)清洗、缺失值處理與噪聲數(shù)據(jù)
現(xiàn)實世界中的數(shù)據(jù),是真實的數(shù)據(jù),不可避免地會存在各種各樣的異常情況。比如某列的值缺失,或者某列的值是異常的,所以,我們需要在數(shù)據(jù)預處理階段進行數(shù)據(jù)清洗,來減少噪音數(shù)據(jù)對模型訓練和預測結(jié)果的影響。
3.特征工程
數(shù)據(jù)和特征決定了機器學習的上限,而模型和算法只是逼近這個上限而已。下面的觀點說明了特征工程的特點和重要性。
Feature engineering is another topic which doesn’t seem to merit any review papers or books, or even chapters in books, but it is absolutely vital to ML success. […] Much of the success of machine learning is actually success in engineering features that a learner can understand.
— Scott Locklin, in “Neglected machine learning ideas”
1)特征:對所需解決問題有用的屬性
特征是對你所需解決問題有用或者有意義的屬性。比如,在計算機視覺領域,圖片作為研究對象,可能圖片中的一個線條就是一個特征;在自然語言處理領域中,研究對象是文檔,文檔中的一個詞語的出現(xiàn)次數(shù)就是一個特征;在語音識別領域中,研究對象是一段話,phoneme(音位)可能就是一個特征。
2)特征的提取、選擇和構(gòu)造
既然特征是對我們所解決的問題最有用的屬性。首先我們需要處理的是根據(jù)原始數(shù)據(jù)抽取出所需要的特征。亟需注意的是,并不是所有的特征對所解決的問題產(chǎn)生的影響一樣大,有些特征可能對問題產(chǎn)生特別大的影響,但有些則可能影響甚微,和所解決的問題不相關的特征需要被剔除掉。因此,我們需要針對所解決的問題選擇最有用的特征集合,一般可以通過相關系數(shù)等方式來計算特征的重要性。當然,有些模型本身會輸出feature重要性,如Random Forest等算法。而對于圖片、音頻等原始數(shù)據(jù)形態(tài)特別大的對象,則可能需要采用像PCA這樣的自動降維技術。另外,還可能需要本人對數(shù)據(jù)和所需解決的問題有深入的理解,能夠通過特征組合等方法構(gòu)造出新的特征,這也正是特征工程被稱之為是一門藝術的原因之一。
實例講解(一)
接下來,我們通過一個性別預測的實例來說明數(shù)據(jù)挖掘處理流程中的“明確問題”、“數(shù)據(jù)預處理”和“特征工程”三個部分。
假設我們有如下兩種數(shù)據(jù),想根據(jù)數(shù)據(jù)訓練一個預測用戶性別的模型。
數(shù)據(jù)1: 用戶使用App的行為數(shù)據(jù);
數(shù)據(jù)2: 用戶瀏覽網(wǎng)頁的行為數(shù)據(jù);
第一步:明確問題
首先明確該問題屬于數(shù)據(jù)挖掘常見問題中的哪一類, 是分類、聚類,推薦還是其他?假設本實例數(shù)據(jù)有部分數(shù)據(jù)帶有男女性別,則該問題為分類問題;
數(shù)據(jù)集是否夠大?我們需要足夠大的數(shù)據(jù)來訓練模型,如果數(shù)據(jù)集不夠大,那么所訓練的模型和真實情況偏差會比較大;
數(shù)據(jù)是否滿足所解決問題的假設?統(tǒng)計發(fā)現(xiàn)男人和女人使用的App不太一致,瀏覽網(wǎng)頁的內(nèi)容也不太一致,則說明我們通過數(shù)據(jù)可以提取出對預測性別有用的特征,來幫助解決問題。如果根據(jù)數(shù)據(jù)提取不出有用的特征,那么針對當前數(shù)據(jù),問題是沒法處理的。
第二步:數(shù)據(jù)預處理
實際工作中,在數(shù)據(jù)預處理之前需要確定整個項目的編程語言(如Python、Java、 Scala)和開發(fā)工具(如Pig、Hive、Spark)。通常而言,編程語言和開發(fā)工具的選擇都依賴于所處的數(shù)據(jù)平臺環(huán)境;
選取多少數(shù)據(jù)做模型訓練?這是常說的數(shù)據(jù)采樣問題。一般認為采樣數(shù)據(jù)量越大,對所解決的任務幫助越大,但是數(shù)據(jù)量越大,計算代價也越大,因此,需要在解決問題的效果和計算代價之間折中一下;
把所有相關的數(shù)據(jù)聚合在一起,如果有相同字段則存在數(shù)據(jù)冗余的問題,需要根據(jù)數(shù)據(jù)的質(zhì)量剔除掉冗余的數(shù)據(jù);數(shù)據(jù)中可能存在異常值,則需要過濾掉;數(shù)據(jù)中可能有的值有缺失,則需要填充默認值。
數(shù)據(jù)預處理后可能的結(jié)果(如表1、表2所示):
表1 數(shù)據(jù)1預處理后結(jié)果
表2 數(shù)據(jù)2預處理后結(jié)果
第三步:特征工程
由于數(shù)據(jù)1和數(shù)據(jù)2的類型不太一樣,所以進行特征工程時,所采用的方法也不太一樣,下面分別介紹一下:
數(shù)據(jù)1的特征工程
數(shù)據(jù)1的單個特征的分析主要包括以下內(nèi)容:
數(shù)值型特征的處理,比如App的啟動次數(shù)是個連續(xù)值,可以按照低、中、高三個檔次將啟動次數(shù)分段成離散值;
類別型特征的處理,比如用戶使用的設備是三星或者聯(lián)想,這是一個類別特征,可以采用0-1編碼來處理;
需要考慮特征是否需要歸一化。
數(shù)據(jù)1的多個特征的分析主要包括以下內(nèi)容:
使用的設備類型是否決定了性別?需要做相關性分析,通常計算相關系數(shù);
App的啟動次數(shù)和停留時長是否完全正相關,結(jié)果表明特別相關,則說明App的停留時長是無用特征,將App的停留時長這個特征過濾掉;
2.數(shù)據(jù)2的特征工程
數(shù)據(jù)2是典型的文本數(shù)據(jù),文本數(shù)據(jù)常用的處理步驟包含以下幾個部分:
網(wǎng)頁 → 分詞 → 去停用詞 → 向量化
分詞??梢圆捎肑ieba分詞(Python庫)或張華平老師的ICTCLAS;
去除停用詞。停用詞表除了加入常規(guī)的停用詞外,還可以將DF(Document Frequency)比較高的詞加入停用詞表,作為領域停用詞;
向量化。一般是將文本轉(zhuǎn)化為TF或TF-IDF向量。
特征工程后數(shù)據(jù)1的結(jié)果(如表3所示,A1低表示啟動App1的次數(shù)比較低,以此類推,is_hx表示設備是否是華為,Label為1表示Male)。
表3 數(shù)據(jù)1特征工程后結(jié)果
特征工程后數(shù)據(jù)2的結(jié)果(如表4所示,term1=5表示user1瀏覽的網(wǎng)頁中出現(xiàn)詞1的頻率,以此類推)。
表4 數(shù)據(jù)2特征工程后結(jié)果
第四步:算法和模型
做完特征工程后,下一步就是選擇合適的模型和算法。算法和模型的選擇主要考慮一下幾個方面:
訓練集的大小;
特征的維度大小;
所解決問題是否是線性可分的;
所有的特征是獨立的嗎?
需要不需要考慮過擬合的問題;
對性能有哪些要求?
上面中提到的很多問題沒法直接回答,可能我們還是不知道該選擇哪種模型和算法,但是奧卡姆剃刀原理給出了模型和算法的選擇方法:
Occam’s Razor principle: use the least complicated algorithm that can address your needs and only go for something more complicated if strictly necessary.
業(yè)界比較通用的算法選擇一般是這樣的規(guī)律:如果LR可以,則使用LR;如果LR不適合,則選擇Ensemble的方式;如果Ensemble方式不適合,則考慮是否嘗試Deep Learning。下面主要介紹一下LR算法和Ensemble方法的相關內(nèi)容。
LR算法(Logistic Regression,邏輯回歸算法)
只要認為問題是線性可分的,就可采用LR,通過特征工程將一些非線性特征轉(zhuǎn)化為線性特征。 模型比較抗噪,而且可以通過L1、L2范數(shù)來做參數(shù)選擇。LR可以應用于數(shù)據(jù)特別大的場景,因為它的算法效率特別高,且很容易分布式實現(xiàn)。
區(qū)別于其他大多數(shù)模型,LR比較特別的一點是結(jié)果可以解釋為概率,能將問題轉(zhuǎn)為排序問題而不是分類問題。
Ensemble方法(組合方法)
組合方法的原理主要是根據(jù)training set訓練多個分類器,然后綜合多個分類器的結(jié)果,做出預測(如圖2所示)。
圖2 組合方法的基本流程
組合方式主要分為Bagging和Boosting。Bagging是Bootstrap Aggregating的縮寫,基本原理是讓學習算法訓練多輪,每輪的訓練集由從初始的訓練集中隨機取出的n個訓練樣本組成(有放回的隨機抽樣),訓練之后可得到一個預測函數(shù)集合,通過投票方式?jīng)Q定預測結(jié)果。
而Boosting中主要的是AdaBoost(Adaptive Boosting)?;驹硎浅跏蓟瘯r對每一個訓練樣本賦相等的權重1/n,然后用學習算法對訓練集訓練多輪,每輪結(jié)束后,對訓練失敗的訓練樣本賦以較大的權重。也就是讓學習算法在后續(xù)的學習中集中對比較難的訓練樣本進行學習,從而得到一個預測函數(shù)集合。每個預測函數(shù)都有一定的權重,預測效果好的預測函數(shù)權重較大,反之較小,最終通過有權重的投票方式來決定預測結(jié)果。
Bagging和Boosting的主要區(qū)別如下:
取樣方式不同。Bagging采用均勻取樣,而Boosting根據(jù)錯誤率來取樣,因此理論上來講Boosting的分類精度要優(yōu)于Bagging;
訓練集的選擇方式不同。Bagging的訓練集的選擇是隨機的,各輪訓練集之間相互獨立,而Boostng的各輪訓練集的選擇與前面的學習結(jié)果有關;
預測函數(shù)不同。Bagging的各預測函數(shù)沒有權重,而Boosting是有權重的。Bagging的各個預測函數(shù)可以并行生成,而Boosting的各個預測函數(shù)只能順序生成。
對于像神經(jīng)網(wǎng)絡這樣極其耗時的學習方法,Bagging可通過并行訓練節(jié)省大量時間開銷。Bagging和Boosting都可以有效地提高分類的準確性。在大多數(shù)數(shù)據(jù)集中,Boosting的準確性比Bagging要高。
分類算法的評價
上一部分介紹了常用的模型和算法,不同的算法在不同的數(shù)據(jù)集上會產(chǎn)生不同的效果,我們需要量化算法的好壞,這就是分類算法的評價。在本文中,筆者將主要介紹一下混淆矩陣和主要的評價指標。
1.混淆矩陣(如圖3所示)
圖3 混淆矩陣
1)True positives(TP):即實際為正例且被分類器劃分為正例的樣本數(shù);
2)False positives(FP):即實際為負例但被分類器劃分為正例的樣本數(shù);
3)False negatives(FN):即實際為正例但被分類器劃分為負例的樣本數(shù);
4)True negatives(TN):即實際為負例且被分類器劃分為負例的樣本數(shù)。
2.主要的評價指標
1)準確率accuracy=(TP+TN)/(P+N)。這個很容易理解,就是被分對的樣本數(shù)除以所有的樣本數(shù)。通常來說,準確率越高,分類器越好;
2)召回率recall=TP/(TP+FN)。召回率是覆蓋面的度量,度量有多少個正例被分為正例。
3)ROC和AUC。
實例講解(二)
實例(一)產(chǎn)出的特征數(shù)據(jù),經(jīng)過“模型和算法”以及“算法的評價”兩部分所涉及的代碼實例如圖4所示。
圖4 模型訓練示例代碼
總結(jié)
本文以數(shù)據(jù)挖掘的基本處理流程為主線,以性別預測為具體實例,介紹了處理一個數(shù)據(jù)挖掘的分類問題所涉及的方方面面。對于一個數(shù)據(jù)挖掘問題,首先要明確問題,確定已有的數(shù)據(jù)是否能夠解決所需要解決的問題,然后就是數(shù)據(jù)預處理和特征工程階段,這往往是在實際工程中最耗時、最麻煩的階段。經(jīng)過特征工程后,需要選擇合適的模型進行訓練,并且根據(jù)評價標準選擇最優(yōu)模型和最優(yōu)參數(shù), 最后根據(jù)最優(yōu)模型對未知數(shù)據(jù)進行預測,產(chǎn)出結(jié)果。希望本文的內(nèi)容對大家有所幫助。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
LSTM 模型輸入長度選擇技巧:提升序列建模效能的關鍵? 在循環(huán)神經(jīng)網(wǎng)絡(RNN)家族中,長短期記憶網(wǎng)絡(LSTM)憑借其解決長序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報考條件詳解與準備指南? ? 在數(shù)據(jù)驅(qū)動決策的時代浪潮下,CDA 數(shù)據(jù)分析師認證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計的實用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實施重大更新。 此次更新旨在確保認 ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務的價值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡稱 BI)深度融合的時代,BI ...
2025-07-10SQL 在預測分析中的應用:從數(shù)據(jù)查詢到趨勢預判? ? 在數(shù)據(jù)驅(qū)動決策的時代,預測分析作為挖掘數(shù)據(jù)潛在價值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點,而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報考到取證的全攻略? 在數(shù)字經(jīng)濟蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢性檢驗:捕捉數(shù)據(jù)背后的時間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢性檢驗如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時間維度的精準切片? ? 在數(shù)據(jù)的世界里,時間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準 ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應用與實戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗:數(shù)據(jù)趨勢與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領域中,準確捕捉數(shù)據(jù)的趨勢變化以及識別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認證作為國內(nèi)權威的數(shù)據(jù)分析能力認證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應對策略? 長短期記憶網(wǎng)絡(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(RNN)的一種變體,憑借獨特的門控機制,在 ...
2025-07-07統(tǒng)計學方法在市場調(diào)研數(shù)據(jù)中的深度應用? 市場調(diào)研是企業(yè)洞察市場動態(tài)、了解消費者需求的重要途徑,而統(tǒng)計學方法則是市場調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書考試全攻略? 在數(shù)字化浪潮席卷全球的當下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準確性的基礎 ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03