機器學習是一門人工智能的科學,能通過經驗自動改進的計算機算法的研究。
機器學習是一個多學科交叉的領域,會涉及到計算機、資訊學、數學、統計學、神經科學等。
機器學習是大資料的核心技術,本質都是基于經驗的算法處理。機器學習強調三個關鍵詞:算法、經驗、性能,其處理過程如下圖所示。

在資料的基礎上,通過算法建構出模型并對模型進行評估。評估的性能如果達到要求,就用該模型來測試其他的資料;如果達不到要求,就要調整算法來重建立立模型,再次進行評估。如此循環往複,最終獲得滿意的經驗來處理其他的資料。
機器學習技術和方法已經被成功應用到多個領域,比如今日頭條的個性推薦系統,螞蟻金服的金融反欺詐,訊飛的語音識别,自然語言處理和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 生态系統中的位置
從架構圖可以看出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 。分類的目的就是分析輸入資料,通過在訓練集中的資料表現出來的特性,為每一個類找到一種準确的描述或者模型,采用該種方法(模型)将隐含函數表示出來。
構造分類模型的過程一般分為訓練和測試兩個階段。在構造模型之前,将資料集随機地分為訓練資料集和測試資料集。先使用訓練資料集來構造分類模型,然後使用測試資料集來評估模型的分類準确率。如果認為模型的準确率可以接受,就可以用該模型對其它資料元組進分類。一般來說,測試階段的代價遠低于訓練階段。
每個算法具體的内容由于内容過多,是以不在此詳細介紹。
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中,共有六種聚類方法:
(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
