《大數據》精華連載6:如何開展大數據研發

大數據 數據挖掘 機器學習 網絡安全 中國雲計算 2017-03-29
《大數據》精華連載6:如何開展大數據研發《大數據》精華連載6:如何開展大數據研發

1.5 如何開展大數據研發

大數據正帶來一場信息社會的變革[5]。大量的結構化數據和非結構化數據的廣泛應用,致使人們需要重新思考已有的IT模式;與此同時,大數據將推動進行又一次基於信息革命的業務轉型,使社會能夠藉助大數據獲取更多的社會效益和發展機會。

龐大的數據需要我們進行剝離、整理、歸類、建模、分析等操作,通過這些動作後,我們開始建立數據分析的維度,通過對不同的維度數據進行分析,最終才能得到想到的數據和信息。例如,項目立項前的市場數據分析,為決策提供支撐;目標用戶群體趨勢分析,為產品市場支撐;通過對運營數據的挖掘和分析,為企業提供運營數據支撐;通過對用戶行為數據進行分析,為用戶提供生活信息服務數據支撐和消費指導數據支撐,等等,這些都是大數據帶來的支撐。

因此,如何進行大數據的採集、導入/預處理、統計/分析和大數據挖掘,是“做”好大數據的關鍵基礎。

1.大數據的採集

大數據的採集通常採用多個數據庫來接收終端數據,包括智能硬件端、多種傳感器端、網頁端、移動APP應用端等,並且可以使用數據庫進行簡單的處理工作。例如,電商平臺使用傳統的關係型數據庫MySQL和Oracle來存儲每筆事務數據,除此之外,Redis和MongoDB這樣的NoSQL數據庫也常用於數據的採集。

在大數據的採集過程中,主要面對的挑戰是併發數高,因為同時可能會有成千上萬的用戶來進行訪問和操作,例如,12306售票網站和淘寶網站,它們併發的訪問量在峰值時達到上百萬,所以,需要在採集端部署大量數據庫才能支撐,並且如何在這些數據庫之間進行負載均衡和分片也是需要深入思考和設計的。

2.導入/預處理

雖然採集端本身有很多數據庫,但是如果要對這些海量數據進行有效的分析,還是應該將這些數據導入到一個集中的大型分佈式數據庫或者分佈式存儲集群當中,同時,在導入的基礎上完成數據清洗和預處理工作。也有一些用戶會在導入時使用來自Twitter的Storm來對數據進行流式計算,來滿足部分業務的實時計算需求。

現實世界中數據大體上都是不完整、不一致的“髒”數據,無法直接進行數據挖掘,或挖掘結果差強人意,為了提高數據挖掘的質量,產生了數據預處理技術。數據預處理有多種方法,包括數據清理、數據集成、數據變換、數據歸約等,大大提高了數據挖掘的質量,降低數據挖掘所需要的時間。

(1)數據清理主要是達到數據格式標準化、異常數據清除、數據錯誤糾正、重複數據的清除等目標。

(2)數據集成是將多個數據源中的數據結合起來並統一存儲,建立數據倉庫。

(3)數據變換是通過平滑聚集、數據概化、規範化等方式將數據轉換成適用於數據挖掘的形式。

(4)數據歸約是指在對挖掘任務和數據本身內容理解的基礎上,尋找依賴於發現目標的數據的有用特徵,以縮減數據規模,從而在儘可能保持數據原貌的前提下,最大限度地精簡數據量。

在大數據的導入與預處理過程中,主要面對的挑戰是導入的數據量大,每秒的導入量經常會達到百兆,甚至千兆級別。

3.統計/分析

統計與分析主要是利用分佈式數據庫,或分佈式計算集群來對存儲於其內的海量數據進行普通的分析和分類彙總,以滿足大多數常見的分析需求,在這些方面可以使用R語言。R語言是用於統計分析、繪圖的語言和操作環境,屬於GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用於統計計算和統計製圖的優秀工具。

R語言在國際和國內的發展差異非常大,國際上R語言已然是專業數據分析領域的標準,但在國內依舊任重而道遠,這固然有數據學科地位的原因,國內很多人版權概念薄弱,以及學術領域相對閉塞也是原因。

R語言是一套完整的數據處理、計算和製圖軟件系統。它是數據存儲和處理系統、數組運算工具、完整連貫的統計分析工具、優秀的統計製圖功能、簡便而強大的編程語言。與其說R語言是一種統計軟件,不如說是一種數學計算的環境,因為R語言並不是僅僅提供若干統計程序,使用者只需指定數據庫和若干參數便可進行統計分析。R語言的思想是:它可以提供一些集成的統計工具,但更大量的是它提供各種數學計算、統計計算的函數,從而使使用者能靈活機動地進行數據分析,甚至創造出符合需要的新的統計計算方法。

在大數據的統計與分析過程中,主要面對的挑戰是分析涉及的數據量太大,其對系統資源,特別是I/O會有極大的佔用。

4.大數據挖掘

與大數據的統計與分析不同的是,大數據挖掘一般沒有預先設定好的主題,主要是在現有數據上面進行基於各種算法的計算,從而起到預測效果,實現高級別數據分析的需求。

