當前位置:
首頁 > 科技 > 如何用機器學習方法進行數據建模?

如何用機器學習方法進行數據建模?

本文節選自CCF大數據教材系列叢書之《大數據導論》,由中國科學院院士梅宏主編。本書系統地介紹大數據涵蓋的內容,包括數據與大數據概述、大數據感知與獲取、大數據存儲與管理、大數據分析、大數據處理、大數據治理、大數據安全與隱私等。

當前,信息化建設的第三波浪潮正撲面而來,信息化正在開啟以數 據的深度挖掘和融合應用為主要特徵的智能化階段(信息化 3.0)。隨著互 聯網向物聯網(含工業互聯網)延伸而覆蓋物理世界,「人機物」三元融 合的發展態勢已然成型,除了人類在使用信息系統的過程中產生數據以 外,各種感測器、智能設備也在源源不斷地產生數據,並逐漸成為數據 最重要的來源。

近年來,數據資源的不斷豐富、計算能力的快速提升, 推動數據驅動的智能快速興起。大量智能應用通過對數據的深度融合與 挖掘,幫助人們採用新的視角和新的手段,全方位、全視角展現事物的 演化歷史和當前狀態,掌握事物的全局態勢和細微差別;歸納事物發展 的內在規律,預測預判事物的未來狀態;分析各種備選方案可能產生的 結果,從而為決策提供最佳選項。當然,第三次浪潮還剛剛開啟、方興 未艾,大數據理論和技術還遠未成熟,智能化應用發展還處於初級階段。 然而,聚集和挖掘數據資源,開發和釋放數據蘊含的巨大價值,已經成 為信息化新階段的共識。

——梅宏

(1)按搜索策略劃分特徵選擇演算法

根據演算法進行特徵選擇所用的搜索策略,可以把特徵選擇演算法分為採用全局最優搜索策略、隨機搜索策略和啟發式搜索策略3類。

(2)評價函數

評價函數的作用是評價產生過程所提供的特徵子集的好壞。根據其工作原理,評價函數主要分為篩選器(filter)和封裝器(wrapper)兩大類

篩選器通過分析特徵子集內部的特點來衡量其好壞。篩選器一般用作預處理,與分類器的選擇無關,常用的度量方法有相關性、距離、信息增益、一致性等。

運用相關性來度量特徵子集的好壞是基於這樣假設:好的特徵子集所包含的特徵應該是與分類的相關度較高,而特徵之間相關度較低的;運用距離度量進行特徵選擇是基於這樣的假設:好的特徵子集應該使得屬於同一類的樣本距離儘可能小,屬於不同類的樣本之間的距離儘可能大;使用信息增益作為度量函數的動機在於:假設存在特徵子集A和特徵子集B,分類變數為C,若A的信息增益比B大,則認為選用特徵子集A的分類結果比B好,因此傾向於選用特徵子集A。一致性指的是:若樣本1與樣本2屬於不同的分類,但在特徵A和B上的取值完全一樣,那麼特徵子集不應該選作最終的特徵集。

篩選器由於與具體的分類演算法無關,因此其在不同的分類演算法之間的推廣能力較強,而且計算量也較小。

封裝器實質上是一個分類器,封裝器用選取的特徵子集對樣本集進行分類,分類的精度作為衡量特徵子集好壞的標準。封裝器由於在評價的過程中應用了具體的分類演算法進行分類,因此其推廣到其他分類演算法的效果可能較差,而且計算量也較大。使用特定的分類器,用給定的特徵子集對樣本集進行分類,用分類的精度來衡量特徵子集的好壞。

數據建模

數據建模是從大數據中找出知識的過程,常用的手段是機器學習和數據挖掘。所謂數據挖掘可以簡單地理解為「數據挖掘 = 機器學習+資料庫」。從商業層次來說,數據挖掘是企業按既定業務目標,對大量企業數據進行探索和分析,揭示隱藏的、未知的或驗證已知的規律性,並進一步將其模型化。從技術層次來說,數據挖掘是通過分析,從大量數據中尋找其規律的技術。

機器學習

