大數據潮流下的機器學習及應用場景

  機器學習是一門人工智能的科學,能通過經驗自動改進的計算機算法的研究。    

  機器學習是一個多學科交叉的領域,會涉及到計算機、信息學、數學、統計學、神經科學等。

  機器學習是大數據的核心技術,本質都是基於經驗的算法處理。機器學習強調三個關鍵詞:算法、經驗、性能,其處理過程如下圖所示。

  在數據的基礎上,通過算法構建出模型並對模型進行評估。評估的性能如果達到要求,就用該模型來測試其他的數據;如果達不到要求,就要調整算法來重新建立模型,再次進行評估。如此循環往復,最終獲得滿意的經驗來處理其他的數據。

  機器學習技術和方法已經被成功應用到多個領域,比如今日頭條的個性推薦系統,螞蟻金服的金融反欺詐,訊飛的語音識別,自然語言處理和google的機器翻譯,模式識別,智能控制、垃圾郵件等。

機器學習的分類

 監督學習

  監督是從給定的訓練數據集中學習一個模型,再用此模型預測,再將預測結果與實際結果進行比較,不斷調整預測模型,直到達到一個預期的準確率。

  常見算法包括迴歸分析和統計分類。監督學習常用作訓練神經網絡和決策樹。他們高度依賴事先確定的分類系統。如垃圾郵件、新聞資訊內容分類。

非監督學習

  非監督學習的訓練集沒有人爲標註的結果,學習模型是爲了推斷出數據的一些內在結構。常見的應用場景包括關聯規則的學習以及聚類等。

  這類學習型的目標不是讓效用函數最大化,而是找到訓練數據中的近似點。聚類常常能發現那些與假設匹配的相當好的直觀分類,如基於人口統計的聚合個體可能會在一個羣體中形成一個富有的聚合和窮的聚合。

半監督學習

  介於監督學習與無監督學習間,產要考慮如何利用少量的標註樣本和大量的未標註樣本進行訓練和分類的問題。學習算法試圖對未標識數據進行建模,再對標識的數據進行預測,如圖論推理算法或拉普拉斯支持向量機等。

機器學習常用算法

迴歸算法

  最小二乘法、邏輯迴歸、逐步式迴歸、多元自適誚迴歸樣條以及要地散點平滑估計。

基於實例的算法

  常被稱爲“贏家通吃”學習。常用來對策問題建立模型,這樣的模型常常先選取一批樣本數據,然後根據某些近似把新數據與樣本數據進行比較。通過這種方式來尋找最佳的匹配。

決策樹學習

  根據數據的屬性採用樹狀結構建立決策模型,常用來解決分類和迴歸問題。

貝葉斯學習

  主要用來解決分類和迴歸問題。樸素貝葉斯算法。

聚類、分類算法

聚類和分類是機器學習中兩個常用的算法,聚類將數據分開爲不同的集合,分類對新數據進行類別預測,下面將就兩類算法進行介紹。
(1)什麼是聚類
  聚類(Clustering)指將數據對象分組成爲多個類或者簇(Cluster),它的目標是:在同一個簇中的對象之間具有較高的相似度,而不同簇中的對象差別較大。

  其實,聚類在人們日常生活中是一種常見行爲,即所謂的“物以類聚,人以羣分”,其核心思想在於分組,人們不斷地改進聚類模式來學習如何區分各個事物和人。

(2)什麼是分類
  數據倉庫、數據庫或者其他信息庫中有許多可以爲商業、科研等活動的決策提供所需要的知識。分類與預測即是其中的兩種數據分析形式,可以用來抽取能夠描述重要數據集合或預測未來數據趨勢。

分類方法(Classification)用於預測數據對象的離散類別(Categorical Label);預測方法(Prediction)用於預測數據對象的連續取值。
分類流程:新樣本→特徵選取→分類→評價
訓練流程:訓練集→特徵選取→訓練→分類器
  最初,機器學習的分類應用大多都是在這些方法及基於內存基礎上所構造的算法。目前,數據挖掘方法都要求具有基於外存以處理大規模數據集合能力,同時具有可擴展能力。

