




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
第一章數(shù)據(jù)采集與預處理概述“數(shù)據(jù)采集與預處理目錄CONTENTS數(shù)據(jù)采集簡介1.1數(shù)據(jù)預處理簡介1.2數(shù)據(jù)采集與預處理常用庫1.3學習目標了解數(shù)據(jù)采集的工具與爬蟲原理了解數(shù)據(jù)預處理的目的與意義了解數(shù)據(jù)采集與預處理的常用三方庫有哪些了解爬蟲的分類與基本流程了解數(shù)據(jù)預處理的流程與工具數(shù)據(jù)采集簡介111.1數(shù)據(jù)采集簡介數(shù)據(jù)據(jù)采集(Dataacquisition,DAQ)又稱數(shù)據(jù)獲取。所采集數(shù)據(jù)涵蓋了從傳感器或其它待測設備中所獲取的傳感器數(shù)據(jù)、社交網(wǎng)絡數(shù)據(jù)、移動互聯(lián)網(wǎng)數(shù)據(jù)等各種結(jié)構(gòu)化、半結(jié)構(gòu)化及非結(jié)構(gòu)化類型的海量數(shù)據(jù)。
隨著海量網(wǎng)絡信息的增長和互聯(lián)網(wǎng)技術的發(fā)展,人們對信息獲取的需求日益增加。對于這些錯綜復雜的數(shù)據(jù),需通過數(shù)據(jù)采集技術收集所需要的數(shù)據(jù)。數(shù)據(jù)采集作為數(shù)據(jù)分析生命周期的重要一環(huán),是首先需要了解并掌握的技術。1.1.1數(shù)據(jù)采集的工具1.ApacheFlume2.Fluentd3.Logstash任何完備的數(shù)據(jù)平臺,數(shù)據(jù)采集是必不可少的一步,在以大數(shù)據(jù)、云計算、人工智能為核心特征的數(shù)字化浪潮席卷全球,產(chǎn)生的數(shù)據(jù)量呈指數(shù)級增長的背景下,大數(shù)據(jù)的“5V”特征使得數(shù)據(jù)采集的挑戰(zhàn)愈發(fā)突出,其分別為Volume(大體量)、Velocity(時效性)、Variety(多樣性)、Value(高價值)與Veracity(準確性),如圖所示。本節(jié)介紹四款主流數(shù)據(jù)采集工具:ApacheFlume、Fluentd、Logstash及Splunk,并重點關注它們進行數(shù)據(jù)采集的相關特性。4.Splunk1.1.1數(shù)據(jù)采集的工具
Flume是Apache旗下的一款高可用的,高可靠的,分布式的用于海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù);同時提供了數(shù)據(jù)的簡單處理,并寫到各種數(shù)據(jù)接收方(可定制)的能力。簡單來說,F(xiàn)lume是一個實時采集日志的數(shù)據(jù)采集引擎。Flume提供了從console(控制臺)、RPC(Thrift-RPC)、text(文件)、tail(UNIXtail)、syslog(syslog日志系統(tǒng)),exec(命令執(zhí)行)等數(shù)據(jù)源上收集數(shù)據(jù)的能力,支持TCP和UDP兩種模式。網(wǎng)絡日志(WebLogs)作為數(shù)據(jù)源經(jīng)由Flume的管道架構(gòu)被存儲到分布式文件系統(tǒng)(HadoopDistributedFileSystem,HDFS)中,過程如圖所示。Flume被設計成一個分布式的管道架構(gòu),可以看作在數(shù)據(jù)源和目標地之間是一個由Agent(代理,最小日志采集單位)構(gòu)成的網(wǎng)絡,其支持數(shù)據(jù)路由。是專用于收集日志的,它從數(shù)據(jù)發(fā)生器接收數(shù)據(jù),并將接收的數(shù)據(jù)以Flume的event格式傳遞給一個或者多個通道Channel。Flume提供多種數(shù)據(jù)接收的方式,例如Thrift,twitter1%等。1.Source是一種短暫的存儲容器,它將從Source處接收到的event格式的數(shù)據(jù)緩存起來,直到它們被Sink消費掉,它在Source和Sink間起著橋梁的作用,Channel是一個完整的事務,這一點保證了數(shù)據(jù)在收發(fā)時候的一致性。并且它可以和任意數(shù)量的Source和Sink鏈接。支持的類型有:JDBCchannel,F(xiàn)ileSystemchannel,Memorychannel等。2.Channel是用于把數(shù)據(jù)發(fā)送到目的地的組件,它將數(shù)據(jù)存儲到集中存儲器中,例如HDFS,它從Channel接收數(shù)據(jù)并將其傳遞給目標地。目標地可能是另一個Sink,也可能HDFS,HBase等集中存儲器。3.Sink1.1.1數(shù)據(jù)采集的工具Agent的各個組件如圖所示,主要由Source、Channel與Sink三個組件組成。1.1.1數(shù)據(jù)采集的工具Flume可以將應用產(chǎn)生的數(shù)據(jù)存儲到任何集中存儲器中,如HDFS,Hbase。提供上下文路由特征。Flume的管道基于事務,保證了數(shù)據(jù)在傳送和接收時的一致性。Flume的優(yōu)點當收集數(shù)據(jù)的速度超過寫入數(shù)據(jù),即收集信息達到峰值,這種情況下,F(xiàn)lume會在數(shù)據(jù)生產(chǎn)者和數(shù)據(jù)收容器間做出調(diào)整,保證其能夠在兩者之間提供平穩(wěn)的數(shù)據(jù)傳輸。Flume是可靠的,容錯性高的,可升級的,易管理的,并且可定制的。除了日志信息,F(xiàn)lume也可以用來接入收集規(guī)模宏大的社交網(wǎng)絡或電商網(wǎng)站節(jié)點事件數(shù)據(jù),如Facebook、亞馬遜。1.1.1數(shù)據(jù)采集的工具Fluentd是一個完全免費且開源的日志收集器,用于統(tǒng)一數(shù)據(jù)收集和使用,以便更好地使用和理解數(shù)據(jù)。Fluentd是云端原生計算基金會(CloudNativeComputingFoundation,CNCF)的成員項目之一,所有組件均可在Apache2許可下獲得,它同時也提供高可靠性和高擴展性。Fluentd的部署與Flume類似,其構(gòu)成如圖所示,Input/Buffer/Output非常類似于Flume的Source/Channel/Sink。①Input:輸入。負責接收數(shù)據(jù)或者主動抓取數(shù)據(jù),支持syslog、http、filetail等。②Engine:引擎。負責處理輸入數(shù)據(jù),生成輸出數(shù)據(jù)。③Buffer:緩沖區(qū)。負責數(shù)據(jù)獲取的性能和可靠性,也有文件或內(nèi)存等不同類型的Buffer可以配置。④Output:輸出。負責輸出數(shù)據(jù)到目的地,例如文件、AWSS3或者其它的Fluentd。1.1.1數(shù)據(jù)采集的工具①JSON統(tǒng)一記錄。如圖所示,F(xiàn)luentd盡可能將數(shù)據(jù)構(gòu)造為JSON:這允許Fluentd統(tǒng)一處理日志數(shù)據(jù)的所有方面:跨多個源和目標(統(tǒng)一日志記錄層)收集,過濾,緩沖和輸出日志。使用JSON進行下游數(shù)據(jù)處理要容易得多,因為它具有足夠的結(jié)構(gòu)可訪問,同時保留了靈活的模式。這使得Fluentd善于解決數(shù)據(jù)流流向混亂的問題,通過在兩者之間提供統(tǒng)一的日志記錄層,從后端系統(tǒng)中分離數(shù)據(jù)源。②可插拔架構(gòu)。Fluentd具有靈活的插件系統(tǒng),允許社區(qū)擴展其功能。同時它的可插拔架構(gòu),支持各種不同種類和格式的數(shù)據(jù)源和數(shù)據(jù)輸出。通過利用插件可以更好地利用日志。Fluentd的優(yōu)點③少量系統(tǒng)資源。Fluentd用C語言和Ruby結(jié)合編寫,并且只需要很少的系統(tǒng)資源。原始實例在30-40MB的內(nèi)存上運行,并且可以處理13,000個事件/秒/核心。④內(nèi)置可靠性。Fluentd支持基于內(nèi)存和文件的緩沖,以防止節(jié)點間數(shù)據(jù)丟失。Fluentd還支持強大的故障轉(zhuǎn)移功能,可以設置為高可用性。1.1.1數(shù)據(jù)采集的工具
Logstash誕生于2009年8月2日,其作者是世界著名的運維工程師喬丹西塞(JordanSissel),在2013年被Elasticsearch公司收購。Logstash是一個免費且開源的數(shù)據(jù)收集引擎,具備實時管道處理能力。能夠從多個來源采集數(shù)據(jù),轉(zhuǎn)換數(shù)據(jù),然后將數(shù)據(jù)發(fā)送到所選擇的目的地。簡單來說,Logstash就是一根具備實時數(shù)據(jù)傳輸能力的管道,負責將數(shù)據(jù)信息從管道的輸入端傳輸?shù)焦艿赖妮敵龆?;與此同時這根管道還可以讓你根據(jù)自己的需求在中間加上濾網(wǎng),Logstash提供了很多功能強大的濾網(wǎng)以滿足你的各種應用場景。
Logstash通常用做日志采集設備,如在著名的數(shù)據(jù)棧ELK(Elasticsearch+Logstash+Kibana)中作為日志收集器使用。如圖所示,Elasticsearch是搜索和分析引擎;Logstash作為服務器端數(shù)據(jù)處理管道,它同時從多個源中提取數(shù)據(jù)并轉(zhuǎn)換,然后將其發(fā)送到類似Elasticsearch的“存儲”中;Beats是一些輕量級的數(shù)據(jù)攝入器的組合,用于將數(shù)據(jù)發(fā)送到Elasticsearch或發(fā)向Logstash做進一步的處理,并最后導入到Elasticsearch;Kibana允許用戶在Elasticsearch中使用圖表將數(shù)據(jù)可視化。Logstash作為數(shù)據(jù)源與數(shù)據(jù)存儲分析工具之間的橋梁,結(jié)合ElasticSearch以及Kibana,能夠極大方便數(shù)據(jù)的處理與分析。1.1.1數(shù)據(jù)采集的工具
如圖所示,Logstash的數(shù)據(jù)處理過程主要包括:Inputs,F(xiàn)ilters,Outputs三部分(其中Inputs和Outputs是必選項,F(xiàn)ilters是可選項),另外在Inputs和Outputs中可以使用Codecs(編碼解碼器)對數(shù)據(jù)格式進行處理。這四個部分均以插件形式存在,用戶通過定義pipeline配置文件,設置需要使用的input,filter,output,codec插件,以實現(xiàn)特定的數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)輸出等功能。此外,數(shù)據(jù)往往以各種各樣的形式,或分散或集中地存在于很多系統(tǒng)中。如圖所示,Logstash支持各種輸入選擇,可以同時從眾多常用來源捕捉事件。能夠以連續(xù)的流式傳輸方式,輕松地從日志、指標、Web應用、數(shù)據(jù)存儲以及各AWS服務中采集數(shù)據(jù)。1.1.1數(shù)據(jù)采集的工具
如圖所示,Logstash的數(shù)據(jù)處理過程主要包括:Inputs,F(xiàn)ilters,Outputs三部分(其中Inputs和Outputs是必選項,F(xiàn)ilters是可選項),另外在Inputs和Outputs中可以使用Codecs(編碼解碼器)對數(shù)據(jù)格式進行處理。這四個部分均以插件形式存在,用戶通過定義pipeline配置文件,設置需要使用的input,filter,output,codec插件,以實現(xiàn)特定的數(shù)據(jù)采集,數(shù)據(jù)處理,數(shù)據(jù)輸出等功能。此外,數(shù)據(jù)往往以各種各樣的形式,或分散或集中地存在于很多系統(tǒng)中。如圖所示,Logstash支持各種輸入選擇,可以同時從眾多常用來源捕捉事件。能夠以連續(xù)的流式傳輸方式,輕松地從日志、指標、Web應用、數(shù)據(jù)存儲以及各AWS服務中采集數(shù)據(jù)。1.1.1數(shù)據(jù)采集的工具
數(shù)據(jù)從源傳輸?shù)酱鎯斓倪^程中,Logstash過濾器能夠解析各個事件,識別已命名的字段以構(gòu)建結(jié)構(gòu),并將它們轉(zhuǎn)換成通用格式,以便進行更強大的分析和實現(xiàn)商業(yè)價值。如圖所示,Logstash能夠動態(tài)地轉(zhuǎn)換和解析數(shù)據(jù),不受格式或復雜度的影響。①利用Grok從非結(jié)構(gòu)化數(shù)據(jù)中派生出結(jié)構(gòu)。②從IP地址破譯出地理坐標。③將PII數(shù)據(jù)匿名化,完全排除敏感字段。④簡化整體處理,不受數(shù)據(jù)源、格式或架構(gòu)的影響。1.1.1數(shù)據(jù)采集的工具
Logstash提供眾多輸出選擇,可以將數(shù)據(jù)發(fā)送到您要指定的地方,并且能夠靈活地解鎖眾多下游用例。Elasticsearch是我們的首選輸出方向,能夠為我們的搜索和分析帶來無限可能。但它并非唯一選擇,如圖所示,Logstash提供眾多輸出選擇,可以將數(shù)據(jù)發(fā)送到用戶指定的地方,包括syslog(系統(tǒng)日志)和statsd(一種監(jiān)控數(shù)據(jù)后端存儲開發(fā)的前端網(wǎng)絡應用)等。1.1.1數(shù)據(jù)采集的工具①可擴展。Logstash采用可插拔框架,通過200多個插件,Logstash可以接受幾乎各種各樣的數(shù)據(jù)。包括日志、網(wǎng)絡請求、關系型數(shù)據(jù)庫、傳感器或物聯(lián)網(wǎng)等。②可靠性與安全性。Logstash構(gòu)建了可信的交付管道:假如Logstash節(jié)點發(fā)生故障,Logstash會通過持久化隊列來保證至少將運行中的事件送達一次。那些未被正常處理的消息會被送往死信隊列(deadletterqueue)以便做進一步處理。由于具備了這種吸收吞吐量的能力,無需采用額外的隊列層,Logstash就能平穩(wěn)度過高峰期。Logstash的優(yōu)點③可監(jiān)視。Logstash管道通常服務于多種用途,會變得非常復雜,因此充分了解管道性能、可用性和瓶頸非常重要。借助監(jiān)測和管道查看器功能,可以輕松觀察和研究處于活動狀態(tài)的Logstash節(jié)點或整個部署。1.1.1數(shù)據(jù)采集的工具
1.在數(shù)據(jù)傳輸方面,F(xiàn)lume更注重于數(shù)據(jù)的傳輸,而在數(shù)據(jù)預處理方面不如Logstash,而在傳輸上Flume比Logstash更可靠,因為數(shù)據(jù)會持久化存儲在channel中,只有當數(shù)據(jù)存儲在sink端中才會從channel中刪除,這個過程保證了數(shù)據(jù)的可靠性。
屬性FlumeLogstashFluentd內(nèi)存占用大大小性能高高高語言JavaJRubyC和Ruby框架規(guī)模重量級重量級輕量級插件支持多較多多擴展性一般社區(qū)活躍度高一般集群分布式單節(jié)點單節(jié)點
從表中的對比以及前文中所描述的各個工具的特點,可以看出來不同組件之間有著不同的優(yōu)勢和劣勢,總結(jié)以下特點: 2.在數(shù)據(jù)預處理方面,Logstash屬于ELK組件之一,一般會同ELK其它組件一起配合使用,所以其更注重于數(shù)據(jù)的預處理。 3.在插件和可擴展性方面Logstash有比Flume豐富的插件可選,所以在擴展功能上比Flume全面,而且對比與Fluentd而言Logstash也更加優(yōu)秀,相比起來Fluentd插件質(zhì)量不夠好,第三方插件大多是使用者根據(jù)自己業(yè)務需要編寫,只為實現(xiàn)特定需求,沒有足夠的泛化,也沒有足夠的測試和性能評估。 4.在性能和內(nèi)存占用方面,F(xiàn)luentd雖然有高性能這一項,可能相對于logstash要好很多,但在實際使用中,解析->轉(zhuǎn)換->入庫整個過程性能并不理想。此外Fluentd的性能既因為Ruby消耗過多計算和內(nèi)存資源,又因為Ruby難以受益于多核,所以對數(shù)據(jù)吞吐量大的業(yè)務來說它是很昂貴的。1.1.1數(shù)據(jù)采集的工具
Splunk作為一個不開源的商業(yè)化大數(shù)據(jù)平臺,是一個功能完備的企業(yè)級產(chǎn)品。提供完整的數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)分析和處理,數(shù)據(jù)展示的能力,包括命令行窗口,Web圖形界面接口和其他接口,權(quán)限控制,分布式管理服務,數(shù)據(jù)索引,網(wǎng)絡端口監(jiān)聽,數(shù)據(jù)警報,文件監(jiān)聽等功能。使用Splunk處理計算機數(shù)據(jù),可以在幾分鐘內(nèi)收集、分析和實時獲取數(shù)據(jù),并從中快速找到系統(tǒng)異常問題和調(diào)查安全事件,監(jiān)視端對端基礎結(jié)構(gòu),避免服務性能降低或中斷,以較低成本滿足合規(guī)性要求,關聯(lián)并分析跨越多個系統(tǒng)的復雜事件,從而獲取新層次的運營可見性以及IT和業(yè)務智能。Splunk主要包括以下三個角色。
①SearchHead。SearchHead為搜索頭,其負責數(shù)據(jù)的搜索和處理,提供搜索時的信息抽取。SearchHead的作用就是根據(jù)用戶的查詢請求查詢各個Indexers中的數(shù)據(jù),融合Indexers所返回的結(jié)果,統(tǒng)一顯示給用戶,它只負責查詢,不負責建立索引。
②Indexer。Indexer為索引器,其負責數(shù)據(jù)的存儲和索引。Indexer不僅負責為數(shù)據(jù)建立索引,還負責響應查找索引數(shù)據(jù)的用戶請求,還有讀取數(shù)據(jù)和負責查找管理工作。雖然Indexer可以查找它本身的數(shù)據(jù),但是在多Indexer的集群中,可以通過SearchHead的組件來整合多個Indexer,對外提供統(tǒng)一的查詢管理和服務。
③Forwarder。Forwarder為轉(zhuǎn)發(fā)器,其負責數(shù)據(jù)的收集、清洗、變形,并發(fā)送給Indexer。SplunkForwarder作為Splunk提供的組件,它的作用是把不同機器上面的數(shù)據(jù),如log(日志文件),轉(zhuǎn)發(fā)給indexer。Forwarder可以運行在不同的操作系統(tǒng)上面。1.1.1數(shù)據(jù)采集的工具
Splunk提供了三種Forwarder,分別是UniversalForwarder、HeavyForwarder和LightForwarder。UniversalForwarder相對于其他兩種最重要的優(yōu)點是:它能夠極大地減少對主機硬件資源的占用。但是,它也做出了一定的犧牲,如不支持查詢和建立數(shù)據(jù)索引。
Splunk內(nèi)置了對Syslog,TCP/UDP,Spooling的支持,同時,用戶可以通過開發(fā)Input和ModularInput的方式來獲取特定的數(shù)據(jù)。在Splunk提供的軟件倉庫里有很多成熟的數(shù)據(jù)采集應用,如AWS,DBConnect等,可以方便的從云或者是數(shù)據(jù)庫中獲取數(shù)據(jù)進入Splunk的數(shù)據(jù)平臺做分析。
值得注意的是,SearchHead和Indexer都支持Cluster,即高可用,高擴展。但是Splunk現(xiàn)在還沒有針對Forwarder的Cluster的功能。也就是說如果有一臺Forwarder的機器出了故障,數(shù)據(jù)收集也會隨之中斷,并不能把正在運行的數(shù)據(jù)采集任務Failover(故障轉(zhuǎn)移)到其它的Forwarder上。1.1.2爬蟲的原理與分類
網(wǎng)絡爬蟲是按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或腳本。網(wǎng)絡爬蟲按照系統(tǒng)結(jié)構(gòu)和實現(xiàn)技術,可以分為以下四種類型:通用網(wǎng)絡爬蟲(GeneralPurposeWebCrawler)、
聚焦網(wǎng)絡爬蟲(FocusedWebCrawler)、
增量式網(wǎng)絡爬蟲(IncrementalWebCrawler)、
深層網(wǎng)絡爬蟲(DeepWebCrawler)。
實際的網(wǎng)絡爬蟲系統(tǒng)通常是幾種爬蟲技術相結(jié)合實現(xiàn)的。通用網(wǎng)絡爬蟲
通用網(wǎng)絡爬蟲的爬取對象從一些種子URL延展至整個Web,主要為門戶站點搜索引擎和大型Web服務提供商采集數(shù)據(jù)的服務,有較高的應用價值。這類網(wǎng)絡爬蟲爬取的范圍和數(shù)量巨大,對于爬取速度和存儲空間要求較高,對于爬取頁面的順序要求相對較低,同時由于待刷新的頁面過多,通常采用并行工作方式,但需要較長時間才能刷新一次頁面。通用網(wǎng)絡爬蟲的結(jié)構(gòu)大致可以分為頁面爬行模塊、頁面分析模塊、鏈接過濾模塊、頁面數(shù)據(jù)庫、URL隊列、初始URL集合幾個部分。如圖所示,通用網(wǎng)絡爬蟲的實現(xiàn)原理及過程簡要概括如下。1.1.2爬蟲的原理與分類爬取過程04030201從URL隊列中讀取新的URL,并依據(jù)新的URL爬取網(wǎng)頁,同時從新網(wǎng)頁中獲取新URL,并重復上述的爬取過程。將新的URL放到URL隊列中。獲取了下一個新的URL地址之后,會將新的URL地址放到URL隊列中。
根據(jù)初始的URL爬取頁面并獲得新的URL。獲得初始的URL地址之后,首先需要爬取對應URL地址中的網(wǎng)頁,爬取了對應的URL地址中的網(wǎng)頁后,將網(wǎng)頁存儲到原始數(shù)據(jù)庫中,并且在爬取網(wǎng)頁的同時,發(fā)現(xiàn)新的URL地址,同時將已爬取的URL地址存放到一個URL列表中,用于去重和判斷爬取的進程。獲取初始的URL。初始的URL地址可以由用戶人為地指定,也可以由用戶指定的某個或某幾個初始爬取網(wǎng)頁決定。1.1.2爬蟲的原理與分類05滿足爬蟲系統(tǒng)設置的停止條件時,停止爬取。在編寫爬蟲的時候,一般會設置相應的停止條件。如果沒有設置停止條件,爬蟲則會一直爬取下去,一直到無法獲取新的URL地址為止,若設置了停止條件,爬蟲則會在停止條件滿足時停止爬取。為提高工作效率,通用網(wǎng)絡爬蟲會采取一定的爬行策略。常用的爬行策略有:深度優(yōu)先策略、廣度優(yōu)先策略。A深度優(yōu)先策略:基本方法是按照深度由低到高的順序,依次訪問下一級網(wǎng)頁鏈接,直到不能再深入為止。爬蟲在完成一個爬行分支后返回到上一鏈接節(jié)點進一步搜索其它鏈接。當所有鏈接遍歷完后,爬行任務結(jié)束。這種策略比較適合垂直搜索或站內(nèi)搜索,但當爬行頁面內(nèi)容層次較深的站點時會造成資源的巨大浪費。B廣度優(yōu)先策略:此策略按照網(wǎng)頁內(nèi)容目錄層次深淺來爬行頁面,處于較淺目錄層次的頁面首先被爬行。當同一層次中的頁面爬行完畢后,爬蟲再深入下一層繼續(xù)爬行。這種策略能夠有效控制頁面的爬行深度,避免遇到一個無窮深層分支時無法結(jié)束爬行的問題,無需存儲大量中間節(jié)點,不足之處在于需較長時間才能爬行到目錄層次較深的頁面。1.1.2爬蟲的原理與分類聚焦網(wǎng)絡爬蟲
聚焦網(wǎng)絡爬蟲是指選擇性地爬行那些與預先定義好的主題相關頁面的網(wǎng)絡爬蟲。相較于通用網(wǎng)絡爬蟲而言,聚焦爬蟲只需要爬行與主題相關的頁面,極大地節(jié)省了硬件和網(wǎng)絡資源,保存的頁面也由于數(shù)量少而更新快,還可以很好地滿足一些特定人群對特定領域信息的需求。由于聚焦網(wǎng)絡爬蟲需要有目的地進行爬取,所以相較于通用網(wǎng)絡爬蟲而言,需要增加目標的定義和過濾機制,具體來說,此時,其執(zhí)行原理和過程需要比通用網(wǎng)絡爬蟲多出三步,即目標的定義、無關鏈接的過濾、下一步要爬取的URL地址的選取。如圖所示,聚焦網(wǎng)絡爬蟲的實現(xiàn)原理及過程簡要概括如下。1.1.2爬蟲的原理與分類①對爬取目標的定義和描述。在聚焦網(wǎng)絡爬蟲中,首先要依據(jù)爬取需求定義好該聚焦網(wǎng)絡爬蟲爬取的目標,以及進行相關的描述。②獲取初始的URL。③根據(jù)初始的URL爬取頁面,并獲得新的URL。④從新的URL中過濾掉與爬取目標無關的鏈接。因為聚焦網(wǎng)絡爬蟲對網(wǎng)頁的爬取是有目的性的,所以與目標無關的網(wǎng)頁將會被過濾掉。同時需要將已爬取的URL地址存放到一個URL列表中,用于去重和判斷爬取的進程。⑤將過濾后的鏈接放到URL隊列中。⑥從URL隊列中,根據(jù)搜索算法確定URL的優(yōu)先級,并確定下一步要爬取的URL地址。在聚焦網(wǎng)絡爬蟲中,下一步爬取哪些URL地址相對來說是很重要的。對于聚焦網(wǎng)絡爬蟲來說,不同的爬取順序,可能導致爬蟲的執(zhí)行效率不同,所以,需要依據(jù)搜索策略來確定下一步需要爬取哪些URL地址。⑦從下一步要爬取的URL地址中,讀取新的URL,然后依據(jù)新的URL地址爬取網(wǎng)頁,并重復上述爬取過程。⑧滿足系統(tǒng)中設置的停止條件時,或無法獲取新的URL地址時,停止爬行。1.1.2爬蟲的原理與分類增量式網(wǎng)絡爬蟲
增量式網(wǎng)絡爬蟲是指對已下載網(wǎng)頁采取增量式更新和只爬取新產(chǎn)生或發(fā)生變化網(wǎng)頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是新的頁面。相較于周期性爬行和刷新頁面的網(wǎng)絡爬蟲而言,增量式爬蟲只會在需要的時候爬行新產(chǎn)生或發(fā)生更新的頁面,并不重新下載沒有發(fā)生變化的頁面,可有效減少數(shù)據(jù)下載量,及時更新已爬行的網(wǎng)頁,減小時間和空間上的耗費,但是增加了爬行算法的復雜度和實現(xiàn)難度。增量式網(wǎng)絡爬蟲的體系結(jié)構(gòu)包含爬行模塊、排序模塊、更新模塊、本地頁面集、待爬行URL集以及本地頁面URL集。
增量式爬蟲有兩個目標:保持本地頁面集中存儲的頁面為最新頁面和提高本地集中存儲頁面的質(zhì)量。為實現(xiàn)第一個目標,增量式爬蟲需要通過重新訪問網(wǎng)頁來更新本地頁面集中頁面內(nèi)容,常用的方法有:①統(tǒng)一更新法:爬蟲以相同的頻率訪問所有網(wǎng)頁,不考慮網(wǎng)頁的改變頻率;②個體更新法:爬蟲根據(jù)個體網(wǎng)頁的改變頻率來重新訪問各頁面;③基于分類的更新法:爬蟲根據(jù)網(wǎng)頁改變頻率將其分為更新較快網(wǎng)頁子集和更新較慢網(wǎng)頁子集兩類,然后以不同的頻率訪問這兩類網(wǎng)頁。為實現(xiàn)第二個目標,增量式爬蟲需要對網(wǎng)頁的重要性排序,常用的策略有:廣度優(yōu)先策略、PageRank優(yōu)先策略等。
增量式網(wǎng)絡爬蟲和各種爬蟲的大致流程基本相似,只不過多出了去重的判斷,這也是增量式網(wǎng)絡爬蟲的特點。其多出來的三個步驟為:
①在獲取URL時,發(fā)送請求之前先判斷這個URL是不是之前爬取過。
②在解析URL內(nèi)容后判斷這部分內(nèi)容是不是之前爬取過。
③在將采集到的信息寫入存儲介質(zhì)時判斷內(nèi)容是不是已經(jīng)在介質(zhì)中存在。1.1.2爬蟲的原理與分類DeepWeb爬蟲
Web頁面按存在方式可以分為表層網(wǎng)頁(SurfaceWeb)和深層網(wǎng)頁(DeepWeb)。表層網(wǎng)頁是指傳統(tǒng)搜索引擎可以索引的頁面,即以超鏈接可以到達的靜態(tài)網(wǎng)頁為主構(gòu)成的Web頁面。DeepWeb是那些大部分內(nèi)容不能通過靜態(tài)鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關鍵詞才能獲得的Web頁面。例如那些用戶注冊后內(nèi)容才可見的網(wǎng)頁就屬于DeepWeb。并且DeepWeb中可訪問信息容量是SurfaceWeb的幾百倍,是互聯(lián)網(wǎng)上最大、發(fā)展最快的新型信息資源。
DeepWeb爬蟲體系結(jié)構(gòu)包含六個基本功能模塊(爬行控制器、解析器、表單分析器、表單處理器、響應分析器、LVS控制器)和兩個爬蟲內(nèi)部數(shù)據(jù)結(jié)構(gòu)(URL列表、LVS表)。其中LVS(LabelValueSet)表示標簽或數(shù)值集合,用來表示填充表單的數(shù)據(jù)源。
DeepWeb爬蟲爬行過程中最重要部分就是表單填寫,包含兩種類型:①基于領域知識的表單填寫:此方法一般會維持一個本體庫,通過語義分析來選取合適的關鍵詞填寫表單。②基于網(wǎng)頁結(jié)構(gòu)分析的表單填寫:此方法一般無領域知識或僅有有限的領域知識,將網(wǎng)頁表單表示成DOM樹,從中提取表單各字段值。1.1.2爬蟲的原理與分類如圖所示網(wǎng)絡爬蟲的核心流程可概括為:發(fā)起請求、獲取相應內(nèi)容、解析內(nèi)容、保存數(shù)據(jù)四個主要步驟。前兩個步驟為發(fā)起請求(Request)和獲取服務器的響應(Response),也是爬蟲最核心部分。1.1.3網(wǎng)絡爬蟲核心教程Request由客戶端向服務端發(fā)出,如圖所示,可以分為4部分內(nèi)容:請求方式(RequestMethod)、請求網(wǎng)址(RequestURL)、請求頭(RequestHeaders)、請求體(RequestBody)。1.1.3網(wǎng)絡爬蟲核心教程1.1.3網(wǎng)絡爬蟲核心教程(1)請求方式
常見的請求方式有兩種:GET和POST。在瀏覽器中直接輸入URL并回車,這便發(fā)起了一個GET請求,請求的參數(shù)會直接包含到URL里。例如在百度中搜索相應內(nèi)容,就是一個GET請求,其中URL中包含了對請求的參數(shù)信息。POST請求大多在表單提交時發(fā)起。例如對于一個登錄表單,輸入用戶名和密碼后,點擊“登錄”按鈕,這通常會發(fā)起一個POST請求,其數(shù)據(jù)通常以表單的形式傳輸,而不會體現(xiàn)在URL中。 GET請求中的參數(shù)包含在URL里面,數(shù)據(jù)可以在URL中看到,而POST請求的URL不會包含這些數(shù)據(jù),數(shù)據(jù)都是通過表單形式傳輸?shù)?,包含在請求體中;GET請求提交的數(shù)據(jù)最多只有1024字節(jié),而POST方式?jīng)]有限制;一般來說,需要提交用戶名和密碼等敏感信息,使用GET方法請求會暴露在URL中,所以此時最好以POST方式發(fā)送,上傳文件時,由于文件內(nèi)容比較大,也會選用POST方式。我們平常使用的請求大部分是GET和POST請求,如表所示,還有一些請求方式如HEAD、PUT、DELETE等。方法描述GET請求頁面,并返回頁面內(nèi)容HEAD類似于GET請求,只不過返回的響應中沒有具體的內(nèi)容,用于獲取報頭POST大多數(shù)用于提交表單或上傳文件,數(shù)據(jù)包含在請求體中PUT從客戶端向服務器傳送的數(shù)據(jù)取代指定文檔中的內(nèi)容DELETE請求服務器刪除指定的頁面CONNECT把服務器當做跳板,讓服務器代替客戶端訪問其他網(wǎng)頁OPTIONS允許客戶端查看服務器的性能TRACE回顯服務器收到的請求,主要用于測試或診斷1.1.3網(wǎng)絡爬蟲核心教程(2)請求網(wǎng)址URLURL(uniformresourcelocator)即統(tǒng)一資源定位符,用于唯一確定想請求的資源。如一個網(wǎng)頁文檔、一張圖片、一個視頻等都可以用URL來確定。(3)請求頭請求頭以鍵值對的形式將請求的一些配置信息告訴服務器,讓服務器判斷這些配置信息并解析請求頭,用來說明服務器要使用的附加信息,比較重要的信息有Cookie,Referer,User-Agent等。下面簡要說明一些常用的頭信息。①Accept:請求報頭域,用于指定客戶端可接受哪些類型的信息。②Accept-Language:指定客戶端可接受的語言類型。③Accept-Encoding:指定客戶端可接受的內(nèi)容編碼。④Host:用于指定請求資源的主機IP和端口號,其內(nèi)容為請求URL的原始服務器或網(wǎng)關的位置。從HTTP1.1版本開始,請求必須包含此內(nèi)容。⑤Cookie:也常用復數(shù)形式Cookies,這是網(wǎng)站為了辨別用戶進行會話跟蹤而存儲在用戶本地的數(shù)據(jù)。它的主要功能是維持當前訪問會話。如我們輸入用戶名和密碼成功登錄某個網(wǎng)站后,服務器會用會話保存登錄狀態(tài)信息,后面我們每次刷新或請求該站點的其他頁面時,會發(fā)現(xiàn)都是登錄狀態(tài),這就是Cookies的功勞。Cookies里有信息標識了我們所對應的服務器的會話,每次瀏覽器在請求該站點的頁面時,都會在請求頭加上Cookies并將其返回給服務器,服務器通過Cookies識別出是我們自己,并且查出當前狀態(tài)是登錄狀態(tài),所以返回結(jié)果就是登陸之后才能看到的網(wǎng)頁內(nèi)容。⑥Referer:此內(nèi)容用來標識這個請求是從哪個頁面發(fā)過來的,服務器可以拿到這一信息并做相應處理,如做來源統(tǒng)計、防盜鏈處理等。⑦User-Agent:簡稱UA,它是一個特殊的字符串頭,可以使服務器識別客戶使用的操作系統(tǒng)及版本、瀏覽器及版本等信息。再做爬蟲時加上此信息,可以偽裝為瀏覽器,如果不加則很容易可能被識別出為爬蟲。⑧Content-Type:也稱為互聯(lián)網(wǎng)媒體類型(InternetMediaType)或者MIME類型,在HTTP協(xié)議消息頭中,它用來表示具體請求中的媒體類型信息。如text/html代表HTML格式,image/gif代表GIF圖片,application/json代表JSON類型。(4)請求體請求體一般承載的內(nèi)容是POST請求中的表單數(shù)據(jù),而對于GET請求,請求體則為空。Response由服務端返回給客戶端,如圖所示,可以分為三部分:響應狀態(tài)(ResponseStatus)、響應頭(ResponseHeaders)、響應體(ResponseBody)。1.1.3網(wǎng)絡爬蟲核心教程1.1.3網(wǎng)絡爬蟲核心教程(1)響應狀態(tài)響應狀態(tài)表示服務器對響應的反饋,主要由狀態(tài)碼來標識,如200代表服務器正常響應,404代表頁面未找到,500代表服務器內(nèi)部發(fā)生錯誤。網(wǎng)絡爬蟲中,我們可以根據(jù)狀態(tài)碼的數(shù)字來判斷服務器響應狀態(tài),如狀態(tài)碼為200,則證明成功返回數(shù)據(jù),再進行進一步的處理。(2)響應頭響應頭包含了服務器對請求的應答信息,下面簡要說明一些常用的頭信息:①Date:標識響應產(chǎn)生的時間。②Last-Modified:指定資源的最后修改時間。③Content-Encoding:指定響應內(nèi)容的編碼。④Server:包含服務器的信息,如名稱、版本號等。⑤Content-Type:文檔類型,指定返回的數(shù)據(jù)類型是什么,如text/html代表返回HTML文檔,application/x-javascript代表返回JavaScript文件,image/jpeg代表返回圖片。⑥Set-Cookie:設置Cookies。響應頭中的Set-Cookie告訴瀏覽器需要將此內(nèi)容放在Cookies中,下次請求攜帶Cookies請求。⑦Expires:指定響應的過期時間,可以使代理服務器或瀏覽器將加載的內(nèi)容更新到緩存中。如果再次訪問時,就可以直接從緩存中加載,降低服務器負載,縮短加載時間。1.1.3網(wǎng)絡爬蟲核心教程(3)響應體Response中最重要的當屬響應體的內(nèi)容。響應的正文數(shù)據(jù)都在響應體中,比如請求網(wǎng)頁時,它的響應體就是網(wǎng)頁的HTML代碼;請求一張圖片時,它的響應體就是圖片的二進制數(shù)據(jù)。在做爬蟲時,我們主要通過響應體得到的網(wǎng)頁的源代碼、JSON格式數(shù)據(jù)等,然后從中做相應內(nèi)容的提取。在掌握爬蟲的原理之后,我們需要明晰爬蟲的作用,便于我們更好地使用爬蟲?;ヂ?lián)網(wǎng)的核心價值在于數(shù)據(jù)的共享與傳遞,如果我們把互聯(lián)網(wǎng)比作一張巨大的蜘蛛網(wǎng),那計算機上的數(shù)據(jù)便是蜘蛛網(wǎng)上的一個獵物,而爬蟲就是一只蜘蛛,沿著蜘蛛網(wǎng)抓取自己想要的“獵物”——數(shù)據(jù)。數(shù)據(jù)作為互聯(lián)網(wǎng)中最具價值的產(chǎn)物,爬蟲在數(shù)據(jù)分析過程中扮演重要角色,如企業(yè)需要數(shù)據(jù)來分析用戶行為,分析自己產(chǎn)品的不足之處,來分析競爭對手等等;同時在搜索引擎、采集數(shù)據(jù)、廣告過濾等方面爬蟲也有廣泛應用。爬蟲應用場景04030201資訊推薦系統(tǒng)通過爬蟲技術抓取數(shù)新聞源,然后以用戶行為屬性標簽歸納和深度自然語言搜索優(yōu)化手段來分發(fā)給用戶,做到千人千面的閱讀體驗,達到最可觀的搜索優(yōu)化程度。資訊推薦系統(tǒng)通過爬蟲技術抓取數(shù)新聞源,然后以用戶行為屬性標簽歸納和深度自然語言搜索優(yōu)化手段來分發(fā)給用戶,做到千人千面的閱讀體驗,達到最可觀的搜索優(yōu)化程度。輿情分析系統(tǒng)顧名思義就是輿論發(fā)展的情況有正面和負面之分,利用爬蟲技術來監(jiān)測搜索引擎、新聞門戶、論壇、博客、微博、微信、報刊、視頻的輿情。根據(jù)預定的監(jiān)控關鍵詞,實現(xiàn)全媒體一鍵搜索,保證信息搜集的全面性;同時為了豐富數(shù)據(jù)的多樣性,除了采集文本信息之外,還對圖像、視頻等信息進行采集;為保證其時效性,采用全棧式的響應機制,對于目標網(wǎng)站發(fā)布目標信息后,可以在分鐘級內(nèi)采集到本地數(shù)據(jù)庫內(nèi)。1.1.4爬蟲的應用場景購物網(wǎng)站比價系統(tǒng)如今各大電商平臺為了活躍用戶進行各種秒殺活動并推出各種優(yōu)惠券等,同樣的一件商品在不同網(wǎng)購平臺價格可能不同,這就催生各種比價網(wǎng)站。那么這些網(wǎng)站是如何在秒級的時間內(nèi)知道一件商品在某站有優(yōu)惠?這就需要一個爬蟲系統(tǒng)來實時監(jiān)控各站的價格浮動。先采集商品的價格,規(guī)格,數(shù)量等,再做處理,分析,反饋。數(shù)據(jù)預處理簡介221.2數(shù)據(jù)預處理簡介現(xiàn)實世界中數(shù)據(jù)大體上都是不完整,不一致的臟數(shù)據(jù),無法直接進行數(shù)據(jù)挖掘,或挖掘結(jié)果差強人意。為了提高數(shù)據(jù)挖掘的質(zhì)量產(chǎn)生了數(shù)據(jù)預處理技術。數(shù)據(jù)預處理(DataPreprocessing)是指在主要的數(shù)據(jù)分析之前對數(shù)據(jù)進行的一些處理操作。本節(jié)對數(shù)據(jù)預處理的相關流程及工具等進行介紹。數(shù)據(jù)挖掘過程一般包括數(shù)據(jù)采集,數(shù)據(jù)預處理,數(shù)據(jù)挖掘以及數(shù)據(jù)評價和呈現(xiàn)。目前,數(shù)據(jù)挖掘的研究工作大都集中在挖掘算法、挖掘技術、挖掘語言的探討而忽視對數(shù)據(jù)預處理的研究。事實上,在一個完整的數(shù)據(jù)挖掘過程中,數(shù)據(jù)預處理要花費60%左右的時間。數(shù)據(jù)預處理作為數(shù)據(jù)分析流程中工作量最大的一環(huán),也是必不可少的。要使挖掘算法挖掘出有效的知識,必須為其提供干凈,準確,簡潔的數(shù)據(jù),一些成熟的挖掘算法對其處理的數(shù)據(jù)集合都有一定的要求:比如數(shù)據(jù)的完整性好,冗余性小,屬性的相關性小等,雜亂、重復、不完整的數(shù)據(jù)會嚴重影響到數(shù)據(jù)挖掘算法的執(zhí)行效率,甚至會導致挖掘結(jié)果的偏差。在實際業(yè)務處理中,數(shù)據(jù)通常是“臟數(shù)據(jù)”。所謂的“臟”,指數(shù)據(jù)可能存在以下幾種問題:①數(shù)據(jù)缺失/數(shù)據(jù)不完整(Incomplete)是屬性值為空的情況。②數(shù)據(jù)噪聲(Noisy)是數(shù)據(jù)值不合常理的情況。③數(shù)據(jù)不一致(Inconsistent)是數(shù)據(jù)前后存在矛盾的情況。④數(shù)據(jù)冗余(Redundant)是數(shù)據(jù)量或者屬性數(shù)目超出數(shù)據(jù)分析需要的情況。⑤數(shù)據(jù)集不均衡(DatasetImbalance)是各個類別的數(shù)據(jù)量相差懸殊的情況。⑥離群點/異常值(Outliers)是遠離數(shù)據(jù)集中其余部分的數(shù)據(jù)。⑦數(shù)據(jù)重復(Duplicate)是在數(shù)據(jù)集中出現(xiàn)多次的數(shù)據(jù)。而人為、硬件、軟件方面出現(xiàn)的問題往往都會造成數(shù)據(jù)存在這些偏差,如數(shù)據(jù)收集的時候缺乏合適的值,數(shù)據(jù)收集時和數(shù)據(jù)分析時的不同考慮因素,數(shù)據(jù)收集工具的問題,數(shù)據(jù)輸入時的人為計算錯誤,數(shù)據(jù)傳輸中產(chǎn)生的錯誤。因此想要避免數(shù)據(jù)出現(xiàn)“臟數(shù)據(jù)”是十分困難的,不正確、不完整和不一致的數(shù)據(jù)是現(xiàn)實世界的大型數(shù)據(jù)庫和數(shù)據(jù)倉庫的共同特點,這也從側(cè)面表明數(shù)據(jù)預處理的重要性。沒有高質(zhì)量的數(shù)據(jù),就沒有高質(zhì)量的挖掘結(jié)果,高質(zhì)量的決策必須依賴高質(zhì)量的數(shù)據(jù)。1.2.1數(shù)據(jù)預處理的目的和意義
數(shù)據(jù)的預處理是指對所收集數(shù)據(jù)進行分類或分組前所做的審核、篩選、排序等必要的處理。數(shù)據(jù)預處理的方法主要包括:數(shù)據(jù)清洗,數(shù)據(jù)集成,數(shù)據(jù)變換,數(shù)據(jù)規(guī)約。這些數(shù)據(jù)處理技術在數(shù)據(jù)挖掘之前使用,大大提高了數(shù)據(jù)挖掘模式的質(zhì)量,降低實際挖掘所需要的時間。1.數(shù)據(jù)清洗數(shù)據(jù)清洗需要去除源數(shù)據(jù)集中的噪聲數(shù)據(jù)和無關數(shù)據(jù),處理遺漏數(shù)據(jù),本處介紹噪聲數(shù)據(jù)的處理、空缺值的處理和清洗臟數(shù)據(jù)。(1)噪聲數(shù)據(jù)的處理:噪聲是一個測量變量中的隨機錯誤和偏差,包括錯誤的值或偏離期望的孤立點值,對于噪聲數(shù)據(jù)有如下幾種處理方法:分箱,回歸,聚類。①分箱:分箱方法通過考察數(shù)據(jù)的“近鄰”(即周圍的值)來光滑有序數(shù)據(jù)的值,有序值分布到一些“桶”或箱中。由于分箱方法考察近鄰的值,因此進行局部光滑。幾種分箱技術:用箱均值光滑、用箱邊界光滑、用箱中位數(shù)光滑。②回歸:可以用一個函數(shù)(如回歸函數(shù))擬合數(shù)據(jù)來光滑數(shù)據(jù)。線性回歸涉及找出擬合兩個屬性(或變量)的“最佳”線,使得一個屬性可以用來預測另一個。多元線性回歸是線性回歸的擴展,其中涉及的屬性多于兩個,并且數(shù)據(jù)擬合到一個多維曲面。③聚類:通過聚類檢測離群點。(2)空缺值的處理:目前最常用的方法是使用最可能的值填充空缺值,如用一個全局常量替換空缺值,使用屬性的平均值填充空缺值或?qū)⑺性M按照某些屬性分類,然后用同一類中屬性的平均值填充空缺值。例如一個公司職員平均工資收入為3000元,則使用該值替換工資中“基本工資”屬性中的空缺值。(3)清洗臟數(shù)據(jù):異構(gòu)數(shù)據(jù)源數(shù)據(jù)庫中的數(shù)據(jù)并不都是正確的,常常不可避免的存在著不完整,不一致,不精確和重復的數(shù)據(jù),往往使挖掘過程陷入混亂,導致不可靠的輸出。清洗臟數(shù)據(jù)可采用:專門的程序、采用概率統(tǒng)計學遠離查找數(shù)值異常的記錄、手工對重復記錄的進行檢測和刪除。1.2.2數(shù)據(jù)預處理的流程2.數(shù)據(jù)集成數(shù)據(jù)集成是指合并多個數(shù)據(jù)源中的數(shù)據(jù),存放在一個一致的數(shù)據(jù)存儲(如數(shù)據(jù)倉庫)中。數(shù)據(jù)集成有三個主要問題:①實體識別問題:在數(shù)據(jù)集成時候,來自多個數(shù)據(jù)源的現(xiàn)實世界的實體有時并不一定是匹配的,例如:數(shù)據(jù)分析者如何才能確信一個數(shù)據(jù)庫中的student_id和另一個數(shù)據(jù)庫中的stu_id值是同一個實體,通常,可以根據(jù)數(shù)據(jù)庫或者數(shù)據(jù)倉庫的元數(shù)據(jù)來區(qū)分模式集成中的錯誤。②冗余問題:數(shù)據(jù)集成往往導致數(shù)據(jù)冗余,如同一屬性多次出現(xiàn),同一屬性命名不一致等,對于屬性間的冗余可以用相關分析檢測到,然后刪除。有些冗余可以被相關分析檢測到,例如通過計算屬性A、B的相關系數(shù)(皮爾遜積矩系數(shù))來判斷是否冗余;對于離散數(shù)據(jù),可通過卡方檢驗來判斷兩個屬性A和B之間的相關聯(lián)系。③數(shù)據(jù)值沖突問題:對于現(xiàn)實世界的同一實體,來自不同數(shù)據(jù)源的屬性值可能不同,這可能是因為表示、比例、或編碼、數(shù)據(jù)類型、單位不統(tǒng)一、字段長度不同。1.2.2數(shù)據(jù)預處理的流程3.數(shù)據(jù)變換數(shù)據(jù)變換主要是找到數(shù)據(jù)的特征表示,用維變換或轉(zhuǎn)換方法減少有效變量的數(shù)目或找到數(shù)據(jù)的不變式,包括規(guī)范化,泛化,光滑等操作,將數(shù)據(jù)轉(zhuǎn)換或統(tǒng)一成適合于挖掘的形式,具體如下:(1)光滑:去掉數(shù)據(jù)的噪聲,包括分箱,回歸和聚類。(2)聚集:對數(shù)據(jù)進行匯總或聚集。這一步通常用來為多粒度數(shù)據(jù)分析構(gòu)造數(shù)據(jù)立方體。(3)數(shù)據(jù)泛化:使用概念分層,用高層概念替換底層或“原始”數(shù)據(jù)。(4)規(guī)范化:又稱為歸一化,特征縮放(featurescaling)。將屬性數(shù)據(jù)按比例縮放,使之落入一個小的特定區(qū)間。
規(guī)范化方法:①最小-最大規(guī)范化:v’=[(v-min)/(max-min)]*(new_max-new_min)+new_min。
②z-score規(guī)范化(或零均值規(guī)范化):v’=(v-屬性A的均值E)/屬性A的標準差。
③小數(shù)定標規(guī)范化:v’=v/10的j次方,j是使Max(|v’|)<1的最小整數(shù)。(5)屬性構(gòu)造(或特征構(gòu)造):可以構(gòu)造新的屬性并添加到屬性集中,以幫助挖掘過程。1.2.2數(shù)據(jù)預處理的流程4.數(shù)據(jù)規(guī)約指將數(shù)據(jù)按語義層次結(jié)構(gòu)合并,語義層次結(jié)構(gòu)定義了元組屬性值之間的語義關系,規(guī)約化和規(guī)約能大量減少元組個數(shù),提高計算效率,同時,規(guī)格化和規(guī)約過程提高了知識發(fā)現(xiàn)的起點,使得一個算法能夠發(fā)現(xiàn)多層次的知識,適應不同應用的需要。數(shù)據(jù)規(guī)約是將數(shù)據(jù)庫中的海量數(shù)據(jù)進行規(guī)約,規(guī)約之后的數(shù)據(jù)仍接近于保持原數(shù)據(jù)的完整性,但數(shù)據(jù)量相對小的多,這樣進行挖掘的性能和效率會得到很大的提高。數(shù)據(jù)規(guī)約的策略主要有數(shù)據(jù)立方體聚集,維規(guī)約,數(shù)據(jù)壓縮,數(shù)值壓縮,離散化和概念分層。(1)維規(guī)約:通過刪除不相關的屬性減少數(shù)據(jù)量,不僅僅壓縮了數(shù)據(jù)集,還減少了出現(xiàn)在發(fā)現(xiàn)模式上的屬性數(shù)目,通常采用屬性子集選擇方法找出最小屬性集,使得數(shù)據(jù)類的概率分布盡可能的接近使用所有屬性的原分布(2)數(shù)據(jù)壓縮,數(shù)據(jù)壓縮分為無損壓縮和有損壓縮,比較流行和有效的有損數(shù)據(jù)壓縮方法是小波變換和主要成分分析,小波變換對于稀疏或傾斜數(shù)據(jù)以及具有有序?qū)傩缘臄?shù)據(jù)有很好的壓縮效果。(3)數(shù)值規(guī)約:數(shù)值歸約通過選擇替代的、較小的數(shù)據(jù)表示形式來減少數(shù)據(jù)量。數(shù)值歸約技術可以是有參的,也可以是無參的。有參方法是使用一個模型來評估數(shù)據(jù),只需存放參數(shù),而不需要存放實際數(shù)據(jù)。有參的數(shù)值歸約技術有以下兩種,回歸:線性回歸和多元回歸;對數(shù)線性模型:近似離散屬性集中的多維概率分布。無參的數(shù)值歸約技術有3種:直方圖,聚類,選樣。(4)概念分層通過收集并用較高層的概念替換較低層的概念來定義數(shù)值屬性的一個離散化。概念分層可以用來歸約數(shù)據(jù),通過這種概化盡管細節(jié)丟失了,但概化后的數(shù)據(jù)更有意義、更容易理解,并且所需的空間比原數(shù)據(jù)少。對于數(shù)值屬性,由于數(shù)據(jù)的可能取值范圍的多樣性和數(shù)據(jù)值的更新頻繁,說明概念分層是困難的。數(shù)值屬性的概念分層可以根據(jù)數(shù)據(jù)的分布分析自動地構(gòu)造,如用分箱、直方圖分析、聚類分析、基于熵的離散化和自然劃分分段等技術生成數(shù)值概念分層。由用戶專家在模式級顯示地說明屬性的部分序或全序,從而獲得概念的分層;只說明屬性集,但不說明它們的偏序,由系統(tǒng)根據(jù)每個屬性不同值的個數(shù)產(chǎn)生屬性序,自動構(gòu)造有意義的概念分層。1.2.2數(shù)據(jù)預處理的流程1.2.3數(shù)據(jù)預處理的工具介紹Kettle作為免費開源的基于Java的企業(yè)級ETL(Extract-Transform-Load,數(shù)據(jù)抽取、轉(zhuǎn)換、裝載的過程)工具,支持圖形化的GUI設計界面,可以以工作流的形式流轉(zhuǎn),做一些簡單或復雜的數(shù)據(jù)抽取、數(shù)據(jù)清洗、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)過濾等數(shù)據(jù)預處理方面工作,功能強大簡單易用。如圖所示,Kettle包括四大核心組件:①Spoon。轉(zhuǎn)換(transform)設計工具(GUI方式)。②Chef。工作(job)設計工具(GUI方式)。③pan。轉(zhuǎn)換(transform)執(zhí)行器(命令行方式)。④Kitchen。工作(job)執(zhí)行器(命令行方式)。1.2.3數(shù)據(jù)預處理的工具介紹job和transform是Kettle中的兩種腳本文件,transformation完成針對數(shù)據(jù)的基礎轉(zhuǎn)換,job則完成整個工作流的控制。如圖所示,為Kettle的概念模型。Kettle的執(zhí)行分為兩個層次:Job和Transformation。這兩個層次的最主要的在于數(shù)據(jù)的傳遞和運行方式。1.2.3數(shù)據(jù)預處理的工具介紹job和transform是Kettle中的兩種腳本文件,transformation完成針對數(shù)據(jù)的基礎轉(zhuǎn)換,job則完成整個工作流的控制。如圖所示,為Kettle的概念模型。Kettle的執(zhí)行分為兩個層次:Job和Transformation。這兩個層次的最主要的在于數(shù)據(jù)的傳遞和運行方式。(1)Transformation:定義對數(shù)據(jù)操作的容器,數(shù)據(jù)操作就是數(shù)據(jù)從輸入到輸出的一個過程,可以理解為比Job粒度更小一級的容器,我們將任務分解成Job,然后需要將Job分解成一個或多個Transformation,每個Transformation只完成一部分工作。(2)Step:是Transformation內(nèi)部的最小單元,每一個Step完成一個特定的功能。(3)Job:負責將Transformation組織在一起進而完成某一工作,通常我們需要把一個大的任務分解成幾個邏輯上隔離的Job,當這幾個Job都完成了,也就說明這項任務完成了。(4)JobEntry:JobEntry是Job內(nèi)部的執(zhí)行單元,每一個JobEntry用于實現(xiàn)特定的功能,如:驗證表是否存在,發(fā)送郵件等??梢酝ㄟ^Job來執(zhí)行另一個Job或者Transformation,也就是說Transformation和Job都可以作為JobEntry。(5)Hop:用于在Transformation中連接Step,或者在Job中連接JobEntry,是一個數(shù)據(jù)流的圖形化表示。在Kettle中Job中的JobEntry是串行執(zhí)行的,故Job中必須有一個Start的JobEntry;Transformation中的Step是并行執(zhí)行的。1.2.3數(shù)據(jù)預處理的工具介紹Python數(shù)據(jù)采集與預處理常用庫331.3Python數(shù)據(jù)采集與預處理常用庫Python作為一門高層次的結(jié)合了解釋性、編譯性、互動性和面向?qū)ο蟮木幊陶Z言,最大的優(yōu)勢之一就是其具有腳本語言中最豐富和強大的類庫,從簡單的字符串處理,到復雜的3D圖形繪制,這些類庫覆蓋了絕大部分應用場景,使得Python具有良好的可擴展性。本節(jié)就將介紹Python在數(shù)據(jù)采集和預處理方面的庫。1.3.1請求庫用于實現(xiàn)HTTP請求操作1①urllib:一系列用于操作URL的功能。2②requests:基于urllib編寫的,阻塞式HTTP請求庫,發(fā)出一個請求,一直等待服務器響應后,程序才能進行下一步處理。3③selenium:自動化測試工具。一個調(diào)用瀏覽器的driver,通過這個庫你可以直接調(diào)用瀏覽器完成某些操作,如輸入驗證碼。4④aiohttp:基于asyncio實現(xiàn)的HTTP框架。異步操作借助于async/await關鍵字,使用異步庫進行數(shù)據(jù)抓取,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《影子》教案設計
- 2025年高壓成套電器項目發(fā)展計劃
- 商鋪油煙回復函
- 2025年交流調(diào)頻調(diào)壓牽引裝置項目建議書
- 縣教研室工作計劃
- 適合大學生創(chuàng)業(yè)的寵物項目
- 貴州省大學生創(chuàng)業(yè)比賽項目
- 網(wǎng)絡經(jīng)濟下工商管理的發(fā)展對策
- 苗木冬季防寒施工方案
- 2025年荷澤b2貨運上崗證模擬考試
- 2025年黑龍江林業(yè)職業(yè)技術學院單招職業(yè)適應性測試題庫審定版
- 中國家用通風電器具制造行業(yè)分析報告
- 生物-天一大聯(lián)考2025屆高三四省聯(lián)考(陜晉青寧)試題和解析
- 天津2025年天津市住房公積金管理中心招聘9人筆試歷年參考題庫附帶答案詳解-1
- 2025成人禮暨高三百日誓師校長演講稿-追夢不覺天涯遠 奮斗深感百日短
- 汽車坡道玻璃雨棚施工方案
- 跨文化商務交際導論 課件 Unit 1 Culture
- 高效空調(diào)制冷機房智能控制系統(tǒng)技術規(guī)程
- 新高考英語讀后續(xù)寫——人物描寫高級表達素材
- 單元三 電子合同法律實務
- 《心理拓展訓練》教學大綱
評論
0/150
提交評論