日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

【云端大数据实战】大数据误区、大数据处理步骤分析

發(fā)布時(shí)間:2025/4/5 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【云端大数据实战】大数据误区、大数据处理步骤分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.背景

? ? ?? ? ? ??首先感謝這次博客的主辦方CSDN以及在初賽為我投票的網(wǎng)友們,你們的支持是Garvin前進(jìn)的動(dòng)力。本文思路的依據(jù)來(lái)源于本次天貓大數(shù)據(jù)競(jìng)賽長(zhǎng)達(dá)三個(gè)月的參賽體驗(yàn)。博主作為一個(gè)在校的學(xué)生,可能如果不是這次比賽,很難能夠擁有一套完整的云環(huán)境來(lái)對(duì)TB級(jí)的數(shù)據(jù)進(jìn)行分析和實(shí)踐。下面是博主的一點(diǎn)心得,在此拋磚引玉,希望能給大家在云端大數(shù)據(jù)處理方面帶來(lái)一點(diǎn)啟示。


2.對(duì)于大數(shù)據(jù)和云的一些誤區(qū)

?

? (1)誤區(qū)一:云的計(jì)算能力是無(wú)窮的,不用考慮效率?

? ? ?? ? ? ? ?我們都知道,云計(jì)算的本質(zhì)就是分布式計(jì)算,將現(xiàn)有的工作量,分割開(kāi)來(lái)讓n個(gè)不同的服務(wù)器協(xié)同完成。說(shuō)白了云計(jì)算的計(jì)算能力雖然比我們的pc有優(yōu)越許多,但是它是有計(jì)算成本的。當(dāng)我們處理TB級(jí)數(shù)據(jù)的時(shí)候,我們還是盡量要考慮一下效率,否則會(huì)陷入漫長(zhǎng)的等待。 ps:博主參加比賽的時(shí)候,因?yàn)橐婚_(kāi)始沒(méi)有使用抽樣算法,將整個(gè)訓(xùn)練集拿去訓(xùn)練,占用了大量的資源,常常一等就是24小時(shí)。

?

? ?(2)誤區(qū)二:數(shù)據(jù)量越大,預(yù)測(cè)效果越好?

? ? ?

? ? ? ?大數(shù)據(jù)計(jì)算,顧名思義。就是需要一個(gè)很大的數(shù)據(jù)量,通過(guò)一些算法,找到它們和目標(biāo)序列的特定規(guī)則和聯(lián)系。這就容易造成一個(gè)誤區(qū),是不是數(shù)據(jù)量越大,結(jié)果準(zhǔn)確。其實(shí)對(duì)于推薦系統(tǒng)來(lái)講,當(dāng)我們使用隨機(jī)森林或是gbrt這些算法的時(shí)候,數(shù)據(jù)集在幾百萬(wàn)的時(shí)候往往能得到比數(shù)據(jù)集在幾千萬(wàn)的時(shí)候更好的計(jì)算效果。因?yàn)閷?duì)于一個(gè)算法來(lái)講,如果數(shù)據(jù)集過(guò)大,容易造成過(guò)擬合。

? ? ? ?所以在面對(duì)一個(gè)真正的大數(shù)據(jù)集的時(shí)候,不要盲目的拿來(lái)全部訓(xùn)練,做好抽樣和正負(fù)樣本的比例調(diào)整,可能會(huì)得到更好的效果。?

??

? (3)誤區(qū)三: 算法的參數(shù)是一成不變的? ? ????