機器學習庫Spark MLLib

  MLlib是Spark的機器學習(Machine Learning)庫,旨在簡化機器學習的工程實踐工作,並方便擴展到更大規模。機器學習需要多次迭代,如果使用Hadoop計算框架,則每次計算都要進行磁盤讀寫任務,會導致非常大的I/O和CPU消耗,而Spark是基於內存的計算具有天生的優勢。而且其RDD可與Spark SQL、Spark Streaming、GraphX等其他子框架與庫無縫地共享數據和操作,如MLlib可以直接使用SparkSQL提供的數據,或可以直接和GraphX圖計算進行join操作。

  MLlib在 spark 生態系統中的位置

 

Spark MLlib 架構

  從架構圖可以看出MLlib主要包含三個部分:

底層基礎:包括Spark的運行庫、矩陣庫和向量庫;

算法庫:包含廣義線性模型、推薦系統、聚類、決策樹和評估的算法;

實用程序:包括測試數據的生成、外部數據的讀入等功能。

 

下圖是MLlib算法庫的核心內容。

 

  MLlib由一些通用的學習算法和工具組成,包括分類、迴歸、聚類、協同過濾、降維等,同時還包括底層的優化原語和高層的管道API。

  具體來說,其主要包括以下幾方面的內容:

1. 算法工具:常用的學習算法,如分類、迴歸、聚類和協同過濾;
2. 特徵化工具:特徵提取、轉化、降維,和選擇工具;
3. 管道(Pipeline):用於構建、評估和調整機器學習管道的工具;
4. 持久性:保存和加載算法,模型和管道;
5. 實用工具:線性代數,統計,數據處理等工具。

  Spark將機器學習算法分成了兩個模塊:

訓練模塊:通過訓練樣本輸出模型參數;

預測模塊:利用模型參數初始化,預測測試樣本,輸出預測值。

MLLib中經典算法解析

 分類

  分類是一種重要的機器學習和數據挖掘技術。分類的目的是根據數據集的特點構造一個分類函數或分類模型(也常常稱作分類器),該模型能把未知類別的樣本映射到給定類別中的一種技術。
  分類的具體規則可描述如下:

  給定一組訓練數據的集合T(Training set),T的每一條記錄包含若干條屬性(Features)組成一個特徵向量,用矢量 x=(x1,x2,..,xn) 表示。 xi 可以有不同的值域,當一屬性的值域爲連續域時,該屬性爲連續屬性(Numerical Attribute),否則爲離散屬性(Discrete Attribute)。用 C=c1,c2,..ck 表示類別屬性,即數據集有k個不同的類別。那麼,T就隱含了一個從矢量X到類別屬性C的映射函數: f(X)↦C 。分類的目的就是分析輸入數據,通過在訓練集中的數據表現出來的特性,爲每一個類找到一種準確的描述或者模型,採用該種方法(模型)將隱含函數表示出來。
  構造分類模型的過程一般分爲訓練和測試兩個階段。在構造模型之前,將數據集隨機地分爲訓練數據集和測試數據集。先使用訓練數據集來構造分類模型,然後使用測試數據集來評估模型的分類準確率。如果認爲模型的準確率可以接受,就可以用該模型對其它數據元組進分類。一般來說,測試階段的代價遠低於訓練階段。

  MLlib分類算法分類算法基於不同的思想,算法也不盡相同,例如支持向量機SVM、決策樹算法、貝葉斯算法、KNN算法等。Spark.mllib包支持各種分類方法,主要包含 二分類, 多分類和 迴歸分析。下表列出了每種類型的問題支持的算法。

 每個算法具體的內容由於內容過多,因此不在此詳細介紹。

分類算法使用場景

