『壹』 需要掌握哪些大數據演算法
不僅僅是選中的十大演算法,其實參加評選的18種演算法,實際上隨便拿出一種來都可以稱得上是經典演算法,它們在數據挖掘領域都產生了極為深遠的影響。
1.C4.5
C4.5演算法是機器學習演算法中的一種分類決策樹演算法,其核心演算法是ID3演算法.C4.5演算法繼承了ID3演算法的優點,並在以下幾方面對ID3演算法進行了改進:
1)用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
2)在樹構造過程中進行剪枝;
3)能夠完成對連續屬性的離散化處理;
4)能夠對不完整數據進行處理。
C4.5演算法有如下優點:產生的分類規則易於理解,准確率較高。其缺點是:在構造樹的過程中,需要對數據集進行多次的順序掃描和排序,因而導致演算法的低效。
2.Thek-meansalgorithm即K-Means演算法
k-meansalgorithm演算法是一個聚類演算法,把n的對象根據他們的屬性分為k個分割,k 3.Supportvectormachines
支持向量機,英文為SupportVectorMachine,簡稱SV機(論文中一般簡稱SVM)。它是一種監督式學習的方法,它廣泛的應用於統計分類以及回歸分析中。支持向量機將向量映射到一個更高維的空間里,在這個空間里建立有一個最大間隔超平面。在分開數據的超平面的兩邊建有兩個互相平行的超平面。分隔超平面使兩個平行超平面的距離最大化。假定平行超平面間的距離或差距越大,分類器的總誤差越小。一個極好的指南是C.J.CBurges的《模式識別支持向量機指南》。vanderWalt和Barnard將支持向量機和其他分類器進行了比較。
4.TheApriorialgorithm
Apriori演算法是一種最有影響的挖掘布爾關聯規則頻繁項集的演算法。其核心是基於兩階段頻集思想的遞推演算法。該關聯規則在分類上屬於單維、單層、布爾關聯規則。在這里,所有支持度大於最小支持度的項集稱為頻繁項集,簡稱頻集。
5.最大期望(EM)演算法
在統計計算中,最大期望(EM,Expectation–Maximization)演算法是在概率(probabilistic)模型中尋找參數最大似然估計的演算法,其中概率模型依賴於無法觀測的隱藏變數(LatentVariabl)。最大期望經常用在機器學習和計算機視覺的數據集聚(DataClustering)領域。
6.PageRank
PageRank是Google演算法的重要內容。2001年9月被授予美國專利,專利人是Google創始人之一拉里·佩奇(LarryPage)。因此,PageRank里的page不是指網頁,而是指佩奇,即這個等級方法是以佩奇來命名的。
PageRank根據網站的外部鏈接和內部鏈接的數量和質量倆衡量網站的價值。PageRank背後的概念是,每個到頁面的鏈接都是對該頁面的一次投票,被鏈接的越多,就意味著被其他網站投票越多。這個就是所謂的「鏈接流行度」——衡量多少人願意將他們的網站和你的網站掛鉤。PageRank這個概念引自學術中一篇論文的被引述的頻度——即被別人引述的次數越多,一般判斷這篇論文的權威性就越高。
7.AdaBoost
Adaboost是一種迭代演算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。其演算法本身是通過改變數據分布來實現的,它根據每次訓練集之中每個樣本的分類是否正確,以及上次的總體分類的准確率,來確定每個樣本的權值。將修改過權值的新數據集送給下層分類器進行訓練,最後將每次訓練得到的分類器最後融合起來,作為最後的決策分類器。
8.kNN:k-nearestneighborclassification
K最近鄰(k-NearestNeighbor,KNN)分類演算法,是一個理論上比較成熟的方法,也是最簡單的機器學習演算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。
9.NaiveBayes
在眾多的分類模型中,應用最為廣泛的兩種分類模型是決策樹模型(DecisionTreeModel)和樸素貝葉斯模型(NaiveBayesianModel,NBC)。樸素貝葉斯模型發源於古典數學理論,有著堅實的數學基礎,以及穩定的分類效率。同時,NBC模型所需估計的參數很少,對缺失數據不太敏感,演算法也比較簡單。理論上,NBC模型與其他分類方法相比具有最小的誤差率。但是實際上並非總是如此,這是因為NBC模型假設屬性之間相互獨立,這個假設在實際應用中往往是不成立的,這給NBC模型的正確分類帶來了一定影響。在屬性個數比較多或者屬性之間相關性較大時,NBC模型的分類效率比不上決策樹模型。而在屬性相關性較小時,NBC模型的性能最為良好。
10.CART:分類與回歸樹
CART,。在分類樹下面有兩個關鍵的思想。第一個是關於遞歸地劃分自變數空間的想法;第二個想法是用驗證數據進行剪枝。
『貳』 大數據分析的分析步驟
大數據分析的五個基本方面
1. Analytic Visualizations(可視化分析)不管是對數據分析專家還是普通用戶,數據可視化是數據分析工具最基本的要求。可視化可以直觀的展示數據,讓數據自己說話,讓觀眾聽到結果。
2. Data Mining Algorithms(數據挖掘演算法)可視化是給人看的,數據挖掘就是給機器看的。集群、分割、孤立點分析還有其他的演算法讓我們深入數據內部,挖掘價值。這些演算法不僅要處理大數據的量,也要處理大數據的速度。
3. Predictive Analytic Capabilities(預測性分析能力)數據挖掘可以讓分析員更好的理解數據,而預測性分析可以讓分析員根據可視化分析和數據挖掘的結果做出一些預測性的判斷。
4. Semantic Engines(語義引擎)我們知道由於非結構化數據的多樣性帶來了數據分析的新的挑戰,我們需要一系列的工具去解析,提取,分析數據。語義引擎需要被設計成能夠從「文檔」中智能提取信息。
5. Data Quality and Master Data Management(數據質量和數據管理)
數據質量和數據管理是一些管理方面的最佳實踐。通過標准化的流程和工具對數據進行處理可以保證一個預先定義好的高質量的分析結果。
假如大數據真的是下一個重要的技術革新的話,我們最好把精力關注在大數據能給我們帶來的好處,而不僅僅是挑戰。
『叄』 如何進行大數據分析及處理
聚雲化雨的處理方式
聚雲:探碼科技全面覆蓋各類數據的處理應用。以數據為原料,通過網路數據採集、生產設備數據採集的方式將各種原始數據凝結成雲,為客戶打造強大的數據存儲庫;
化雨:利用模型演算法和人工智慧等技術對存儲的數據進行計算整合讓數據與演算法產生質變反應化雲為雨,讓真正有價值的數據流動起來;
開渠引流,潤物無聲:將落下「雨水」匯合成數據湖泊,對數據進行標注與處理根據行業需求開渠引流,將一條一條的數據支流匯合集成數據應用中,為行業用戶帶來價值,做到春風化雨,潤物無聲。
『肆』 統計模型和大數據模型所使用的主要演算法有什麼異同
以每24小時作為一份時間(而非自然日),根據用戶的配置有兩種工作模式:帶狀模式中,用戶僅定義開始日期時,從開始日期(含)開始,每份時間1個分片地無限增加下去;環狀模式中,用戶定義了開始日期和結束日期時,以結束日期(含)和開始日期(含)之間的時間份數作為分片總數(分片數量固定),以類似取模的方式路由到這些分片里。
1. DBLE 啟動時,讀取用戶在 rule.xml 配置的 sBeginDate 來確定起始時間
2. 讀取用戶在 rule.xml 配置的 sPartionDay 來確定每個 MySQL 分片承載多少天內的數據
3. 讀取用戶在 rule.xml 配置的 dateFormat 來確定分片索引的日期格式
4. 在 DBLE 的運行過程中,用戶訪問使用這個演算法的表時,WHERE 子句中的分片索引值(字元串),會被提取出來嘗試轉換成 Java 內部的時間類型
5. 然後求分片索引值與起始時間的差,除以 MySQL 分片承載的天數,確定所屬分片
1. DBLE 啟動時,讀取用戶在 rule.xml 配置的起始時間 sBeginDate、終止時間 sEndDate 和每個 MySQL 分片承載多少天數據 sPartionDay
2. 根據用戶設置,建立起以 sBeginDate 開始,每 sPartionDay 天一個分片,直到 sEndDate 為止的一個環,把分片串聯串聯起來
3. 讀取用戶在 rule.xml 配置的 defaultNode
4. 在 DBLE 的運行過程中,用戶訪問使用這個演算法的表時,WHERE 子句中的分片索引值(字元串),會被提取出來嘗試轉換成 Java 內部的日期類型
5. 然後求分片索引值與起始日期的差:如果分片索引值不早於 sBeginDate(哪怕晚於 sEndDate),就以 MySQL 分片承載的天數為模數,對分片索引值求模得到所屬分片;如果分片索引值早於 sBeginDate,就會被放到 defaultNode 分片上
與MyCat的類似分片演算法對比
中間件
DBLE
MyCat
分片演算法種類 date 分區演算法 按日期(天)分片
兩種中間件的取模範圍分片演算法使用上無差別
開發注意點
【分片索引】1. 必須是字元串,而且 java.text.SimpleDateFormat 能基於用戶指定的 dateFormat 來轉換成 java.util.Date
【分片索引】2. 提供帶狀模式和環狀模式兩種模式
【分片索引】3. 帶狀模式以 sBeginDate(含)起,以 86400000 毫秒(24 小時整)為一份,每 sPartionDay 份為一個分片,理論上分片數量可以無限增長,但是出現 sBeginDate 之前的數據而且沒有設定 defaultNode 的話,會路由失敗(如果有 defaultNode,則路由至 defaultNode)
【分片索引】4. 環狀模式以 86400000 毫秒(24 小時整)為一份,每 sPartionDay 份為一個分片,以 sBeginDate(含)到 sEndDate(含)的時間長度除以單個分片長度得到恆定的分片數量,但是出現 sBeginDate 之前的數據而且沒有設定 defaultNode 的話,會路由失敗(如果有 defaultNode,則路由至 defaultNode)
【分片索引】5. 無論哪種模式,分片索引欄位的格式化字元串 dateFormat 由用戶指定
【分片索引】6. 無論哪種模式,劃分不是以日歷時間為准,無法對應自然月和自然年,且會受閏秒問題影響
運維注意點
【擴容】1. 帶狀模式中,隨著 sBeginDate 之後的數據出現,分片數量的增加無需再平衡
【擴容】2. 帶狀模式沒有自動增添分片的能力,需要運維手工提前增加分片;如果路由策略計算出的分片並不存在時,會導致失敗
【擴容】3. 環狀模式中,如果新舊 [sBeginDate,sEndDate] 之間有重疊,需要進行部分數據遷移;如果新舊 [sBeginDate,sEndDate] 之間沒有重疊,需要數據再平衡
配置注意點
【配置項】1. 在 rule.xml 中,可配置項為 <propertyname="sBeginDate"> 、 <propertyname="sPartionDay"> 、 <propertyname="dateFormat"> 、 <propertyname="sEndDate"> 和 <propertyname="defaultNode">
【配置項】2.在 rule.xml 中配置 <propertyname="dateFormat">,符合 java.text.SimpleDateFormat 規范的字元串,用於告知 DBLE 如何解析sBeginDate和sEndDate
【配置項】3.在 rule.xml 中配置 <propertyname="sBeginDate">,必須是符合 dateFormat 的日期字元串
【配置項】4.在 rule.xml 中配置 <propertyname="sEndDate">,必須是符合 dateFormat 的日期字元串;配置了該項使用的是環狀模式,若沒有配置該項則使用的是帶狀模式
【配置項】5.在 rule.xml 中配置 <propertyname="sPartionDay">,非負整數,該分片策略以 86400000 毫秒(24 小時整)作為一份,而 sPartionDay 告訴 DBLE 把每多少份放在同一個分片
【配置項】6.在 rule.xml 中配置 <propertyname="defaultNode"> 標簽,非必須配置項,不配置該項的話,用戶的分片索引值沒落在 mapFile 定義
『伍』 在大數據時代,自然災害風險分析是否仍存在小樣本問題
其實 沒有大數據 自然災害風險分析是否存在小樣本問題呢?這是個偽命題 著力點在於樣本分析 而大數據是一種數據處理方法 數據採集 數據處理數據演算法 數據結果的呈現 他是給予樣本數據的採集給予答案 不存在小樣本的問題。更多的是流式計算。
『陸』 大數據的分析方法究竟是不是"科學
1.可視化分析
大數據分析的使用者有大數據分析專家,同時還有普通用戶,但是他們二者對於大數據分析最基本的要求就是可視化分析,因為可視化分析能夠直觀的呈現大數據特點,同時能夠非常容易被讀者所接受,就如同看圖說話一樣簡單明了。
2. 數據挖掘演算法
大數據分析的理論核心就是數據挖掘演算法,各種數據挖掘的演算法基於不同的數據類型和格式才能更加科學的呈現出數據本身具備的特點,也正是因為這些被全世界統計 學家所公認的各種統計方法(可以稱之為真理)才能深入數據內部,挖掘出公認的價值。另外一個方面也是因為有這些數據挖掘的演算法才能更快速的處理大數據,如 果一個演算法得花上好幾年才能得出結論,那大數據的價值也就無從說起了。
3. 預測性分析
大數據分析最終要的應用領域之一就是預測性分析,從大數據中挖掘出特點,通過科學的建立模型,之後便可以通過模型帶入新的數據,從而預測未來的數據。
4. 語義引擎
非結構化數據的多元化給數據分析帶來新的挑戰,我們需要一套工具系統的去分析,提煉數據。語義引擎需要設計到有足夠的人工智慧以足以從數據中主動地提取信息。
5.數據質量和數據管理。 大數據分析離不開數據質量和數據管理,高質量的數據和有效的數據管理,無論是在學術研究還是在商業應用領域,都能夠保證分析結果的真實和有價值。
大數據分析的基礎就是以上五個方面,當然更加深入大數據分析的話,還有很多很多更加有特點的、更加深入的、更加專業的大數據分析方法。
大數據的技術
數據採集: ETL工具負責將分布的、異構數據源中的數據如關系數據、平面數據文件等抽取到臨時中間層後進行清洗、轉換、集成,最後載入到數據倉庫或數據集市中,成為聯機分析處理、數據挖掘的基礎。
數據存取: 關系資料庫、NOSQL、SQL等。
基礎架構: 雲存儲、分布式文件存儲等。
數據處理: 自然語言處理(NLP,Natural Language Processing)是研究人與計算機交互的語言問題的一門學科。處理自然語言的關鍵是要讓計算機」理解」自然語言,所以自然語言處理又叫做自然語言理解也稱為計算語言學。一方面它是語言信息處理的一個分支,另一方面它是人工智慧的核心課題之一。
統計分析: 假設檢驗、顯著性檢驗、差異分析、相關分析、T檢驗、 方差分析 、 卡方分析、偏相關分析、距離分析、回歸分析、簡單回歸分析、多元回歸分析、逐步回歸、回歸預測與殘差分析、嶺回歸、logistic回歸分析、曲線估計、 因子分析、聚類分析、主成分分析、因子分析、快速聚類法與聚類法、判別分析、對應分析、多元對應分析(最優尺度分析)、bootstrap技術等等。
數據挖掘: 分類 (Classification)、估計(Estimation)、預測(Prediction)、相關性分組或關聯規則(Affinity grouping or association rules)、聚類(Clustering)、描述和可視化、Description and Visualization)、復雜數據類型挖掘(Text, Web ,圖形圖像,視頻,音頻等)
模型預測 :預測模型、機器學習、建模模擬。
結果呈現: 雲計算、標簽雲、關系圖等。
大數據的處理
1. 大數據處理之一:採集
大數據的採集是指利用多個資料庫來接收發自客戶端(Web、App或者感測器形式等)的 數據,並且用戶可以通過這些資料庫來進行簡單的查詢和處理工作。比如,電商會使用傳統的關系型資料庫MySQL和Oracle等來存儲每一筆事務數據,除 此之外,Redis和MongoDB這樣的NoSQL資料庫也常用於數據的採集。
在大數據的採集過程中,其主要特點和挑戰是並發數高,因為同時有可能會有成千上萬的用戶 來進行訪問和操作,比如火車票售票網站和淘寶,它們並發的訪問量在峰值時達到上百萬,所以需要在採集端部署大量資料庫才能支撐。並且如何在這些資料庫之間 進行負載均衡和分片的確是需要深入的思考和設計。
2. 大數據處理之二:導入/預處理
雖然採集端本身會有很多資料庫,但是如果要對這些海量數據進行有效的分析,還是應該將這 些來自前端的數據導入到一個集中的大型分布式資料庫,或者分布式存儲集群,並且可以在導入基礎上做一些簡單的清洗和預處理工作。也有一些用戶會在導入時使 用來自Twitter的Storm來對數據進行流式計算,來滿足部分業務的實時計算需求。
導入與預處理過程的特點和挑戰主要是導入的數據量大,每秒鍾的導入量經常會達到百兆,甚至千兆級別。
3. 大數據處理之三:統計/分析
統計與分析主要利用分布式資料庫,或者分布式計算集群來對存儲於其內的海量數據進行普通 的分析和分類匯總等,以滿足大多數常見的分析需求,在這方面,一些實時性需求會用到EMC的GreenPlum、Oracle的Exadata,以及基於 MySQL的列式存儲Infobright等,而一些批處理,或者基於半結構化數據的需求可以使用Hadoop。
統計與分析這部分的主要特點和挑戰是分析涉及的數據量大,其對系統資源,特別是I/O會有極大的佔用。
4. 大數據處理之四:挖掘
與前面統計和分析過程不同的是,數據挖掘一般沒有什麼預先設定好的主題,主要是在現有數 據上面進行基於各種演算法的計算,從而起到預測(Predict)的效果,從而實現一些高級別數據分析的需求。比較典型演算法有用於聚類的Kmeans、用於 統計學習的SVM和用於分類的NaiveBayes,主要使用的工具有Hadoop的Mahout等。該過程的特點和挑戰主要是用於挖掘的演算法很復雜,並 且計算涉及的數據量和計算量都很大,常用數據挖掘演算法都以單線程為主。
整個大數據處理的普遍流程至少應該滿足這四個方面的步驟,才能算得上是一個比較完整的大數據處理。
『柒』 求一種大數據分析的演算法
//群體數據的排序與查找 //1.直接插入排序的演算法實現: void InsertSort(int arrForSort[],int nLength) { int i,j,temp; for(i=1;i/遍歷整個序列 { temp=arrForSort[i]; for(j=i;j>0&&temp<arrForSort[j-1];j--) //將第i個元素插入到合適的位置 arrForSort[j]=arrForSort[j-1]; arrForSort[j]=temp; } } //2.直接選擇排序的演算法實現: void SelectSort(int arrForSort[],int nLength) { int min,temp, i,j; for(i=0;i<nLength-1;i++) { min=i; for(j=i+1;j<nLength;j++) //選出具有最小值的元素的下標標號 if(arrForSort[j]/第i個元素與具有最小值的元素進行交換 arrForSort[i]=arrForSort[min]; arrForSort[min]=temp; } } //3.起泡法排序的演算法實現: void BubbleSort(int arrForSort[],int nLength) { int i,j,temp; i=nLength-1; while(i>0) { for(j=0;j<i;j++) //1次起泡的過程 { if(arrForSort[j+1]/逆序交換 {temp=arrForSort[j+1]; arrForSort[j+1]=arrForSort[j]; arrForSort[j]=temp;} } i--; //准備下一次起泡序列的長度 } } //4.希爾排序的演算法實現: void ShellSort(int arrForSort[],int nLength) { int k,j,i,temp; k=nLength/2; //設置初始子序列的間隔 while(k>0) { for(j=k;j/子序列的插入排序 { temp=arrForSort[j];i=j-k; while((i>=0)&&(arrForSort[i]>temp)) { arrForSort[i+k]=arrForSort[i];i=i-k; } arrForSort[i+k]=temp; } k=k/2; //重新設置子序列的間隔 } return; } //5.順序查找的實現 int SequenceSearch(int arrForSearch[],int nLength,int nKey) { int i; for(i=0;i<nLength;i++) //遍歷整個序列 if(arrForSearch[i]==nKey) return i; return -1; } //6.折半查找的演算法實現 int MiddleSearch(int arrForSearch(int arrForSearch[],int nLength,int nKey) { int mid,top,bottom; bottom=0; //設置首末元素下標 top=nLength-1; while(bottom/取序列中間元素下標 if(arrForSearch[mid]==nKey) return mid; //如果找到該元素,返回其下標 else if(arrForSearch[mid]>nKey) top=mid-1; //在前半個序列中繼續查找 else bottom=mid+1; } return -1; }