? ? ? ? ? ? ? ??在對(duì)大數(shù)據(jù)進(jìn)行處理的時(shí)候,我們往往使用一些已經(jīng)比較成熟的算法。例如常用的分類算法有svm(支持向量機(jī))、rf(隨機(jī)森林)、lr(邏輯回歸)等等。在使用這些算法的時(shí)候往往要面對(duì)一個(gè)比較頭疼的問(wèn)題就是調(diào)參。是否能調(diào)到一個(gè)理想的參數(shù),對(duì)于最后的計(jì)算結(jié)果有著至關(guān)重要的作用。 ? ? ??對(duì)于參數(shù),我覺(jué)得沒(méi)有最好的參數(shù),只有最合適的參數(shù)。不要迷信論文或是網(wǎng)上的一些評(píng)論,如果你的訓(xùn)練集是獨(dú)一無(wú)二的,就要靜下心來(lái),認(rèn)真調(diào)試最適合自己的參數(shù)。影響一個(gè)算法的參數(shù)的因素很多,包括樣本數(shù)量或是正負(fù)樣本比例等。 ? ? ?? ? (4)誤區(qū)四:特征越多越好么? ? ? ?? ? ? ??特征重在質(zhì)量而不是數(shù)量,好的特征對(duì)于結(jié)果的影響可能會(huì)比普通特征大100倍,所以千萬(wàn)不要隨便的組合數(shù)據(jù)集的一些字段。有的時(shí)候一些不好的特征,會(huì)對(duì)結(jié)果產(chǎn)生消極的影響。區(qū)分特征對(duì)與結(jié)果的影響的方法有很多,下面給一個(gè)信息熵的方法: def chooseBestFeatureToSplit(dataSet):numFeatures = len(dataSet[0]) - 1 #the last column is used for the labelsbaseEntropy = calcShannonEnt(dataSet)bestInfoGain = 0.0; bestFeature = -1for i in range(numFeatures): #iterate over all the featuresfeatList = [example[i] for example in dataSet]#create a list of all the examples of this featureuniqueVals = set(featList) #get a set of unique valuesnewEntropy = 0.0for value in uniqueVals:subDataSet = splitDataSet(dataSet, i, value)prob = len(subDataSet)/float(len(dataSet))newEntropy += prob * calcShannonEnt(subDataSet) infoGain = baseEntropy - newEntropy #calculate the info gain; ie reduction in entropyif (infoGain > bestInfoGain): #compare this to the best gain so farbestInfoGain = infoGain #if better than current best, set to bestbestFeature = ireturn bestFeature #returns an integer

3.大數(shù)據(jù)云處理步驟

? ? ? (1)首先要了解集成環(huán)境 ? ? ? ? ?? ? ? ? ? ? ?既然是大數(shù)據(jù)處理,那么一定是要有一個(gè)云環(huán)境作為依托。我覺(jué)得首先要了解自己的集成環(huán)境的基本使用方法,像是spark、hadoop或是odps,他們都有自己的特點(diǎn)。比如博主使用的odps,對(duì)于數(shù)據(jù)庫(kù)的處理可以用命令行執(zhí)行sql語(yǔ)句,也可以用MapReduce的方法將寫(xiě)好的jar文件放到云端處理。 ? ? ? ?(2)數(shù)據(jù)集去噪 ? ? ? ? ? ? ?對(duì)于一個(gè)比較大的數(shù)據(jù)集,肯定是存在一些噪聲部分影響我們的計(jì)算操作。將這部分噪音去掉可以保證計(jì)算結(jié)果的準(zhǔn)確性。去噪的方法有很多,這里舉出一個(gè)常用的方法,就是將數(shù)值在 ? [均值- ?3倍方差,均值 + 3倍方差] 以外的數(shù)據(jù)濾掉。下面是我寫(xiě)的一個(gè)實(shí)現(xiàn)以上去噪方法的代碼,執(zhí)行DenoisMat函數(shù)可以實(shí)現(xiàn)此功能。 from __future__ import division def GetAverage(mat):n=len(mat)m= width(mat) num = [0]*mfor j in range(0,m): for i in mat:num[j]=num[j]+i[j] num[j]=num[j]/n return numdef width(lst):i=0for j in lst[0]:i=i+1return idef GetVar(average,mat): ListMat=[]for i in mat: ListMat.append(list(map(lambda x: x[0]-x[1], zip(average, i))))n=len(ListMat)m= width(ListMat) num = [0]*mfor j in range(0,m): for i in ListMat:num[j]=num[j]+(i[j]*i[j]) num[j]=num[j]/n return num def DenoisMat(mat):average=GetAverage(mat)variance=GetVar(average,mat)section=list(map(lambda x: x[0]+x[1], zip(average, variance))) n=len(mat)m= width(mat) num = [0]*mdenoisMat=[] for i in mat:for j in range(0,m):if i[j]>section[j]:i[j]=section[j]denoisMat.append(i) return denoisMat
? ?(3)訓(xùn)練集采樣 ? ? ?? ? ? ? ? ? ? 上文中已經(jīng)提到了,正確的采樣可以提高計(jì)算的準(zhǔn)確性。常用的采樣的方法有隨機(jī)采樣、系統(tǒng)采樣、分層采樣。
隨機(jī)采樣:根據(jù)樣本的編號(hào)random出來(lái)需要的樣本數(shù)量。 系統(tǒng)采樣:即先將總體的觀察單位按某一順序號(hào)分成n個(gè)部分,再?gòu)牡谝徊糠蛛S機(jī)抽取第k號(hào)觀察單位,依次用相等間距,從每一部分各抽取一個(gè)觀察 單位組成樣本。 分層采樣:先按對(duì)觀察指標(biāo)影響較大的某種特征,將總體分為若干個(gè)類別,再?gòu)拿恳粚觾?nèi)隨機(jī)抽取一定數(shù)量的觀察單位,合起來(lái)組成樣本。有按比例 分配和最優(yōu)分配兩種方案。
? ? ? ? 效果的比較是,分層采樣>系統(tǒng)采樣>隨機(jī)采樣。以下代碼實(shí)現(xiàn)了系統(tǒng)采樣和隨機(jī)采樣,分層采樣可以根據(jù)自己的數(shù)據(jù)集結(jié)合聚類算法來(lái)實(shí)現(xiàn)。如果是監(jiān)督學(xué)習(xí)的話,記得調(diào)整正副樣本的比例哦。 ''' Sampling archive@author: Garvin Li ''' import randomdef RandomSampling(dataMat,number):try:slice = random.sample(dataMat, number) return sliceexcept:print 'sample larger than population'def SystematicSampling(dataMat,number): length=len(dataMat)k=length/numbersample=[] i=0if k>0 : while len(sample)!=number:sample.append(dataMat[0+i*k])i+=1 return sampleelse :return RandomSampling(dataMat,number)