1、市民出行選乘公交預測
  基於海量公交數據記錄,希望挖掘市民在公共交通中的行爲模式。以市民出行公交線路選乘預測爲方向,期望通過分析廣東省部分公交線路的歷史公交卡交易數據,挖掘固定人羣在公共交通中的行爲模式,分析推測乘客的出行習慣和偏好,從而建立模型預測人們在未來一週內將會搭乘哪些公交線路,爲廣大乘客提供信息對稱、安全舒適的出行環境,用數據引領未來城市智慧出行。

2、基於運營商數據的個人徵信評估
  運營商作爲網絡服務供應商,積累了大量的用戶基本信息及行爲特徵數據,如終端數據、套餐消費數據、通信數據等等。實名制政策保證了運營商用戶數據能與用戶真實身份匹配,並真實客觀的反映用戶行爲。廣泛覆蓋的網絡基礎設施提供了積累大量實時數據的條件,這些用戶數據實時反饋着用戶的各個維度的信息及特徵。
  在我國,個人徵信評估主要通過引用央行個人徵信報告,但對於很多用戶沒有建立個人信用記錄的用戶,金融機構想要了解他們的信用記錄成本又較高,傳統徵信評估手段難以滿足目前多種多樣的新興需求。金融業務不同於其他大數據業務,對數據的真實性、可信度和時效性要求較高,而這正是運營商數據的價值所在。
  期望利用運營商用戶數據,提供完善的個人徵信評估。


3、商品圖片分類
  京東含有數以百萬計的商品圖片,“拍照購”“找同款”等應用必須對用戶提供的商品圖片進行分類。同時,提取商品圖像特徵,可以提供給推薦、廣告等系統,提高推薦/廣告的效果。
  希望通過對圖像數據進行學習,以達到對圖像進行分類劃分的目的。


4、 廣告點擊行爲預測
  用戶在上網瀏覽過程中,可能產生廣告曝光或點擊行爲。對廣告點擊進行預測,可以指導廣告主進行定向廣告投放和優化,使廣告投入產生最大回報。
希  望基於100萬名隨機用戶在六個月的時間範圍內廣告曝光和點擊日誌,包括廣告監測點數據,預測每個用戶在8天內是否會在各監測點上發生點擊行爲。


5、基於文本內容的垃圾短信識別
  垃圾短信已日益成爲困擾運營商和手機用戶的難題,嚴重影響到人們正常生活、侵害到運營商的社會形象以及危害着社會穩定。而不法分子運用科技手段不斷更新垃圾短信形式且傳播途徑非常廣泛,傳統的基於策略、關鍵詞等過濾的效果有限,很多垃圾短信“逃脫”過濾,繼續到達手機終端。
  希望基於短信文本內容,結合機器學習算法、大數據分析挖掘來智能地識別垃圾短信及其變種。


6、 大數據精準營銷中搜狗用戶畫像挖掘
  “物以類聚,人以羣分”這句古語不僅揭示了物與人的自組織趨向,更隱含了“聚類”和“人羣”之間的內在聯繫。在現代數字廣告投放系統中,以物擬人,以物窺人,纔是比任何大數據都要更大的前提。在現代廣告投放系統中,多層級成體系的用戶畫像構建算法是實現精準廣告投放的基礎技術之一。其中,基於人口屬性的廣告定向技術是普遍適用於品牌展示廣告和精準競價廣告的關鍵性技術。在搜索競價廣告系統中,用戶通過在搜索引擎輸入具體的查詢詞來獲取相關信息。因此,用戶的歷史查詢詞與用戶的基本屬性及潛在需求有密切的關係。
  希望基於用戶歷史一個月的查詢詞與用戶的人口屬性標籤(包括性別、年齡、學歷)做爲訓練數據,通過機器學習、數據挖掘技術構建分類算法來對新增用戶的人口屬性進行判定。