在心理學理論中,學習是指(人或動物)依靠經驗的獲得而使行為持久變化的過程。在機器學習場景下,不同的學者有不同的理解和定義。比如西蒙(Simon)認為:如果一個系統能夠通過執行某種過程而改進它的性能,這就是學習;明斯基(M. Minsky)認為:學習是在人們頭腦中(心理內部)進行有用的變化;湯姆·米切爾(Tom M. Mitchell)認為:對於某類任務T和性能度P,如果一個計算機程序在T上以P衡量的性能隨著經驗E而自我完善,那麼,我們稱這個計算機程序從經驗E中學習。根據不同的分類準則,機器學習又可以分為不同的類別,具體參見表4-2。

表4-2 不同分類準則意義下的機器學習

事實上,具體到每一個機器學習方法,根據上述不同的分類準則,可能會歸屬到一個或多個類別中。

非監督學習

在非監督學習(unsupervised learning)中,數據並不會被特別標識,學習模型是為了推斷出數據的一些內在結構。非監督學習一般有兩種思路:

(1)第一種思路是在指導Agent時不為其指定明確的分類,而是在成功時採用某種形式的激勵制度。需要注意的是,這類訓練通常會被置於決策問題的框架里,因為它的目標不是產生一個分類系統,而是做出最大回報的決定,這類學習往往被稱為強化學習。

(2)第二種思路稱之為聚合(clustering),這類學習類型的目標不是讓效用函數最大化,而是找到訓練數據中的近似點。常見的應用場景包括關聯規則的學習以及聚類等。常見演算法包括關聯規則挖掘、K-Means、EM等。

關聯規則挖掘

顧名思義,關聯規則挖掘就是從數據背後發現事物(務)之間可能存在的關聯或者聯繫。比如數據挖掘領域著名的「啤酒-尿不濕」的故事(這個故事的真假不論)就是典型的關聯規則挖掘發現的有趣現象。在關聯規則挖掘場景下,一般用支持度和置信度兩個閥值來度量關聯規則的相關性(關聯規則就是支持度和信任度分別滿足用戶給定閾值的規則)。所 謂 支 持 度(support), 指 的 是 同 時 包 含X、Y的 百 分 比, 即P(X, Y);所謂置信度(confidence)指的是包含X(條件)的事務中同時又包含Y(結果)的百分比,即條件概率P(Y|X),置信度表示了這條規則有多大程度上可信。

關聯規則挖掘的一般步驟是:首先進行頻繁項集挖掘,即從數據中找出所有的高頻項目組(frequent itemsets,滿足最小支持度或置信度的集合,一般找滿足最小支持度的集合);然後進行關聯規則挖掘,即從這些高頻項目組中產生關聯規則(association rules,既滿足最小支持度又滿足最小置信度的規則)。

引用一個經典用例解釋上述的若干概念,使用的數據集如表4-3所示,該數據集可以認為是超市的購物小票,第一列表示購物流水ID,第二列表示每個流水同時購買的物品。

表4-3 超市購物流水

計算示例1:計算「如果orange則coke的置信度」,即P(coke|orange),從上述的購物流水數據中可以發現,含有orange的交易有4個(分別是T1、T2、T3、T4),在這4個項目中僅有兩條交易含有coke(T1、T4),因此

計算示例2:計算在所有的流水交易中「既有orange又有coke的支持度」,即P(orange, coke),從上述的購物流水數據中可以發現,總計有5條交易記錄(T1、T2、T3、T4、T5),既有orange又有coke的記錄有兩條(T1、T4),因此

上述兩個計算示例總結出的關聯規則是:如果一個顧客購買了orange,則有50%的可能購買coke。而這樣的情況(即買了orange會再買coke)會有40%的可能發生。

K-Means演算法

K-Means演算法是典型的基於距離的聚類演算法,K-Means認為:

(1)兩個對象的距離越近,其相似度就越大。

(2)相似度接近的若干對象組成一個聚集(也可稱為「簇」)。

(3)K-Means的目標是從給定數據集中找到緊湊且獨立的簇。

K-Means中的「K」指的就是在數據集中找出的聚集(「簇」)的個數,在K-Means演算法中,此「K」的大小需要事先設定,K-Means的演算法流程如下:

