? ? 前言
在大多數(shù)非計(jì)算機(jī)專業(yè)人士以及部分計(jì)算機(jī)專業(yè)背景人士眼中,機(jī)器學(xué)習(xí)(Data Mining)以及數(shù)據(jù)挖掘(Machine Learning)是兩個(gè)高深的領(lǐng)域。在筆者看來(lái),這是一種過(guò)高”瞻仰“的習(xí)慣性錯(cuò)誤理解(在這里我加了好多定語(yǔ))。事實(shí)上,這兩個(gè)領(lǐng)域與計(jì)算機(jī)其他領(lǐng)域一樣都是在融匯理論和實(shí)踐的過(guò)程中不斷熟練和深入,不同之處僅在于滲透了更多的數(shù)學(xué)知識(shí)(主要是統(tǒng)計(jì)學(xué)),在后面的文章中我會(huì)努力將這些數(shù)學(xué)知識(shí)以一種更容易理解的方式講解給大家。本文從基本概念出發(fā)淺析他們的關(guān)系和異同,不講具體算法和數(shù)學(xué)公式。希望對(duì)大家能有所幫助。
幾個(gè)相關(guān)示例
首先,給大家列舉一些生活中與數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)相關(guān)的應(yīng)用示例以幫助大家更好的理解。
示例1(關(guān)聯(lián)問(wèn)題):
經(jīng)常去超市的同學(xué)可能會(huì)發(fā)現(xiàn),我們事先在購(gòu)物清單上列舉好的某些商品可能會(huì)被超市阿姨擺放在相鄰的區(qū)域。例如, 面包柜臺(tái)旁邊會(huì)擺上黃油、面條柜臺(tái)附近一定會(huì)有老干媽等等。這樣的物品擺放會(huì)讓我們的購(gòu)物過(guò)程更加快捷、輕松。
那么如何知道哪些物品該擺放在一塊?又或者用戶在購(gòu)買某一個(gè)商品的情況下購(gòu)買另一個(gè)商品的概率有多大?這就要利用關(guān)聯(lián)數(shù)據(jù)挖掘的相關(guān)算法來(lái)解決。
示例2(分類問(wèn)題):
在嘈雜的廣場(chǎng)上,身邊人來(lái)人往。仔細(xì)觀察他們的外貌、衣著、言行等我們會(huì)不自覺地?cái)嗾撨@個(gè)人是新疆人、東北人或者是上海人。又例如,在剛剛結(jié)束的2015NBA總決賽中,各類權(quán)威機(jī)構(gòu)會(huì)大量分析騎士隊(duì)與勇士隊(duì)的歷史數(shù)據(jù)從而得出騎士隊(duì)或者勇士隊(duì)是否會(huì)奪冠的結(jié)論。
在上述第一個(gè)例子中,由于地域眾多,在對(duì)人進(jìn)行地域分類的時(shí)候這是一個(gè)典型的多分類問(wèn)題。而在第二個(gè)例子中各類機(jī)構(gòu)預(yù)測(cè)勇士隊(duì)是否會(huì)戰(zhàn)勝騎士隊(duì)奪冠,這是一個(gè)二分類問(wèn)題,其結(jié)果只有兩種。二分類問(wèn)題在業(yè)界的出鏡率異常高,例如在推薦系統(tǒng)中預(yù)測(cè)一個(gè)人是否會(huì)買某個(gè)商品、其他諸如地震預(yù)測(cè)、火災(zāi)預(yù)測(cè)等等。
示例3(聚類問(wèn)題):
”物以類聚,人以群分“,生活中到處都有聚類問(wèn)題的影子。假設(shè)銀行擁有若干客戶的歷史消費(fèi)記錄,現(xiàn)在由于業(yè)務(wù)擴(kuò)張需要新增幾款面對(duì)不同人群的理財(cái)產(chǎn)品,那么如何才能準(zhǔn)確的將不同的理財(cái)產(chǎn)品通過(guò)電話留言的方式推薦給不同的人群?這便是一個(gè)聚類問(wèn)題,銀行一般會(huì)將所有的用戶進(jìn)行聚類,有相似特征的用戶屬于同一個(gè)類別,最后將不同理財(cái)產(chǎn)品推薦給相應(yīng)類別的客戶。
示例4(回歸問(wèn)題):
回歸問(wèn)題或者稱作預(yù)測(cè)問(wèn)題同樣也是一個(gè)生活中相當(dāng)接地氣的應(yīng)用。大家知道,證券公司會(huì)利用歷史數(shù)據(jù)對(duì)未來(lái)一段時(shí)間或者某一天的股票價(jià)格走勢(shì)進(jìn)行預(yù)測(cè)。同樣,房地產(chǎn)商也會(huì)根據(jù)地域情況對(duì)不同面積樓層的房產(chǎn)進(jìn)行定價(jià)預(yù)測(cè)。
上述兩個(gè)示例都是回歸問(wèn)題的典型代表,這類問(wèn)題往往根據(jù)一定的歷史數(shù)據(jù)對(duì)某一個(gè)指定條件下的目標(biāo)預(yù)測(cè)一個(gè)實(shí)數(shù)值。
相信經(jīng)過(guò)上面通俗易懂的示例,大家應(yīng)該初步了解數(shù)據(jù)挖掘以及機(jī)器學(xué)習(xí)會(huì)應(yīng)用到哪些問(wèn)題之上(這里列舉的四類問(wèn)題是很常見的,當(dāng)然還有例如異常檢測(cè)等應(yīng)用),這就解決了面對(duì)一個(gè)新問(wèn)題三要素中的Why。下面解釋什么是機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘(即What)以及他們的關(guān)系和異同點(diǎn)。
數(shù)據(jù)挖掘
數(shù)據(jù)挖掘(Data mining),又譯為資料探勘、數(shù)據(jù)采礦。它是數(shù)據(jù)庫(kù)知識(shí)發(fā)現(xiàn)(英語(yǔ):Knowledge-Discovery in Databases,簡(jiǎn)稱:KDD)中的一個(gè)步驟。數(shù)據(jù)挖掘一般是指從大量的數(shù)據(jù)中通過(guò)算法搜索隱藏于其中信息的過(guò)程。數(shù)據(jù)挖掘通常與計(jì)算機(jī)科學(xué)有關(guān),并通過(guò)統(tǒng)計(jì)、在線分析處理、情報(bào)檢索、機(jī)器學(xué)習(xí)、專家系統(tǒng)(依靠過(guò)去的經(jīng)驗(yàn)法則)和模式識(shí)別等諸多方法來(lái)實(shí)現(xiàn)上述目標(biāo)。
從上面的定義可以看出數(shù)據(jù)挖掘相對(duì)于機(jī)器學(xué)習(xí)而言是一個(gè)更加偏向應(yīng)用的領(lǐng)域。實(shí)際上,數(shù)據(jù)挖掘是一門涉及面很廣的交叉學(xué)科,在處理各種問(wèn)題時(shí),只要我們清楚了業(yè)務(wù)邏輯那么就可以將問(wèn)題轉(zhuǎn)換為挖掘問(wèn)題。
數(shù)據(jù)挖掘的處理過(guò)程一般包括數(shù)據(jù)預(yù)處理(ETL、數(shù)據(jù)清洗、數(shù)據(jù)集成等),數(shù)據(jù)倉(cāng)庫(kù)(可以是DBMS、大型數(shù)據(jù)倉(cāng)庫(kù)以及分布式存儲(chǔ)系統(tǒng))與OLAP,使用各種算法(主要是機(jī)器學(xué)習(xí)的算法)進(jìn)行挖掘以及最后的評(píng)估工作。
簡(jiǎn)言之,數(shù)據(jù)挖掘是一系列的處理過(guò)程,最終的目的是從數(shù)據(jù)中挖掘出你想要的或者意外收獲的信息。下圖展示了數(shù)據(jù)挖掘的眾多應(yīng)用領(lǐng)域。
?
機(jī)器學(xué)習(xí)
在上一節(jié),我們初步討論了數(shù)據(jù)挖掘的相關(guān)概念, 這一節(jié)我們繼續(xù)討論機(jī)器學(xué)習(xí)的基礎(chǔ)知識(shí)、學(xué)習(xí)方式、常用算法等。
機(jī)器學(xué)習(xí)這門學(xué)科所關(guān)注的問(wèn)題是:計(jì)算機(jī)程序如何隨著經(jīng)驗(yàn)積累自動(dòng)提高性能。——Tom Mitchell
上述定義是Tom Mitchell在其著作《機(jī)器學(xué)習(xí)》中給出的定義。這個(gè)定義簡(jiǎn)單明了但是卻蘊(yùn)含了太多東西。
通俗的來(lái)將,我們寫一段程序讓計(jì)算機(jī)自己進(jìn)行一個(gè)學(xué)習(xí)過(guò)程,直到達(dá)到一個(gè)滿意程度。那么學(xué)習(xí)的目的是什么?怎樣學(xué)習(xí)?滿意程度又是如何定義的呢?
通常,假設(shè)我們的目標(biāo)是一個(gè)function f,我們會(huì)給計(jì)算機(jī)提供一定的訓(xùn)練數(shù)據(jù)讓其進(jìn)行學(xué)習(xí)訓(xùn)練,每一次的學(xué)習(xí)會(huì)訓(xùn)練出一個(gè)hypothesis h,當(dāng)h和f隨著計(jì)算機(jī)不斷學(xué)習(xí)越來(lái)越接近時(shí),就說(shuō)h越來(lái)越達(dá)到滿意程度。而滿意程度的度量是用誤差e來(lái)度量的(針對(duì)不同情況有不同的方式)。更簡(jiǎn)單的說(shuō),機(jī)器學(xué)習(xí)就是通過(guò)數(shù)據(jù)訓(xùn)練找一個(gè)合適的目標(biāo)函數(shù)的過(guò)程。而目前,機(jī)器學(xué)習(xí)學(xué)科應(yīng)用到了大量的統(tǒng)計(jì)學(xué)知識(shí),我們也稱其為統(tǒng)計(jì)機(jī)器學(xué)習(xí)。
下面給大家解釋一下必須知道的幾個(gè)概念。
學(xué)習(xí)方式
根據(jù)數(shù)據(jù)類型的不同,對(duì)一個(gè)問(wèn)題的建模有不同的方式。將算法按照學(xué)習(xí)方式分類是一個(gè)不錯(cuò)的想法,這樣可以讓人們?cè)诮:退惴ㄟx擇的時(shí)候考慮能根據(jù)輸入數(shù)據(jù)來(lái)選擇最合適的算法來(lái)獲得最好的結(jié)果。在機(jī)器學(xué)習(xí)領(lǐng)域,有幾種主要的學(xué)習(xí)方式:
1.監(jiān)督學(xué)習(xí)(supervised learning)
在監(jiān)督式學(xué)習(xí)下,每組訓(xùn)練數(shù)據(jù)有一個(gè)明確的標(biāo)識(shí)或結(jié)果,如對(duì)人按地域分類中的“新疆”、“上?!?、“東別”等屬于地域標(biāo)識(shí)。在建立預(yù)測(cè)模型的時(shí)候,監(jiān)督式學(xué)習(xí)建立一個(gè)學(xué)習(xí)過(guò)程,將預(yù)測(cè)結(jié)果與“訓(xùn)練數(shù)據(jù)”的實(shí)際結(jié)果進(jìn)行比較,不斷的調(diào)整預(yù)測(cè)模型,直到模型的預(yù)測(cè)結(jié)果達(dá)到一個(gè)預(yù)期的準(zhǔn)確率。
?
上述示例中的分類問(wèn)題和回歸問(wèn)題都屬于監(jiān)督學(xué)習(xí)范疇。其中常用的分類算法包括:決策樹分類法(Decision Tree)(參考我之前的文章),樸素貝葉斯分類算法(Native Bayesian Classifier)、基于支持向量機(jī)(SVM)的分類器、神經(jīng)網(wǎng)絡(luò)法(Neural Network)、k-最近鄰法(k-nearest neighbor,kNN)等。
2.非監(jiān)督式學(xué)習(xí)(unsupervised learning)
在非監(jiān)督式學(xué)習(xí)中,數(shù)據(jù)并不被標(biāo)識(shí),學(xué)習(xí)模型是為了推斷出數(shù)據(jù)的一些內(nèi)在結(jié)構(gòu)。前面四個(gè)示例中的關(guān)聯(lián)問(wèn)題和聚類問(wèn)題屬于非監(jiān)督學(xué)習(xí)的范疇。關(guān)聯(lián)問(wèn)題中常見算法包括Apriori(該算法基于Spark的并行化算法參考我之前文章)、FP-Growth以及Eclat等,而聚類問(wèn)題中最經(jīng)典的算法當(dāng)屬k-Means。
?
3.半監(jiān)督式學(xué)習(xí)(semi-supervised learning)
在半監(jiān)督式學(xué)習(xí)學(xué)習(xí)方式下,輸入數(shù)據(jù)部分被標(biāo)識(shí),部分沒有被標(biāo)識(shí),這種學(xué)習(xí)模型可以用來(lái)進(jìn)行預(yù)測(cè),但是模型首先需要學(xué)習(xí)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)以便合理的組織數(shù)據(jù)來(lái)進(jìn)行預(yù)測(cè)。應(yīng)用場(chǎng)景包括分類和回歸,算法包括一些對(duì)常用監(jiān)督式學(xué)習(xí)算法的延伸,這些算法首先試圖對(duì)未標(biāo)識(shí)數(shù)據(jù)進(jìn)行建模,在此基礎(chǔ)上再對(duì)標(biāo)識(shí)的數(shù)據(jù)進(jìn)行預(yù)測(cè)。如圖論推理算法(Graph Inference)或者拉普拉斯支持向量機(jī)(Laplacian SVM.)等。
?
4.強(qiáng)化學(xué)習(xí)(reinforcement learning)
在這種學(xué)習(xí)模式下,輸入數(shù)據(jù)作為對(duì)模型的反饋,不像監(jiān)督模型那樣,輸入數(shù)據(jù)僅僅是作為一個(gè)檢查模型對(duì)錯(cuò)的方式,在強(qiáng)化學(xué)習(xí)下,輸入數(shù)據(jù)直接反饋到模型,模型必須對(duì)此立刻作出調(diào)整。常見的應(yīng)用場(chǎng)景包括動(dòng)態(tài)系統(tǒng)以及機(jī)器人控制等。常見算法包括Q-Learning以及時(shí)間差學(xué)習(xí)(Temporal difference learning)
?
數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)的關(guān)系
在上面我們分別介紹了機(jī)器學(xué)習(xí)與數(shù)據(jù)挖掘的基本概念,應(yīng)用,相關(guān)算法等內(nèi)容。接下來(lái)繼續(xù)討論兩者的關(guān)系與異同。
統(tǒng)計(jì)學(xué)——1749年
人工智能——1940年
機(jī)器學(xué)習(xí)——1946年
數(shù)據(jù)挖掘——1980年
從歷史的發(fā)展可以看出數(shù)據(jù)挖掘是一門新興學(xué)科,其建立在強(qiáng)有力的知識(shí)體系之上,使用了大量的機(jī)器學(xué)習(xí)算法,同時(shí)根據(jù)上一節(jié)的敘述,數(shù)據(jù)挖掘也使用了一系列的工程技術(shù)。而機(jī)器學(xué)習(xí)則是以統(tǒng)計(jì)學(xué)為支撐的一門偏理論的學(xué)科,其不需要考慮諸如數(shù)據(jù)倉(cāng)庫(kù),OLAP等應(yīng)用工程技術(shù)。
總結(jié)
? ? 機(jī)器學(xué)習(xí)是一門更加偏向理論性學(xué)科,其目的是為了讓計(jì)算機(jī)不斷學(xué)習(xí)找到接近目標(biāo)函數(shù)f的假設(shè)h。而數(shù)據(jù)挖掘則是使用了包括機(jī)器學(xué)習(xí)算法在內(nèi)的眾多知識(shí)的一門應(yīng)用學(xué)科,它主要是使用一系列處理方法挖掘數(shù)據(jù)背后的信息。
評(píng)論
查看更多