? (4)選擇算法訓(xùn)練樣本 ?? ? ? ? ? ?上面已經(jīng)提到了很多的算法。針對(duì)不同的數(shù)據(jù)集,應(yīng)該選用不同的算法。舉個(gè)例子,這次比賽在線下賽的時(shí)候,因?yàn)閿?shù)據(jù)集比較小,我們使用的邏輯回歸算法就取得了不錯(cuò)的成績(jī)。但是到了線上比賽,隨著數(shù)據(jù)量增加到TB級(jí)別,發(fā)現(xiàn)邏輯回歸已經(jīng)不給力了。使用GBRT可以取得更理想的效果,具體用法可以參考阿里大數(shù)據(jù)比賽sesson2_RF&GBRT.一些常用的算法也可以clone我的github代碼庫(kù)(不斷更新中),本文最下方給出地址。
圖 ?3-1 My git-repo
? ?(5)模型融合 ? ? ? ? ? ?模型融合的概念也是這次參加比賽第一次聽(tīng)說(shuō)的。其實(shí)原理很簡(jiǎn)單,每種算法因?yàn)樽陨淼氖諗糠绞讲煌?duì)特征的調(diào)配方式不同,在結(jié)果上是有比較大的差異的。如果將不同的模型計(jì)算結(jié)果加權(quán)求和的話,可以充分體現(xiàn)每個(gè)算法的長(zhǎng)處,對(duì)于結(jié)果的提升是有比較大幫助的。

4.總結(jié)

? ? ?? ? ? ? ?我始終堅(jiān)信大數(shù)據(jù)和云計(jì)算可以改變我們的生活方式甚至我們的意識(shí)形態(tài)。在進(jìn)行大數(shù)據(jù)處理的過(guò)程中,看著自己的成績(jī)一點(diǎn)一滴的提升,內(nèi)心會(huì)有極大的滿足感。希望有相同志趣的朋友可以留言討論,大家一起學(xué)習(xí)進(jìn)步,謝謝大家。 我的Github頁(yè):點(diǎn)擊打開(kāi)鏈接 本文參加了csdn博客大賽,請(qǐng)為我投票!


本文參考了:《機(jī)器學(xué)習(xí)與算法》和 csdn?

u010691898的專欄




/********************************

* 本文來(lái)自博客 ?“李博Garvin“

* 轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/buptgshengod

******************************************/




總結(jié)

以上是生活随笔為你收集整理的【云端大数据实战】大数据误区、大数据处理步骤分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。