輸入:數據集,K

輸出:K個聚集

Step-1:從N個數據對象中任意選擇K個對象作為初始聚類中心,記為

Step-2:根據每個聚類對象的均值(中心對象),計算每個對象與

這些中心對象的距離,並根據最小距離重新對相應對象進行劃分,即

Step-3:重新計算每個(有變化)聚類的均值(中心對象),即

Step-4:循環Step-2到Step-3直到每個聚類不再發生變化(收斂)為止。

K-Means聚類演算法的優點集中體現在(不限於):

(1)演算法快速、簡單。

(2)對大數據集有較高的計算效率並且可伸縮。

(3)時間複雜度近於線性,適合挖掘大規模數據集。K-Means聚類演算法的時間複雜度是Q (N·K·T ),其中N代表數據集中對象的數量;T代表著演算法迭代的次數;K代表著簇的數目;一般而言:K

K-Means的缺陷集中體現在(不限於):

(1)在K-Means演算法中,K是事先設定的,而K值的選定是非常難以估計的。很多時候,事先並不知道給定的數據集應該被分成多少個類別才最合適。

(2)在K-Means演算法中,初始聚類中心的選擇對聚類結果有較大的影響,一旦初始值選擇得不好,可能無法得到有效的聚類結果。

(3)K-Means演算法需要不斷地進行樣本分類調整,不斷地計算調整後的新的聚類中心,因此當數據量非常大時,演算法的時間開銷是非常大的。

監督學習

監督學習(supervised learning)是指:利用一組已知明確標識或結果的樣本調整分類器的參數,使其達到所要求性能的過程,也稱為有教(導)師學習。所謂「監督」或者「有教(導)師」指的是監督學習必須依賴一個已經標記的訓練數據(訓練集)作為監督學習的輸入(學習素材)。訓練集是由若干個訓練實例組成,每個實例都是一個屬性集合(通常為向量,代表對象的特徵)和一個明確的標識(可以是離散的,也可以是連續的)組成。監督學習的過程就是建立預測模型的學習過程,將預測結果與訓練集的實際結果進行比較,不斷地調整預測模型,直到模型的預測結果達到一個預期的準確率。

根據訓練集中的標識是連續的還是離散的,可以將監督學習分為兩類:回歸和分類。前者對應於訓練集的標識是連續的情況,而後者適用於訓練集的標識是離散的場景,離散的標識往往稱為類標(label)。

回歸

回歸是研究一個隨機變數Y或者一組隨機變數Y ( y1, y2, …, yn )對一個屬性變數X或者一組屬性變數X (x1, x2, …, xn )的相依關係的統計分析方法,通常稱X或者X (x1, x2, …, xn )為自變數,稱Y或者Y ( y1, y2, …, yn )為因變數。當因變數和自變數的關係是線性時,則稱為線性模型(這是最簡單的一類數學模型)。當數學模型的函數形式是未知參數的線性函數時,稱為線性回歸模型;當函數形式是未知參數的非線性函數時,稱為非線性回歸模型。

回歸分析的一般過程是通過因變數和自變數建立回歸模型,並根據訓練集求解模型的各個參數,然後評價回歸模型是否能很好地擬合測試集實例,如果能夠很好地擬合,則可以根據自變數進行因變數的預測,回歸分析的主要步驟是:

(1)尋找h函數(即hypothesis)。

(2)構造J (W )函數(又稱損失函數)。

(3)調整參數W使得J (W )函數最小。

1.? 線性回歸

線性回歸模型假設自變數(也稱輸入特徵)和因變數(也稱目標值)滿足線性關係。為了便於敘述,取自變數為X (x1, x2, …, xn ),因變數為Y,訓練參數為W (w1, w2, …, wn )。

(1)目標數學模型函數定義為

(2)基於最小二乘定義損失函數為

其中Xi和Yi分別表示訓練集中第i個樣本的自變數和因變數,m表示訓練集的個數,前面乘上係數(1/2)是為了求導的時候,使常數係數消失。

(3)調整參數W使得J (W )最小,即