數據挖掘常用的方法有預測建模、關聯分析、聚類分析、偏差分析等。

(1)預測建模:根據數據集的特徵以目標結果為目的建立映射關係。預測建模有兩類任務,一是分類,用於預測具有多種屬性的數據的類別;二是迴歸,用於預測連續數據集未來的變化趨勢。

(2)關聯分析:關聯分析是針對數據集中存在的一類重要的、可被發現的知識,關聯分析的目標在於發現數據集中隱藏的相關聯繫。

(3)聚類分析:聚類分析的目的在於將數據集內具有相似特徵屬性的數據聚集在一起,同一個數據群中的數據特徵要儘可能相似,不同的數據群中的數據特徵要有明顯的區別。

(4)偏差分析:包括很多潛在的有趣的知識,如分類中的反常實例、模式的例外、觀察結果對期望的偏差等,其目的是尋找觀察結果與參照量之間有意義的差別。

數據挖掘算法是創建數據挖掘模型的一組試探法和計算方法,通過對提供的數據進行分析,查找特定類型的模式和趨勢,最終形成創建模型。常用的算法有如下幾種。

(1)C4.5算法:一種決策樹算法,它是決策樹核心算法ID3的改進算法。C4.5算法的優點是產生的分類規則易於理解,準確率較高。缺點是在構造樹的過程中,需要對數據集進行多次順序掃描和排序,因而導致算法的低效。此外,C4.5只適合於能夠駐留於內存的數據集,當訓練集大得無法在內存容納時程序無法運行。

(2)CART算法:也是一種決策樹算法,CART算法考慮到每個節點都有成為葉子節點的可能,對每個節點都分配類別,分配類別的方法可以用當前節點中出現最多的類別,也可以參考當前節點的分類錯誤或者其他更復雜的方法。

(3)K近鄰算法:是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是,如果一個樣本在特徵空間中的K個最相似的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

(4)樸素貝葉斯算法:貝葉斯分類是一系列分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。樸素貝葉斯算法是其中應用最為廣泛的分類算法之一。

(5)支持向量機SVM算法:支持向量機方法是建立在統計學習理論的VC維理論和結構風險最小原理基礎上的,根據有限的樣本信息在模型的複雜性和學習能力之間尋求最佳折中,以求獲得最好的推廣能力。

(6)期望最大化算法(EM算法):期望最大化算法是一種迭代算法,每次迭代由兩步組成,E步求出期望,M步將參數極大化。EM算法在處理缺失值上,實際驗證是一種非常穩健的算法。

(7)Apriori算法:Apriori算法是一種挖掘關聯規則的頻繁項集算法,其核心思想是通過候選集生成和情節的向下封閉檢測兩個階段來挖掘頻繁項集。而且算法已經被廣泛應用到商業、網絡安全等各個領域。

(8)FP-Tree算法:使用了一種緊縮的數據結構來存儲查找頻繁項集所需要的全部信息。

(9)PageRank算法:Google的創始人拉里·佩奇和謝爾蓋·布林於1998年在斯坦福大學發明了這項技術,以Google公司創辦人拉里·佩奇之姓來命名。Google用它來體現網頁的相關性和重要性,在搜索引擎優化操作中是經常被用來評估網頁優化的成效因素之一。

(10)HITS算法:HITS算法是一種連接分析算法,它是由IBM首先提出的。用戶輸入關鍵詞後,算法對返回的匹配頁面計算兩種值,一種是樞紐值,另一種是權威值,這兩種值是互相依存、互相影響的。所謂樞紐值,指的是頁面上所有導出鏈接指向頁面的權威值之和,權威值是指所有導入鏈接所在的頁面中樞紐之和。

(11)K-Means算法:K-Means算法是一種很典型的基於距離的聚類算法,採用距離作為相似性的評價指標,即認為兩個對象的距離越近,其相似度就越大。該算法認為簇是由距離靠近的對象組成的,因此,把得到緊湊且獨立的簇作為最終目標。

(12)BIRCH算法:BIRCH算法是一種綜合的層次聚類算法,它用到了聚類特徵和聚類特徵樹兩個概念,用於概括聚類描述。聚類特徵樹概括了聚類的有用信息,並且佔用空間較元數據集合小得多,可以存放在內存中,從而可以提高算法在大型數據集合上的聚類速度及可伸縮性。

(13)AdaBoost算法:AdaBoost算法是一種迭代算法,其核心思想是針對同一個訓練集訓練不同的分類器(弱分類器),然後把這些弱分類器集合起來,構成一個更強的最終分類器(強分類器)。

(14)GSP算法:GSP算法是一種序列挖掘算法,類似於Apriori算法,採用冗餘候選模式的剪除策略和特殊的數據結構——哈希樹來實現候選模式的快速訪存。

在大數據挖掘的過程中,主要面對的挑戰是用於挖掘的算法很複雜,並且計算涉及的數據量和計算量都很大,常用數據挖掘算法都以單機/單線程為主。

整個大數據的處理過程,至少應該包括上述四個方面的步驟,即大數據的採集、導入/預處理、統計分析、大數據挖掘,才能算得上一個比較完整的大數據處理流程。

精彩回顧:

↓↓↓

相關推薦

推薦中...