




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第18章大數(shù)據(jù)的處理與學(xué)習(xí)學(xué)習(xí)目標(biāo)理解管理海量數(shù)據(jù)的挑戰(zhàn)了解大數(shù)據(jù)管理的程序庫,并能使用這些程序庫進(jìn)行簡(jiǎn)單操作了解使用海量數(shù)據(jù)進(jìn)行機(jī)器學(xué)習(xí)的一些方法管理海量數(shù)據(jù)的挑戰(zhàn)使用python的pandas等模塊進(jìn)行數(shù)據(jù)讀取和處理時(shí),所有數(shù)據(jù)都需要被讀入電腦內(nèi)存當(dāng)前個(gè)人電腦的內(nèi)存大小通常都是8GB到16GB,很少超過200GB在對(duì)海量數(shù)據(jù)(比如TB級(jí)別的交易數(shù)據(jù))使用機(jī)器學(xué)習(xí)算法時(shí)來進(jìn)行數(shù)據(jù)分析時(shí),需要考慮到內(nèi)存以及其他計(jì)算機(jī)硬件的限制例如,支付寶的月度活躍用戶量超過十億,這些用戶每天都會(huì)會(huì)產(chǎn)生大量的支付數(shù)據(jù)。假設(shè)這些用戶每個(gè)月產(chǎn)生50次交易,每次交易中記錄10個(gè)變量(例如,交易金額,交易時(shí)間,交易雙方的信息等),用8個(gè)字節(jié)的變量來存儲(chǔ)這些信息,這樣每個(gè)月得到的數(shù)據(jù)量會(huì)超過3TB大數(shù)據(jù)的管理管理大數(shù)據(jù)時(shí),我們無法將所有的數(shù)據(jù)讀入電腦內(nèi)存,需要設(shè)法將較大的數(shù)據(jù)切割成較小的數(shù)據(jù),并且將切割后的數(shù)據(jù)分別讀入內(nèi)存進(jìn)行處理在Python語言的的生態(tài)系統(tǒng)中,人們經(jīng)常使用Dask和Spark這兩個(gè)程序庫來將較大的數(shù)據(jù)切割成較小的數(shù)據(jù),并且將切割后的數(shù)據(jù)分別讀入內(nèi)存進(jìn)行處理。接下來將主要以dask作為例子來闡述如何管理海量數(shù)據(jù),并且簡(jiǎn)單介紹ApacheSpark框架以及在Pthon中調(diào)用Spark的程序庫PySparkDask簡(jiǎn)介Dask是一個(gè)基于Python語言的程序庫,支持大數(shù)據(jù)并行計(jì)算Dsak的優(yōu)點(diǎn)是其與pandas非常相似dask的數(shù)據(jù)幀(dataframe)是由一個(gè)或是多個(gè)pandas的數(shù)據(jù)幀組合而成基本上pandas上所有的功能都能在dask程序庫中找到對(duì)應(yīng)Dask通過分解和調(diào)度計(jì)算任務(wù),高效管理內(nèi)存以及利用并行計(jì)算,使得處理大數(shù)據(jù)變得更加簡(jiǎn)單高效Dask簡(jiǎn)介Dask的特點(diǎn)懶惰執(zhí)行(LazyExecution):Dask會(huì)等到真正需要計(jì)算結(jié)果時(shí)才開始計(jì)算。你編寫Dask代碼實(shí)際上是在創(chuàng)建一個(gè)計(jì)算任務(wù)的計(jì)劃,而非立即執(zhí)行計(jì)算任務(wù)調(diào)度(TaskScheduling):Dask會(huì)把大的計(jì)算任務(wù)分解成很多小的任務(wù),然后根據(jù)任務(wù)之間的依賴關(guān)系來安排它們的執(zhí)行順序內(nèi)存管理(MemoryManagement):Dask在處理大數(shù)據(jù)時(shí)會(huì)很智能地管理內(nèi)存,確保數(shù)據(jù)在需要時(shí)被加載到內(nèi)存中,并在不再需要時(shí)釋放內(nèi)存Dask簡(jiǎn)介Dask的特點(diǎn)并行與分布式計(jì)算(ParallelandDistributedComputing):Dask可以利用電腦上的多個(gè)核心進(jìn)行并行計(jì)算,也可以跨多臺(tái)機(jī)器進(jìn)行分布式計(jì)算,這樣可以加快計(jì)算速度,處理更大的數(shù)據(jù)與Pandas,NumPy和Scikit-Learn集成:Dask提供了與Pandas,NumPy,
Scikit-Learn非常相似的接口,可以很容易地將現(xiàn)有的代碼轉(zhuǎn)換為可在Dask上運(yùn)行的版本Dask與PandasDask與PandasDask數(shù)據(jù)幀與Pandas的最大區(qū)別是在許多操作中,需要使用.compute()來進(jìn)行執(zhí)行例如,如果df是一個(gè)Dask數(shù)據(jù)幀,那么df_filtered=df[df[‘column’]>0]這行程序不會(huì)直接得到數(shù)據(jù)幀df_filtered,而是得到一個(gè)將要執(zhí)行任務(wù)的任務(wù)圖。只有執(zhí)行df_filtered=df[df[‘column’]>0].compute()時(shí),Dask才會(huì)執(zhí)行這一任務(wù)。因此只有加上.compute()才會(huì)得到一個(gè)新的數(shù)據(jù)幀。ApacheSpark簡(jiǎn)介ApacheSpark是一個(gè)用于大規(guī)模數(shù)據(jù)處理的統(tǒng)一分析引擎提供了Java、Scala、Python(PySpark)和R的高級(jí)API,以及一個(gè)優(yōu)化的引擎,支持?jǐn)?shù)據(jù)分析的通用計(jì)算圖Spark的主要特點(diǎn)是其內(nèi)存集群計(jì)算,可以提高應(yīng)用程序的處理速度。
Spark旨在涵蓋各種工作負(fù)載,如批量應(yīng)用程序、迭代算法、交互式查詢和流處理。它支撐了一系列的庫,包括SQL和DataFrame、MLlib(機(jī)器學(xué)習(xí))、GraphX(圖處理)和StructuredStreaming(增量計(jì)算和流處理)。Dask與ApacheSpark有著許多相似的功能ApacheSpark的生態(tài)更為成熟但是Dask為Python用戶提供了簡(jiǎn)單易用的大數(shù)據(jù)管理以及處理的功能ApacheSpark與PySparkPySpark是Spark的PythonAPIPySpark支持Spark的大部分特性,如SparkSQL、DataFrame、Streaming、MLlib(機(jī)器學(xué)習(xí))和SparkCore,非常適合構(gòu)建基于云的大數(shù)據(jù)處理應(yīng)用程序。PySpark提供了一種無縫混合使用SQL查詢、機(jī)器學(xué)習(xí)算法、流處理過程和大數(shù)據(jù)上的復(fù)雜分析計(jì)算的方式,所有這些都可以在同一個(gè)Python語言的環(huán)境中進(jìn)行使用PySpark,你可以使用PythonAPI編寫Spark應(yīng)用程序,并利用Python豐富的數(shù)據(jù)分析庫ApacheSpark與PySparkPySpark有一系列優(yōu)點(diǎn)易用性:使用PySparkAPI用Python編寫Spark應(yīng)用程序,享受Python語法和豐富的生態(tài)系統(tǒng)的便利性能:PySpark應(yīng)用程序可以利用ApacheSpark處理大型數(shù)據(jù)集的快速能力互操作性:由于Spark龐大的生態(tài)系統(tǒng),可以輕松與其他大數(shù)據(jù)工具和框架集成大數(shù)據(jù)學(xué)習(xí)的挑戰(zhàn)與對(duì)策之前所研究的許多機(jī)器學(xué)習(xí)算法都可以用于可以讀入計(jì)算機(jī)內(nèi)存的數(shù)據(jù)。但是在大數(shù)據(jù)的時(shí)代許多數(shù)據(jù)是無法完全讀入內(nèi)存的,對(duì)于這些情況也需要有相應(yīng)的對(duì)策最簡(jiǎn)單的方法是將數(shù)據(jù)縮小到內(nèi)存可以存儲(chǔ)的大小對(duì)大量的數(shù)據(jù)進(jìn)行隨機(jī)取樣,然后使用機(jī)器學(xué)習(xí)的算法對(duì)隨機(jī)取樣后的樣本進(jìn)行分析然而,隨機(jī)取樣需要舍棄大量的樣本,因此會(huì)丟失許多有用的信息訓(xùn)練一個(gè)參數(shù)較多的模型時(shí),隨機(jī)取樣丟失樣本可能會(huì)影響到模型訓(xùn)練的過程大數(shù)據(jù)學(xué)習(xí)的挑戰(zhàn)與對(duì)策之前所研究的許多機(jī)器學(xué)習(xí)算法都可以用于可以讀入計(jì)算機(jī)內(nèi)存的數(shù)據(jù)。但是在大數(shù)據(jù)的時(shí)代許多數(shù)據(jù)是無法完全讀入內(nèi)存的,對(duì)于這些情況也需要有相應(yīng)的對(duì)策分布式訓(xùn)練用于處理大型數(shù)據(jù)集和/或利用多個(gè)計(jì)算單元(如CPU核心或GPU)進(jìn)行訓(xùn)練,數(shù)據(jù)和計(jì)算任務(wù)被分布在多個(gè)節(jié)點(diǎn)上,以加快訓(xùn)練過程存在的問題:通信成本、同步問題和資源管理等分布式訓(xùn)練準(zhǔn)備分布式環(huán)境配置多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)可能包含一個(gè)或多個(gè)CPU核心或GPU設(shè)置網(wǎng)絡(luò)連接,確保所有節(jié)點(diǎn)之間可以通信數(shù)據(jù)分割與分配將大型數(shù)據(jù)集分割成小批數(shù)據(jù)(batches)將這些數(shù)據(jù)批次均勻地分配給各個(gè)節(jié)點(diǎn),確保每個(gè)節(jié)點(diǎn)都有數(shù)據(jù)來進(jìn)行訓(xùn)練復(fù)制模型在每個(gè)節(jié)點(diǎn)上初始化相同的模型。這意味著每個(gè)節(jié)點(diǎn)開始時(shí)都有相同的參數(shù)/權(quán)重分布式訓(xùn)練并行計(jì)算與同步每個(gè)節(jié)點(diǎn)使用其數(shù)據(jù)批次對(duì)模型進(jìn)行訓(xùn)練,并計(jì)算梯度(模型參數(shù)的更新)步驟完成后,各節(jié)點(diǎn)需要同步。同步方式取決于所使用的分布式訓(xùn)練策略(例如,參數(shù)服務(wù)器模式或All-Reduce模式)梯度聚合與更新聚合所有節(jié)點(diǎn)計(jì)算出的梯度。在一些方法中,這個(gè)過程可能涉及梯度的平均或其他形式的整合使用整合后的梯度更新模型參數(shù)。這一步驟可以在單個(gè)中心節(jié)點(diǎn)上完成,或在所有節(jié)點(diǎn)上同時(shí)進(jìn)行分布式訓(xùn)練迭代訓(xùn)練重復(fù)執(zhí)行上兩個(gè)步驟,直到模型達(dá)到期望的精度或完成預(yù)定的訓(xùn)練輪數(shù).后處理對(duì)訓(xùn)練完成的模型進(jìn)行評(píng)估、驗(yàn)證和測(cè)試如果需要,可以進(jìn)行模型的保存和導(dǎo)出,以便將來使用或進(jìn)一步分析分布式訓(xùn)練優(yōu)化分布式訓(xùn)練可以顯著減少模型訓(xùn)練時(shí)間,但也帶來了通信成本、同步問題和資源管理等挑戰(zhàn)。有效地管理這些挑戰(zhàn)需要精心的系統(tǒng)設(shè)計(jì)和優(yōu)化。Dask-ML是Dask框架中用于提升大數(shù)據(jù)訓(xùn)練效率以及可行性的模塊除了Dask-ML之外,之前闡述過的xgboost以及pytorch等程序庫也可以直接與Dask數(shù)據(jù)進(jìn)行交互分布式訓(xùn)練優(yōu)化:Dask-MLDask-ML的應(yīng)用方式擴(kuò)展Scikit-Learn:Dask-ML為眾多Scikit-Learn的模塊提供了并行版本,幾乎可以無縫地與Scikit-Learn的對(duì)應(yīng)功能互換。例如,Scikit-Learn中有l(wèi)inear_model模塊,與之對(duì)應(yīng)的dask_ml中也有l(wèi)inear_model模塊。增量學(xué)習(xí):Dask-ML支持部分模型的增量學(xué)習(xí),適用于那些無法一次性加載進(jìn)內(nèi)存的大型數(shù)據(jù)集。例如之前所學(xué)習(xí)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練框架Pytorch就可以通過Dask-ML來進(jìn)行增量學(xué)習(xí)預(yù)處理:Dask-ML提供了可擴(kuò)展的數(shù)據(jù)預(yù)處理工具,能高效地準(zhǔn)備大規(guī)模數(shù)據(jù)集以進(jìn)行訓(xùn)練。在dask_ml.preprocessing中也有類似于StandardScaler一類的數(shù)據(jù)縮放工具程序下面將使用Dask的數(shù)據(jù)幀讀入一個(gè)數(shù)據(jù),并對(duì)該數(shù)據(jù)進(jìn)行簡(jiǎn)單總結(jié)首先安裝Dask庫如果要安裝Dask和其所有依賴包,則使用命令:pipinstalldask[complete]如果只安裝Dask(適用于只需要任務(wù)調(diào)度器的情況),則使用命令:pipinstalldask使用Dask數(shù)據(jù)幀首先導(dǎo)入必要的庫,dask.dataframe是Dask框架中的數(shù)據(jù)幀模塊,其使用方法類似于Pandas程序?qū)?shù)據(jù)讀入數(shù)據(jù)幀程序?qū)θ珮颖緮?shù)據(jù)進(jìn)行總結(jié),打印變量bm的中位數(shù)與均值程序然后對(duì)數(shù)據(jù)分月份進(jìn)行總結(jié),打印各月份變量bm的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑工程合同書 范本
- 2025農(nóng)產(chǎn)品加工類合同參考格式
- 2025股票交易合同范本
- 2025年中文版國(guó)際貿(mào)易合同模板
- 2025商務(wù)英語合同的語法與用詞特點(diǎn)
- 2025標(biāo)準(zhǔn)租賃合同協(xié)議書范本
- 2025租賃合同法要點(diǎn)解析
- 2025的建筑材料購銷合同
- 2025瓷磚批發(fā)銷售合同范本
- 《應(yīng)力分析及其計(jì)算方法》課件
- 2024年全國(guó)青少年信息素養(yǎng)大賽初賽試題
- 建設(shè)項(xiàng)目全過程工程咨詢服務(wù)投標(biāo)方案
- 綠化帶改停車位施工方案
- 2023-2024學(xué)年浙江省環(huán)大羅山聯(lián)盟高一下學(xué)期4月期中物理試題(解析版)
- 護(hù)理人員崗位績(jī)效考核評(píng)價(jià)標(biāo)準(zhǔn)
- 2024年04月陜西西安職業(yè)技術(shù)學(xué)院招考聘用25人筆試筆試歷年典型考題及考點(diǎn)研判與答案解析
- 2023年浙江省湖州市中考語文真題
- DL/T 5352-2018 高壓配電裝置設(shè)計(jì)規(guī)范
- 合作取得更大成功的辯論材料三篇
- 廣東省深圳市2023年五年級(jí)下學(xué)期期中模擬試卷(一)(含答案)
- AQ∕T 7009-2013 機(jī)械制造企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范
評(píng)論
0/150
提交評(píng)論