具體的方法有梯度下降法、最小二乘法等,下面先以梯度下降法介紹求解思路:對W取一個隨機初始值,然後不斷地迭代改變W的值使J減小,直到最終收斂(取得一個W值使得J (W )最小)。W的迭代更新規則如下

其中,ε稱為學習率(Learning Rate),j表示W的迭代次數,將J (W )代入上式得到:

此更新規則稱為最小均方LMS(least mean squares,LMS)更新策略,也稱為Widrow-Hoff learning rule,從此更新公式可以看到,W的每一次迭代都考察訓練集的所有樣本,這種更新策略稱為批量梯度下降(batch gradient descent)。還有一種更新策略是隨機梯度下降(stochastic gradient descent),其基本思路是:每處理一個訓練樣本就更新一次W。相比較而言,由於batch gradient descent在每一步都考慮全部數據集,因而複雜度比較高;隨機梯度下降會比較快地收斂。在實際情況中兩種梯度下降得到的最優解J (W )一般都會接近真實的最小值,所以對於較大的數據集,一般採用效率較高的隨機梯度下降法。

為了便於理解上述的計算流程,以一個具體的示例加以說明,示例設置如下。

整個訓練過程中各個參數變化如表4-4,為了便於閱讀,將每次迭代W的變化羅列在表中,即表中的?w1、?w2、?w3。

為了表示方便,表4-4中的數值均保留兩位小數,並且僅顯示了5步迭代的計算過程(假定0.02是可以接受的誤差),從表4-4可見,經過5步迭代後可得到回歸模型函數是

表4-4 簡單迭代過程示意

事實上,對於形如的樣本,其模型或許是,這意味著兩點:

(1)從回歸的角度而言,結果可能並不唯一。

(2)回歸結果未必是數據樣本本來的模型。

對於後者,如果有更多的學習樣本,或許會有利於結果更加逼近訓練集背後的模型,這或許也是大數據時代,為什麼要更熱衷於「大」的數據,因為,唯有以更「大」的數據作為支撐,才有可能發掘數據背後的那個知識或模型

剛才提及的更新策略是梯度下降法,需要多次迭代,相對比較費時而且不太直觀。除了梯度下降法以外,還有最小二乘法更新策略。最小二乘法的計算思路是基於矩陣論,將權值的計算從梯度下降法的迭代改為矩陣計算,經過推導可以知道

限於篇幅原因,此處不做具體的推導。無論是梯度下降法還是最小二乘法,其在擬合的過程中都是基於X (x1, x2, …, xn )中「每一個屬性的重要性(權重)是一樣」的這樣假設,而這在實際場景中未必適用(往往會產生過擬合或者欠擬合的現象),針對這種情況就產生了加權的線性回歸的思路,其本質是對各個元素進行規範化處理,對不同的輸入特徵賦予了不同的非負值權重,權重越大,對於代價函數的影響越大。

特 別 值 得 一 提 的 是: 上 述 提 到 的 線 性 回 歸 模 型Y (W, X ) =

w1x1 + w2x2 + … + wn xn,所謂的線性是對參數W而言的,並非一定是輸入X (x1, x2, …, xn )的線性函數,比如可以通過一系列的基函數?i (.)對輸入

進行非線性變換,即

其中,?i (.)是基函數,可選擇的基函數有多項式、高斯函數、Sigmoid函數等,簡單介紹如下。

(1)多項式

多項式函數是由常數與自變數經過有限次乘法與加法運算得到的,定義如下

其中,ai (i = 0, 1, …, n)是常數,當n = 1時,多項式函數為一次函數。

(2)高斯函數

高斯函數的形式如下

其中,a、b及c均是實常數,且a > 0。

(3)Sigmoid函數

Sigmoid函數是一個在生物學中常見的S函數,定義如下

2.? Logistic回歸

Logistic回歸一般用於分類問題,而其本質是線性回歸模型,只是在回歸的連續值結果上加了一層函數映射,將特徵線性求和,然後使用g (z)作映射,將連續值映射到一個區間內,然後在該區間內取定一個閾值作為分類邊界。根據映射函數g (z)的不同選擇,其分類性能也不同,比如如果映射函數是Sigmoid函數時,其分類結果為0和1兩類,而如果映射函數是雙曲正弦sinh函數時,其分類結果則為1和-1兩類。