聚類

  聚類是把相似的對象通過靜態分類的方法分成不同的組別或更多的子集(subset),同一個子集中的成員都有相似的屬性,聚類分析可以看作一種非監督學習的技術。

  在Spark2.0版本中(不是基於RDD API的MLlib),共有四種聚類方法: 
     (1)K-means 
     (2)Latent Dirichlet allocation (LDA) 
     (3)Bisecting k-means(二分k均值算法) 
     (4)Gaussian Mixture Model (GMM)。 
       基於RDD API的MLLib中,共有六種聚類方法: 
     (1)K-means 
     (2)Gaussian mixture 
     (3)Power iteration clustering (PIC) 
     (4)Latent Dirichlet allocation (LDA)** 
     (5)Bisecting k-means 
     (6)Streaming k-means 
       多了Power iteration clustering (PIC)和Streaming k-means兩種

常用的是K-means算法。

  K均值算法(K-Means)是一種劃分聚類方法。算法思路是通過迭代尋找聚類中心使各個樣本與所在類均值的誤差平方和達到最小。

  KMeans 是一個迭代求解的聚類算法,其屬於 劃分(Partitioning) 型的聚類方法,即首先創建K個劃分,然後迭代地將樣本從一個劃分轉移到另一個劃分來改善最終聚類的質量。
  K-Means聚類算法能輕鬆地對聚類問題建模。K-Means聚類算法容易理解,並且能在分佈式的環境下並行運行。學習K-Means聚類算法,能更容易地理解聚類算法的優缺點,以及其他算法對於特定數據的高效性
  K-Means聚類算法中的K是聚類的數目,在算法中會強制要求用戶輸入。如果將新聞聚類成諸如政治、經濟、文化等大類,可以選擇10~20的數字作爲K。因爲這種頂級類別的數量是很小的。如果要對這些新聞詳細分類,選擇50~100的數字也是沒有問題的。K-Means聚類算法主要可以分爲三步。
  第一步是爲待聚類的點尋找隨機選取K個樣本爲初始聚類中心;
  第二步是計算每個點聚類中心的距離,將每個點聚類到離該點最近的聚類中去;
  第三步是計算聚類中所有點的座標平均值,並將這個平均值作爲新的聚類中心點。
  反覆執行第二步,直到聚類中心不再進行大範圍的移動,或者聚類次數達到要求爲止。

聚類算法使用場景

1、基於用戶位置信息的商業選址
  隨着信息技術的快速發展,移動設備和移動互聯網已經普及到千家萬戶。在用戶使用移動網絡時,會自然的留下用戶的位置信息。隨着近年來GIS地理信息技術的不斷完善普及,結合用戶位置和GIS地理信息將帶來創新應用。如百度與萬達進行合作,通過定位用戶的位置,結合萬達的商戶信息,向用戶推送位置營銷服務,提升商戶效益。
  希望通過大量移動設備用戶的位置信息,爲某連鎖餐飲機構提供新店選址。


2、中文地址標準化處理
  地址是一個涵蓋豐富信息的變量,但長期以來由於中文處理的複雜性、國內中文地址命名的不規範性,使地址中蘊含的豐富信息不能被深度分析挖掘。通過對地址進行標準化的處理,使基於地址的多維度量化挖掘分析成爲可能,爲不同場景模式下的電子商務應用挖掘提供了更加豐富的方法和手段,因此具有重要的現實意義。

3、非人惡意流量識別
  2016年第一季度Facebook發文稱,其Atlas DSP平臺半年的流量質量測試結果顯示,由機器人模擬和黑IP等手段導致的非人惡意流量高達75% . 僅2016上半年,AdMaster反作弊解決方案認定平均每天能有高達 28% 的作弊流量。低質量虛假流量的問題一直存在,這也是過去十年間數字營銷行業一直在博弈的問題。基於AdMaster海量監測數據,50%以上的項目均存在作弊嫌疑;不同項目中,作弊流量佔廣告投放5%到95%不等;其中垂直類和網盟類媒體的作弊流量佔比最高;PC端作弊流量比例顯著高於移動端和智能電視平臺。廣告監測行爲數據被越來越多地用於建模和做決策,例如繪製用戶畫像,跨設備識別對應用戶等。作弊行爲,惡意曝光,網絡爬蟲,誤導點擊,甚至是在用戶完全無感知的情況下被控制訪問等產生的不由用戶主觀發出的行爲給數據帶來了巨大的噪聲,給模型訓練造成了很大影響。
  希望基於給定的數據,建立一個模型來識別和標記作弊流量,去除數據的噪聲,從而更好的使用數據,使得廣告主的利益最大化。

