張宇亭
(南京理工大學(xué),南京 210000)
每個(gè)組織在某個(gè)時(shí)候都會(huì)經(jīng)歷一場(chǎng)數(shù)據(jù)驅(qū)動(dòng)的革命。企業(yè)采用大數(shù)據(jù)工具,從社交媒體活動(dòng)、網(wǎng)絡(luò)瀏覽、手機(jī)使用、視頻、音頻、圖像、短信,以及移動(dòng)網(wǎng)絡(luò)的、物聯(lián)網(wǎng)中獲取新的數(shù)據(jù),這些數(shù)據(jù)中有大量的細(xì)粒度的數(shù)據(jù),需要另外進(jìn)行區(qū)分和保存。對(duì)大數(shù)據(jù)的分析有望產(chǎn)生深刻的見解和預(yù)測(cè),從而徹底改變管理層的決策。大數(shù)據(jù)提供了一種方式,將世界上許多從未被量化的方面呈現(xiàn)了出來(lái),這個(gè)過程也被稱為“數(shù)據(jù)化”。
在Hadoop 平臺(tái)中,依據(jù)HDFS 文件系統(tǒng),可以對(duì)大量的進(jìn)程進(jìn)行處理,主要依據(jù)的是MapReduce 的計(jì)算框架。此外,還有用于分析各種業(yè)務(wù)用途的信息的其他功能和工具(例如機(jī)器學(xué)習(xí)算法)。能夠結(jié)合大數(shù)據(jù)工具與不同的數(shù)據(jù)分析工具,如Apache Hive 和Apache Pig!,以及為處理數(shù)據(jù)而設(shè)計(jì)的各種其他大數(shù)據(jù)工具,如ETL。Apache 的Hadoop 是一個(gè)平臺(tái),通過HDFS 存儲(chǔ)、管理、讀、寫和操作大量數(shù)據(jù)/文件的能力,HDFS 是一個(gè)基于谷歌文件系統(tǒng)(GFS)的系統(tǒng),可以分析不同目的的信息。雖然這些方法提高了處理大量數(shù)據(jù)的可能性,但它們并沒有提供用于分析和決策有效數(shù)據(jù)的結(jié)構(gòu)算法。例如IBM 的沃森可能在自然語(yǔ)言處理方面處于前沿,但就系統(tǒng)通過互聯(lián)網(wǎng)吸收和解釋大數(shù)據(jù)的相關(guān)數(shù)據(jù),它還有很長(zhǎng)的路要走。這些觀察結(jié)果反映出,在一個(gè)新興的大數(shù)據(jù)生態(tài)系統(tǒng)中,需要開發(fā)新的方法來(lái)結(jié)構(gòu)化和分類大量數(shù)據(jù)。
依據(jù)K-means 算法的特征,在處理非數(shù)值數(shù)據(jù)的時(shí)候,依據(jù)經(jīng)驗(yàn),可以有如下的解決方案。首先創(chuàng)建一個(gè)過程,“扁平化”所有數(shù)據(jù),從分類和數(shù)字?jǐn)?shù)據(jù)到純數(shù)字的數(shù)據(jù)。根據(jù)分類組合將所有分類過濾成不同的組,這樣就可以單獨(dú)分析每個(gè)組(因?yàn)槲覀兲幚淼氖谴髷?shù)據(jù),所以分組過程和K-means 過程都是通過大數(shù)據(jù)平臺(tái)進(jìn)行的)。也就是說(shuō),只對(duì)其余的數(shù)值變量執(zhí)行K-means 算法。最后,根據(jù)所做的實(shí)驗(yàn),對(duì)結(jié)果集進(jìn)行分析,這些結(jié)果集可以作為進(jìn)一步研究的基礎(chǔ)。
本研究提出了一種以前不可能處理大數(shù)據(jù)中混合數(shù)據(jù)的方法。該方法提高了處理大量數(shù)據(jù)的能力,例如在決策中,因?yàn)榭梢愿嗅槍?duì)性的方式執(zhí)行分析、預(yù)測(cè)。
我們認(rèn)為,將K-means 算法應(yīng)用于大數(shù)據(jù)生態(tài)系統(tǒng)中的混合數(shù)據(jù),可以增強(qiáng)決策能力,使決策者能夠處理海量數(shù)據(jù)。因此,本研究分析了K-means 算法在大數(shù)據(jù)平臺(tái)中應(yīng)用于數(shù)值和分類(非數(shù)值)數(shù)據(jù)時(shí)的影響。該模型假設(shè)數(shù)據(jù)集包含m 個(gè)分類變量和n 個(gè)定量變量,分類變量j 可能具有j≥2 種不同狀態(tài)。K-means算法程序:
要求1:大數(shù)據(jù)中的非數(shù)值數(shù)據(jù)可以賦值。
證明:首先對(duì)數(shù)據(jù)集執(zhí)行K-means 算法,步驟如下:
(1)創(chuàng)建∏mj=1 不同類型的組,它們的類別變量的值不同。對(duì)于每個(gè)記錄,都會(huì)有相應(yīng)的分組,然后把每個(gè)記錄放到相應(yīng)的分組中去。
(2)第一步生成的每個(gè)組都是大數(shù)據(jù)平臺(tái)中的一個(gè)文件(或其他存儲(chǔ)格式)(這將在接下來(lái)的步驟中啟用并行計(jì)算)。
(3)根據(jù)數(shù)值變量對(duì)所有組執(zhí)行并行K-means算法。
(4)將步驟3 中的所有集群(每個(gè)組中的K 個(gè)集群)聚合到一個(gè)結(jié)果,以進(jìn)行進(jìn)一步分析,如第4 節(jié)所述。
(1)將數(shù)據(jù)集和分類文件上傳到HDFS(在Apache Hadoop 中),每個(gè)類別變量的值可能的組合在一個(gè)單獨(dú)的文件中。每個(gè)文件都會(huì)有相應(yīng)的記錄,這是一個(gè)強(qiáng)制性步驟,因?yàn)樾枰鶕?jù)定義/業(yè)務(wù)需求創(chuàng)建所有可用狀態(tài)的組合。注意,如果沒有具有相應(yīng)分類值的記錄,則可能存在空文件(組)。
(2)將所有文件(從步驟1 開始)相乘以創(chuàng)建多行。每一行都描述了一個(gè)獨(dú)特的組合。所有行都存儲(chǔ)在HDFS 文件中(在Apache Hadoop 中),用于并行分析(在大數(shù)據(jù)平臺(tái)中)。
(3)過濾每個(gè)惟一文件的數(shù)據(jù)集(從步驟2 開始),并將相關(guān)的定量變量發(fā)送到相關(guān)文件。
(4)在每個(gè)文件上運(yùn)行(通過bash 腳本)K-means算法(Apache Mahout),這些文件位于一個(gè)單獨(dú)的目錄中(步驟3),參數(shù)如下:
●迭代次數(shù)的可配置參數(shù)x(在本例中,我們對(duì)所有K-means 運(yùn)行使用5 次迭代);
●集群的數(shù)量,K,這受到每個(gè)唯一文件的記錄數(shù)量的影響(從步驟3 開始)。每個(gè)文件的數(shù)量增加的時(shí)候,在集群中,對(duì)應(yīng)的k 的數(shù)量也會(huì)相應(yīng)的增加。
(5)將所有集群收集到一個(gè)定義的結(jié)構(gòu)中,以進(jìn)行額外的分析(比較集群、順序、分析等)。
對(duì)于數(shù)據(jù)集的生成,本文生成了3 個(gè)數(shù)據(jù)集,分別對(duì)應(yīng)的變量的數(shù)量為14 個(gè)、8 個(gè)、6 個(gè)。它包含1100萬(wàn)條記錄,總共約為1.05GB。所有變量(分類變量和數(shù)值變量)的列表如下:
數(shù)量變量:年齡、工作年限、工資、受教育年限、房屋數(shù)量、子女?dāng)?shù)量、每年旅行次數(shù)、車輛數(shù)量。
表1 對(duì)給出了相應(yīng)的可能性的數(shù)值。注意,這六個(gè)分類變量的組合最多可以創(chuàng)建1600 個(gè)不同的特征。
根據(jù)每個(gè)集群記錄數(shù)的預(yù)定義,創(chuàng)建了5000 個(gè)集群。
圖1 描述了端到端用例的端到端技術(shù)實(shí)現(xiàn)。主要內(nèi)容有:
(1)HDFS 是一個(gè)分布式的文件系統(tǒng)。完整的數(shù)據(jù)集被上載到HDFS。然后,創(chuàng)建所有不同的組合,并從完整的數(shù)據(jù)中篩選相關(guān)字段。所有過濾器都存儲(chǔ)在HDFS 中,用于分析過程。
(2)MapReduce ,這是主組件,它處理和管理所有并行處理在分析數(shù)據(jù)時(shí)完成(在實(shí)現(xiàn)示例中,我們使用Apache Mahout 作為 K-means 算法)。
(3)bi,這個(gè)組件是可能性的需求,包括了智能需求。顯然,需求會(huì)隨著組織的不同而變化,但是針對(duì)特定專業(yè)文件的需求在不同的業(yè)務(wù)中可能是相同的(在查詢的目的中,可以通過查詢值本身、數(shù)據(jù)、預(yù)期結(jié)果等來(lái)區(qū)分這些需求)。
圖1 用例的端到端技術(shù)實(shí)現(xiàn)圖
運(yùn)行該過程后,集群被聚合到一個(gè)包含所有結(jié)果和時(shí)間戳的文件中。注意,不是房屋所有者、而是金融專家的記錄,沒有數(shù)值??偟膩?lái)說(shuō),通過過濾過程,確定了40 個(gè)數(shù)值為空的組類型。在100 個(gè)目錄的組中執(zhí)行K-means 算法,其中預(yù)定義的集群數(shù)量。
表1 分類變量
表2 過程步驟
根據(jù)每組/文件/子集數(shù)據(jù)集的重新排序次數(shù)選擇,如表3 所示。每個(gè)K-means 過程的迭代次數(shù)為5 次。
表3 根據(jù)預(yù)定義的集群數(shù)量記錄數(shù)目
根據(jù)表3,K-means 算法總共創(chuàng)建了5940 個(gè)集群(對(duì)于1560 個(gè)有值的組,每組1 到10 個(gè)集群)。注意,識(shí)別40 個(gè)沒有包含任何數(shù)量信息/值的概要文件是非常重要的,因?yàn)榭赡苡胁煌臉I(yè)務(wù)需求和需求需要對(duì)概要文件進(jìn)行標(biāo)識(shí),而沒有任何值或沒有任何記錄/觀察。
主要問題是:組織如何使用聚集成一個(gè)大型數(shù)據(jù)集的大量集群來(lái)進(jìn)行決策?聚合的集群數(shù)據(jù)集包含獨(dú)特的概要文件和組,形成了一個(gè)有價(jià)值的信息模式,可以針對(duì)特定的人群進(jìn)行定位。
本節(jié)演示一個(gè)用于特定決策需求的用例示例。我們假設(shè)已經(jīng)收集并創(chuàng)建了聚合的集群數(shù)據(jù)集,并且公司希望根據(jù)公司的目標(biāo)和需求來(lái)檢查投資于特定的概要文件細(xì)分是否有利可圖。
表4 目標(biāo)查詢值
作為一個(gè)示例,我們從1560 個(gè)組生成的5940 個(gè)集群開始。5940 個(gè)集群總共包含1100 萬(wàn)個(gè)特定資源(其中每個(gè)資源都是一個(gè)特定的用戶觀察)。表4 顯示了為定義目標(biāo)人口的需求指定的值(在本例中)。
如表 5 所示,5940 個(gè)配置文件中只有 5 個(gè)(clus?ter)滿足目標(biāo)配置文件的要求。由于這種分析過程,公司只能關(guān)注這些概要文件中的用戶。
表5 業(yè)務(wù)查詢目標(biāo)概要文件
在本文中,提出了一種新的方法,克服了在大數(shù)據(jù)環(huán)境下使用混合數(shù)據(jù)進(jìn)行決策的困難。根據(jù)業(yè)務(wù)需求將概要文件聚類并縮小到目標(biāo)組的能力改進(jìn)了決策過程。在對(duì)K-means 算法的測(cè)試和實(shí)現(xiàn)中,發(fā)現(xiàn)該算法在實(shí)際運(yùn)行中運(yùn)行良好。然而,程序分析的復(fù)雜性必須在未來(lái)的研究中進(jìn)行測(cè)試。過程的復(fù)雜性更有效率的復(fù)雜性相比,常規(guī)的K-means 算法運(yùn)行在一個(gè)完整的數(shù)據(jù)集,因?yàn)樗軌驕p少數(shù)據(jù)集的大小。該算法運(yùn)行在子集,擁有更少的記錄每組。這影響每個(gè)組的K-means 迭代的數(shù)量。此外,請(qǐng)注意,在大數(shù)據(jù)環(huán)境中,所有的K-means 計(jì)算都可以在不同的數(shù)據(jù)節(jié)點(diǎn)上并行進(jìn)行。因此,復(fù)雜度主要受將生成的最大組。
需要注意的是,本文沒有將大數(shù)據(jù)環(huán)境下混合數(shù)據(jù)的K-means 方法與混合數(shù)據(jù)的K-means 算法進(jìn)行復(fù)雜度分析比較。然而,所提出的方法的復(fù)雜性更好。
(1)減少數(shù)據(jù)集大?。好拷M分析的觀測(cè)值更少(由于過濾了相關(guān)數(shù)據(jù);見第2 節(jié)和第3 節(jié));
(2)分析流程并行化:大數(shù)據(jù)架構(gòu)使我們能夠并行執(zhí)行分析流程(基于MapReduce 作業(yè)在HDFS 平臺(tái)上分配的每個(gè)組/文件)。基于所有數(shù)據(jù)節(jié)點(diǎn)具有相同的容量和性能(在過程運(yùn)行時(shí))的假設(shè),我們還可以假設(shè)最大的組(子集數(shù)據(jù)集)將具有最高的復(fù)雜性,因此將以最大的方式影響總體復(fù)雜性。然而,這一理論假設(shè)還有待驗(yàn)證。