以Sigmoid二值化(Sigmoid函數的特徵是:當自變數趨於-∞,因變數趨近於0,而當自變數趨近於∞,因變數趨近於1)為例,為了便於後文的敘述,將Y (W, X )寫作hW (X ),Logistic回歸模型如下Logistic回歸與多重線性回歸實際上有很多相同之處,最大的區別就是他們的因變數不同,其他的基本都差不多。正是因為如此,這兩種回歸可以歸於同一個家族,即廣義線性模型(generalized linear model)。Logistic回歸的因變數可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋。所以實際中最為常用的就是二分類的Logistic回歸。如果因變數是多分類的,則擴展為Softmax回歸。Softmax回歸模型是logistic模型在多分類問題上的推廣,在Softmax回歸中,類標籤Y 可以取k (k > 2)個不同的值,其推導思路與Logistic回歸相同,本文不再贅述。

分類

分類問題是機器學習研究中的一個重要問題,與回歸問題類似,分類過程也是從訓練集中建立因變數和自變數的映射過程。與回歸問題不同的是,在分類問題中,因變數的取值是離散的,根據因變數的取值範圍(個數)可將分類問題分為二分類問題(比如「好人」或者「壞人」)、三分類問題(比如「支持」、「中立」或者「反對」)及多分類問題。在分類問題中,因變數稱為類標(label),而自變數稱為屬性(或者特徵)。

根據分類採用的策略和思路的不同,分類演算法包括(不限於):基於示例的分類方法(代表演算法是KNN)、基於概率模型的分類方法(代表演算法是樸素貝葉斯、最大期望演算法EM)、基於線性模型的分類方法(代表演算法是SVM)、基於決策模型的分類方法(代表演算法包括:C4.5、AdaBoost、隨機森林)等,下面簡單介紹上述各種典型的分類演算法的問題背景和演算法思路。

1. KNN

K最近鄰(k-nearest neighbor,KNN)分類演算法是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的出發點是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。KNN演算法則是從訓練集中找到和新數據最接近的k條記錄,然後根據他們的主要類別來決定新數據的類別。該演算法涉及3個主要因素:訓練集、距離或相似的度量、k的大小,演算法的執行步驟如下:

輸入:訓練集(包括n個已經標註的記錄(X, X ))、k、測試用例X (x1, x2, …, xn )

輸出:測試用例的類標

Step-1:遍歷訓練集中的每個記錄,計算每個記錄屬性特徵Xi(i = 1, 2, …n)與測試用例X (x1, x2, …, xn )的距離,記為Di(i = 1, 2, …n);

Step-2:從Di (i = 1, 2, …n)中選擇最小的k個記錄(樣本);

Step-3:統計這k個記錄(樣本)對應的類別出現的頻率;

Step-4:返回出現頻率最高的類別作為測試用例的預測類標。

KNN的思想很好理解,也容易實現。更重要的是:KNN演算法不僅可以用於分類,還可以用於回歸,具體思路是:通過找出一個樣本的k個最近鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以得到該樣本的屬性。更有用的方法是將不同距離的鄰居對該樣本產生的影響給予不同的權值(如權值與距離成反比),使得回歸更加普適。但KNN演算法的不足之處在於:

(1)每次分類都需要和訓練集中所有的記錄進行一次距離或相似度的計算,如果訓練集很大,則計算負擔很重。

(2)從上述記錄流程中可以看出,如果k個近鄰的類別屬性各異,則就給分類帶來了麻煩(需要其他策略支持)。

2.樸素貝葉斯

樸素貝葉斯分類是利用統計學中的貝葉斯定理來預測類成員的概率,即給定一個樣本,計算該樣本屬於一個特定的類的概率,樸素貝葉斯分類基於的一個假設是:每個屬性之間都是相互獨立的,並且每個屬性對分類問題產生的影響都是一樣的。