協同過濾

  協同過濾(Collaborative Filtering,簡稱CF,WIKI上的定義是:簡單來說是利用某個興趣相投、擁有共同經驗之羣體的喜好來推薦感興趣的資訊給使用者,個人透過合作的機制給予資訊相當程度的迴應(如評分)並記錄下來以達到過濾的目的,進而幫助別人篩選資訊,迴應不一定侷限於特別感興趣的,特別不感興趣資訊的紀錄也相當重要。

  協同過濾常被應用於推薦系統。這些技術旨在補充用戶—商品關聯矩陣中所缺失的部分。

  MLlib 當前支持基於模型的協同過濾,其中用戶和商品通過一小組隱性因子進行表達,並且這些因子也用於預測缺失的元素。MLLib 使用交替最小二乘法(ALS) 來學習這些隱性因子。

  用戶對物品或者信息的偏好,根據應用本身的不同,可能包括用戶對物品的評分、用戶查看物品的記錄、用戶的購買記錄等。其實這些用戶的偏好信息可以分爲兩類:

  • 顯式的用戶反饋:這類是用戶在網站上自然瀏覽或者使用網站以外,顯式地提供反饋信息,例如用戶對物品的評分或者對物品的評論。

  • 隱式的用戶反饋:這類是用戶在使用網站是產生的數據,隱式地反映了用戶對物品的喜好,例如用戶購買了某物品,用戶查看了某物品的信息,等等。

  顯式的用戶反饋能準確地反映用戶對物品的真實喜好,但需要用戶付出額外的代價;而隱式的用戶行爲,通過一些分析和處理,也能反映用戶的喜好,只是數據不是很精確,有些行爲的分析存在較大的噪音。但只要選擇正確的行爲特徵,隱式的用戶反饋也能得到很好的效果,只是行爲特徵的選擇可能在不同的應用中有很大的不同,例如在電子商務的網站上,購買行爲其實就是一個能很好表現用戶喜好的隱式反饋。

  推薦引擎根據不同的推薦機制可能用到數據源中的一部分,然後根據這些數據,分析出一定的規則或者直接對用戶對其他物品的喜好進行預測計算。這樣推薦引擎可以在用戶進入時給他推薦他可能感興趣的物品。

  MLlib目前支持基於協同過濾的模型,在這個模型裏,用戶和產品被一組可以用來預測缺失項目的潛在因子來描述。特別是我們實現交替最小二乘(ALS)算法來學習這些潛在的因子,在 MLlib 中的實現有如下參數:

  • numBlocks是用於並行化計算的分塊個數(設置爲-1時 爲自動配置);

  • rank是模型中隱性因子的個數;

  • iterations是迭代的次數;

  • lambda是ALS 的正則化參數;

  • implicitPrefs決定了是用顯性反饋ALS 的版本還是用隱性反饋數據集的版本;

  • alpha是一個針對於隱性反饋 ALS 版本的參數,這個參數決定了偏好行爲強度的基準。

         

協同過濾算法 應用場景

1、電商平臺的買了XX的還買了XX,組合搭配套餐、隨便看一看功能。

2、今日頭條的個性化推薦。

3、豆瓣相同興趣的小組。

4、電影推薦系統。

5、百度地圖基於地理位置的附近的美食

……

 

參考資料

1、Spark官網MLlib說明

2、Spark企業級實戰

3、天池DataCastleCCF

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章