文章目錄
一、NoSQL
1、NoSQL興起原因
關係型數據庫已經無法滿足大數據的需求:
- 無法滿足海量數據的管理需求
- 無法滿足數據高併發的需求
- 無法滿足高可擴展性和高可用性的需求
2、NoSQL四大類型
鍵值數據庫 | 列族數據庫 | 文檔數據庫 | 圖形數據庫 | |
---|---|---|---|---|
數據模型 | 鍵值對 鍵是一個字符串對象 值可以是任意數據類型 |
以列簇式存儲 將同一列數據存在一起 |
鍵值對 值是版本化的文檔 |
圖結構 |
優點 | 查找快、大量寫操作時性能高 | 查找速度快,可擴展性強 容易進行分佈式擴展,複雜性低 |
高併發 可以通過鍵或內容來構建索引 |
支持複雜度圖形算法,可構造複雜的關係圖譜 |
缺點 | 數據無結構,無法存儲結構化信息 條件查詢效率低 不能通過兩個及以上的鍵來關聯數據 |
大多不支持事務一致性 | 沒有統一的查詢語法 不適合有關聯的事務處理 |
複雜性高,只支持一定的數據規模 |
用途 | 涉及頻繁讀寫、擁有簡單數據模型的應用 如:內存緩存、購物車 |
分佈式數據存儲與管理 可以容忍副本短期內不一致的應用 |
存儲、索引並管理面向文檔的數據或類似的半結構化數據 | 專門用於處理具有高度相關關係的數據 |
代表性數據庫 | redis | HBase | mongoDB | Neo4j |
二、數據處理
1、數據預處理
目的
數據分析算法的設計與選擇要考慮被處理數據的特徵數據質量過低或數據的心態不符合算法需求時,需要進行數據預處理工作
概念
對數據進行正式計算前,根據後續數據計算的需求,對元數據集進行審計、清洗、變換、集成、脫敏、規約和標註等一系列活動,提升數據質量,使數據形態更符合某一算法的要求
2、數據審計
數據審計是指按照數據質量的一般規律與評價方法對數據內容及其元數據進行審計,發現其中存在的問題(缺失、噪聲、矛盾、被篡改)。
3、數據清洗
在數據審計基礎上,將“髒數據”清洗成“乾淨數據”的過程
- 缺失數據:識別、分析、處理
- 冗餘數據:識別、分析、過濾
- 噪聲數據【分箱】:分箱、計算箱特徵值、替換箱內成員、生成新數據集
- 噪聲數據【聚類k-means】:隨機選K個對象,每個對象初始代表一個類的平均值或中心,對剩餘每個對象,根據其到類中心的距離,被劃分到最近的類;然後重新計算每個類的平均值。不斷重複這個過程,直到所有的樣本都不能再分配爲止。
- 噪聲數據【迴歸】:用函數擬合數據
4、數據變換
平滑處理
(分箱、聚類、迴歸)去除噪聲數據
特徵構造
採用一致的特徵構造出新的屬性(如,質量、體積→密度)
聚集
對數據彙總(如,根據日銷額統計月銷額)
標準化
將特徵值按比例縮放,落入特定區間
數據泛化
使用概念標籤/概念分層
5、數據集成
對不同的數據源進行集成,並在集成後的數據集上進行數據處理
- 內容集成:目標數據集與來源數據集結構相同,進行合併
- 結構集成:目標數據集與來源數據集結構不同,進行自然連接
6、數據脫敏
保護主體的信息安全隱患和個人隱私風險
7、數據規約
在不影響數據的完整性和數據分析結果的正確性的前提下,通過減少數據規模的方法達到提升分析的效果和目的
8、數據結構模式
結構化數據模式
【先把模式定好,如數據庫的表,需要預先設計好】
即行數據, 存儲在數據庫裏,可以用二維表結構來邏輯表達實現的數據
半結構化數據模式
【先把數據放好,再加標記】
HTML文檔就屬於半結構化數據。它一般是自描述的,數據的結構和內容混在一起,沒有明顯的區分
無結構化數據模式
【單個Media本身是半結構化的數據】
包括所有格式的辦公文檔、文本、圖片等
三、聚類算法
1、KNN
基本思路
尋找最近的k個鄰居
算法描述
當一個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某一類別時,該樣本也屬於這個類別,並具有這個類別上樣本的特性
適用範圍
對於類域的交叉或重疊較多的待分樣本集來說,KNN較其他方法更爲合適
2、K-means
步驟
- 第1步:從n個數據對象中隨機選k個作爲初始聚類中心
- 第2步:計算除了k個初始中心外的對象與中心對象的距離,並根據最小距離進行劃分
- 第3步:重新計算每個有變化的聚類的均值,確定新的聚類中心
- 第4步:重複2-3步,知道每個聚類不再發生變化或小於指定閾值,結束算法
四、Apriori算法
1、Apriori定律1
如果一個集合是頻繁項集,則它的所有子集都是頻繁項集。
舉例:假設一個集合{A,B}是頻繁項集,即A、B同時出現在一條記錄的次數大於等於最小支持度min_support,則它的子集{A},{B}出現次數必定大於等於min_support,即它的子集都是頻繁項集。
2、Apriori定律2
如果一個集合不是頻繁項集,則它的所有超集都不是頻繁項集
舉例:假設集合{A}不是頻繁項集,即A出現的次數小於min_support,則它的任何超集如{A,B}出現的次數必定小於min_support,因此其超集必定也不是頻繁項集
3、Apriori算法
算法描述
首先,找出頻繁“1項集”的集合,該集合記爲。用找出頻繁“2項集”的集合,繼而用找
如此下去,直到不能找到“K項集”【不能發現更大的頻集】。(因此找每個都要一次數據庫掃描)
舉例
五、機器學習
1、訓練經驗的選擇
注意點
- 訓練經驗能否爲系統的決策提供直接或間接的反饋
- 直接反饋:告訴你某種做法好還是不好
- 間接反饋:告訴你過程和結果,自行分析好還是不好
- 訓練經驗能否被學習系統控制
- 訓練集的分佈是否與實際數據集具有相似的分佈
2、目標函數的選擇
在許多實際問題的結果過程中,學習目標函數(T)是一個十分困難的任務,無法找到準確的目標函數(T)。 因此,一般採用函數逼近的方法,僅希望學習到一個近似的目標函數V。所以,學習目標函數的算法通常稱爲函數近似算法。
近似函數的設計應避免採用“不可操作的方法”:也就是理論上是可行的,但實現起來特別困難或不符合實際任務需要的方法。(比如窮舉法)
目標函數的表示需要綜合考慮目標函數的表達能力(選擇什麼樣的目標函數適合具體的應用場景,如是線性、還是多項式函數等等)和訓練數據的規模,進而確定近似函數的各個參數,達到表示目標函數的目的。
六、強化學習
概念
強化學習,也叫獎懲式學習。只對實際輸出給出評價,而不給出正確的輸出值。
大數據的特徵
大數據的5V特點:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價值)、Veracity(真實性)。
七、MapReduce
介紹
MapReduce計算框架源自一種分佈式計算模型,其輸入和輸出值均爲<key, value>鍵/值對,其計算過程分爲兩個階段——map階段和reduce階段,並分別以兩個函數map()和reduce()進行抽象。
舉例
計算框架原理
首先將輸入文件分爲M個數據塊,每個數據塊的大小一般爲16MB~64MB.
然後在計算機集羣中啓動大量複製程序
應用
MapReduce這套分佈式處理框架常用於:
- 分佈式Grep
- URL訪問頻率統計
- 逆向Web-Link圖
- 主機關鍵向量指標
- 逆序索引
- 分佈式排序
總的來說,就是適合大規模鍵值對數據的簡單邏輯的分析
特徵
- 主從結構
- map、reduce兩個函數的數據處理
- 鍵值對輸入輸出
- 容錯機制複雜
- 數據存儲位置多樣
- 任務粒度大小重要
- 任務備份機制必要
八、Spark
介紹
Spark是一個快速且通用的集羣計算平臺
特點
- 運行速度快:DAG執行引擎支持循環數據流和內存計算
- 容易使用:支持多種編程語言編程
- 通用性
- 運行模式多樣:可以運行於獨立的集羣模式中,可以運行於Hadoop中,……
九、推薦系統
1、冷啓動問題
介紹
冷啓動問題:如何在沒有大量用戶數據的情況下設計個性化推薦系統並讓用戶對推薦結果滿意而願意使用推薦系統
幾種推薦系統是否存在冷啓動問題
- 基於人口統計學的推薦:無冷啓動問題
- 基於內容的推薦:有冷啓動問題
- 基於協同過濾的推薦:對新物品和新用戶都有冷啓動問題
十、協同過濾
1、UserCF算法和ItemCF算法對比
UserCF算法推薦的是那些和目標用戶有着共同興趣愛好的其他用戶所喜歡的物品
ItemCF算法推薦的是那些和目標用戶之前喜歡的物品類似的其他物品
UserCF算法的推薦更偏向於社會化,而ItemCF算法的推薦更偏向於個性化
2、協同過濾的推薦機制總結
基於協同過濾的推薦機制是現今應用最爲廣泛的推薦機制,它有以下幾個顯著的優點:
- 它不需要對物品或者用戶進行嚴格的建模,不要求物品的描述是機器可理解的,這種方法也是領域無關的
- 可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好
基於協同過濾的推薦機制也存在以下幾個問題
- 方法的核心是基於歷史數據,所以對新物品和新用戶都有“冷啓動”的問題
- 推薦的效果依賴於用戶歷史偏好數據的多少和準確性
- 可能少部分人的錯誤偏好會對推薦的準確度有很大的影響
- 對於一些特殊品味的用戶不能給予很好的推薦
- 由於以歷史數據爲基礎,抓取和建模用戶的偏好後,很難修改,從而導致這個方法不夠靈活