貝葉斯定理由英國數學家貝葉斯(Thomas Bayes)發現,用來描述兩個條件概率之間的關係,比如P (A|B)和P (B|A),其中P (A|B)表示事件B已經發生的前提下,事件A發生的概率,稱為事件B發生下事件A的條件概率,其基本公式是

按照乘法法則

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

由上式可以推導得到

例,一座別墅在過去的20年里一共發生過2次被盜,別墅的主人有一條狗,狗平均每周晚上叫3次,在盜賊入侵時狗叫的概率被估計為0.9,問題是:在狗叫的時候發生入侵的概率是多少?

用貝葉斯的理論求解此問題,假設A事件為「狗在晚上叫」,B為「盜賊入侵」,則:

(1)(計算根據:狗平均每周晚上叫3次)

(2)

(計算根據:過去20年發生過2次被盜)

(3) P (A|B)=0.9。(計算根據:B 事件發生時 A 事件發生的概率是 0.9)

基於上述數據,可以很容易地計算出A事件發生時B事件發生的概率P (B | A)是

樸素貝葉斯分類的出發點是:對於給出的待分類項,求解在此項出現的條件下各個類別出現的概率,哪個最大,就認為此待分類項屬於哪個類別。為了便於描述,將事件A表示為特徵屬性X (x1, x2, …, xn ),將事件B表示類標屬性Y (y1, y2, …, ym ),則樸素貝葉斯分類問題可以描述為:

對於一個給定的測試樣本的特徵屬性X (x1, x2, …, xn ),求其屬於各個類標

yi(i = 1, 2, …, m)的概率P (yi | X )中的最大值,基於前面的定義可以知道

其中X表示特徵屬性(x1, x2, …, xn ),由於樸素貝葉斯是基於屬性獨立性的假設(前文已提及),故

又由於P (X )是一個常數,因此只要比較分子的大小即可。樸素貝葉斯分類器的演算法流程如下。

輸入:訓練集,測試用例X (x1, x2, …, xn)

輸出:測試用例X (x1, x2, …, xn)的類標

Step-1:遍歷訓練集,統計各個類別下各個特徵屬性的條件概率估計,即P (xi | yi)(i = 1, 2, …, n; j = 1, 2, …, m)

Step-2:遍歷訓練集,根據上述公式,計算P (y1 | X ), P (y2 | X ), …,P (ym | X )

Step-3:如果P (yk | X ) = max,則測試用例的類標是yk。

為了更好地理解上述計算流程,以一個具體的實例說明。已知一個訓練集如表4-5所示,特徵屬性有兩個,分別是color和weight,其中,color的取值範圍是;weight的取值範圍是。類標屬性有1個(sweet),取值範圍是。

表4-5 訓練集示意

測試用例是(color = 3; weight = 4),求其類標。

遍歷訓練集,可以得到:

遍歷訓練集,可以得到:

因為測試用例是(color = 3; weight = 4),所以

由於P (y1 | (x1 = 3;x2 = 4)) > P (y2 | (x1 = 3; x2 = 4)),故測試用例的類標是y1,即yes。

通過上述的計算實例可以發現,事實上,是沒有必要把P (xi | yi)的所有可能均事先計算出來,而是根據測試用例的具體樣本進行選擇性的計算即可。理論上,樸素貝葉斯分類模型與其他分類方法相比具有最小的誤差率,但其獨立性假設在實際應用中往往是不成立的,這給樸素貝葉斯分類模型的正確分類帶來了一定影響。針對這個缺點,也有一些改進的演算法,此處不作羅列。

NEW

菜單升級啦,一鍵直通CSDN會員服務。你關心的開發問題,這裡都有答案!

搜索:開發疑難/資源一鍵查找,搜遍CSDN全站

會員購買:專屬VIP購買,免積分下載/免廣告/獲免費課程

下載APP:安裝CSDN APP,CSDN資源隨身帶

個人中心:掌上CSDN個人助手,專屬您的個人空間

2018 中國大數據技術大會

BDTC 2018


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI科技大本營 的精彩文章:

「嘰里呱啦」說英語,這家公司要用AI增值語言輸出能力
三攝正普及,四攝在路上?谷歌逆天AI演算法,只做單攝虛化

TAG:AI科技大本營 |