日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

基于PredictionIO的推荐引擎打造,及大规模多标签分类探索

發布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于PredictionIO的推荐引擎打造,及大规模多标签分类探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


基于PredictionIO的推薦引擎打造,及大規模多標簽分類探索

摘要:在2015年3月21日的北京Spark Meetup第六次活動上,尹緒森就如何使用PredictionIO打造一個定制化推薦引擎進行了詳細介紹,白剛則分享了新浪在大規模多標簽分類上的探索。

在2015年3月21日的北京Spark Meetup第六次活動上,一場基于Spark的機器學習專題分享由微軟Julien Pierre、新浪網白剛與Intel研究院尹緒森聯手打造。

Julien Pierre:Apache Spark in ASG


微軟ASG產品經理 Julien Pierre

Julien Pierre首先進行了開場發言,并為大家分享Spark在ASG團隊的應用情況。

通過Julien了解到,其團隊主要工作集中在Spark SQL和MLlib兩個組件,基于Spark做一些交互式分析,其中包括:將Spark與現有的查詢工具(Avacado整合)、使用Spark填補SQL Server DB和Cosmos之間規模的數據處理空白,以及使用Spark處理Bing和Office數據集。Julien表示,在小(1TB以內)數據集的處理上,SQL Server DB非常適合,它可以將延時控制在1分鐘之內;而在大數據集(100TB以上)的處理上,Cosmos可以在小時級別搞定;而使用Spark,剛好填補了數據處理上1-100TB的空檔,在1分鐘以內對數據進行處理。

尹緒森:Use PredictionIO to build your own recommendation engine & MLlib 最新成果


Intel研究院工程師 尹緒森?

尹緒森在本次Meetup上主要分享了兩個話題——使用PredictionIO來打造一個推薦引擎以及MLlib的最新成果。

PredictionIO

尹緒森首先介紹了PredictionIO,他表示,推薦系統打造過程中,除下Spark,系統還需要其他組件,而PredictionIO就是基于Spark一個完整的端到端Pipeline,讓用戶可以非常簡單的從零開始搭建一個推薦系統。


整個Pipeline流程如圖所示,其中Spark是整個管道的核心,整個Pipeline主要分為以下幾步:

  • (可選)PredictionIO使用Event Server來導入數據并存儲到HBase中;
  • 隨后這些數據進入一個基于Spark的PredictionIO Engine,PredictionIO Engine可能包括一個用于導入數據的Data Source,一個用于數據處理ETL等的Data Preparator;同時,一個推薦系統可能包括多個算法,因此數據需要放到不同的Algorithm中做training;
  • 在做完training之后生成模型,這里用戶可以根據需求來編寫持久化方法,確定數據儲存的位置,是本地文件系統亦或是HDFS;
  • 有了這些model之后,下一步需要做的是serving以響應用戶的請求,接受用戶的一些查詢從而生成結果。
  • 如上所述,一個完整的Pipeline中同時存在多個組件,比如:HBase,為EventServer存儲event;Spark,用于數據或者模型的處理;HDFS,用于存儲模型;Elasticsearch,用于元數據的處理。而對于用戶來說,使用PredictionIO來構建Pipeline只需要實現4個部分:

    • Data Source and Data Preparator
    • Algorithm
    • Serving
    • Evaluation Metrics

    Engine

    在PredictionIO中,Engine是一個比較核心的部分。在這里,尹緒森通過兩個用例來講述:

    Engine A:Train predictive model


    數據從Event Server讀取=》通過Data Source后形成TrainingData=》通過Preparator處理后形成PreparedData=》發送到不同的Training模塊(Algorithm & model)進行訓練。

    Engine B:Respond to dynamic query


    Mobile App向Engine提交查詢(輸入)請求,隨后會發送到3個Training模塊(Algorithm & model),生成結果并通過用戶自定義的算法將3個結果進行整合,從而產生一個Predicted Results,并交由Serving呈現在Mobile App。

    最后,尹緒森通過實際代碼講解了如何使用PredictionIO打造一個基于Spark的Pipeline。

    Recent news of MLlib


    尹緒森表示,在之前版本,Spark的各個組件(比如MLlib、Graphx、Core)相對獨立,而在1.3發布后,當下已經有了一個融合的趨勢,更加方便用戶使用。最明顯的變化就是MLlib和Spark SQL,其中SparkSQL把SchemaRDD封裝成新的DataFrame API,同時基于MLlib和SQL發展出一個MLPackage,它與DataFrame一起提供了更方便的API為用戶使用;而MLlib則與Spark Streaming一起提供了online training的能力,但是目前online training只有3個算法;最后,在1.3發布后,MLlib中添加了很多新的算法,其中多個都是基于GraphX實現,這主要因為很多算法都適合用圖來表示,比如LDA(Latent Dirichlet Allocation)。


    分享最后,尹緒森綜述了MLlib近期的幾個主要更新,其中包括Streaming-wised training、Feature extraction/transformation、LDA on top of GraphX、Multi-logistic regression、Block matrix abstraction、Gaussian Mixture、Isotonic Regression、Power iteration clustering、FPGrowth、Stat、Random forest以及ML package和 DataFrame,并表示ML package和DataFrame是近期最重要的兩個變化。

    白剛:Multi-Label Classification with Bossting on Apache Spark


    新浪網廣告算法部門高級工程師 白剛

    白剛在新浪/微博從事廣告算法相關工作。而本期Meetup上,白剛的分享主要圍繞著新浪門戶的大規模多標簽分類算法工作(項目已上傳到GitHub )。

    背景

    在類似新浪的媒體中,廣告帶來收益,同時也會影響到用戶體驗。為了減少對用戶體驗的影響(甚至是對用戶體驗產生幫助),如何區分“用戶屬于哪個人群,是哪些廣告的潛在受眾”至關重要,也就是如何做好user profiling。


    如上圖所示,每個用戶都有著不同的興趣,同時每個人也擁有著多個興趣,因此實際問題歸結于如何給用戶打上對應的標簽。

    問題與求解

    在機器學習領域,上述的問題被抽象為模型的建立和預測:根據給出的user feature x,輸出符合其興趣的標簽集合L,即F :X →L。這里需要做的則是通過一個superwise的方法對模型進行訓練。


    所使用數據集:Feature是用戶的抽象行為;X,一個N維的向量;L則是具體的Label集合,同樣是一個向量,每個維度的值是正一和負一,表示加或者不加某一個Label。訓練的最終目標是最小化Hamming Loss——即每個Label的錯誤率。在這里,白剛從簡單的方案介紹,然后針對其缺點,給出了scalable的方案:

    1. Per-label bin-classification?

    為了得到這個vector-valued function F :X →L,這里需要為每個l∈L都訓練一個binary classifier,預測時將判斷每一個標簽上的結果。

    • lOne- versus-all implemented in LibSVM、scikit-learn
    • lAd targeting往往使用per-campaign model,為每一個ad compaign訓練一個二分類模型

    這個途徑主要基于一些已有技術,比如LR、SVM等二分類模型,因此易于驗證。但是這個模型有個比較明顯的缺點,即擴展性差——逐個標簽訓練模型是個比較低效的途徑,隨著標簽數的增加,訓練耗時也明顯增加。

    2. Multi-Label Classification

    基于上述思考,新的目標被確定:首先,模型本身的輸出就是多標簽結果,而不是組合多個二分類的模型去獲得最終結果;其次,訓練過程是最小化Hamming loss,這樣一個目標可以讓多標簽的分類更準;最后,必須是可擴展的,不管是在Feature的維度上,還是在Label的維度上,亦或是數據集的大小上,都能適應一個很大的規模。

    在考量了多個解決問題的方案后,Boosting最終被選擇,這主要因為Boosting在這個場景下可以更加的高效和方便,同時在Spark上實現Boosting這個多迭代的方式也非常適合。這個方案主要涉及到兩篇文獻和一個開源的實現:

    文獻1:Improved Boosting Algorithms Using Confidence-rated Predictions( Robert E. Schapire & Yoram Singer)。提出了AdaBoost.MH算法,它主要是對AdaBoost的擴展。

    文獻2:The Return of AdaBoost.MH: Multi-class Hamming Trees,2014年由Kegl提出。該方法主要是對AdaBoost.MH里的base learners做Factorization,將Decision stump和Hamming tree作為base learner。需要注意的是,該方法還處于初級階段。

    開源實現:前述算法的一個CPP單機開源實現。http://multiboost.org。當然,在這里希望得到的是通過Spark實現一個更具擴展性,更容易并行的方案。


    分享期間,白剛詳細的介紹了上述3點工作原理及學習機制,并針對Spark上的實現進行了詳細講解,其中包括:

    • 多標簽情況下弱分類器的系數的計算及其數學意義。
    • Base learner的訓練、根據14年那篇文獻的介紹,把弱分類器分解成一個只與feature相關、與label無關的函數和一個只需label相關、與feature無關的向量。前者把feature space做劃分,后者在每個label上對前者的劃分做修正。

    Multiboost on Spark

    1. Strong Learner on Apache Spark


    AdaBoost.MH on Apache Spark

    與Spark的結合,Strong Learner主要在Spark的driver program中實現算法邏輯,Base Learner類型作為類型參數。其中不同Base Learner可替換,實現可插拔,并實現了Base Learner的training邏輯與strong learner解耦。代碼參見GitHub。

    2. Base Learner on Apache Spark

    這個部分的工作主要是對弱分類器邏輯實現的封裝,其最核心內容就是實現baseLearnerAlgo.run(iterData.dataSet)。


    通過參考2014年的文獻,主要分享了這三個方面的多標簽弱分類算法:

    Decision stump:一個只有一個節點的決策樹,只有兩個模型參數。J,feature的index,即選擇哪一個維度的feature去考慮;b,是一個threshold,當在這個維度上feature的值大于threshold的時候則劃分為正的部分,反之則劃分到負的部分。


    同時期訓練過程就是尋找最優的分隔(j, threshold)的過程

    Hamming tree:Decision stump作為節點的決策樹。

    Generalized bin-classifier方案:φ(x)使用任意二分類模型,與v一起來最大化class-wise edge/最小化exp loss。

    3. Decision Stump on Apache Spark


    對比單機版,在Spark中的實現并不會真正的去做排序,而是通過flatMap==》reduceByKey的方式實現。


    Decision Stump的實現

    在具體的實現過程中,白剛展示了Decision Stump的模型效果和訓練過程Spark集群負載等數據,分析其中存在的一些問題:首先,它是一個非常弱的二分類模型;其次,Decision stump模型訓練的數據傳輸量很大;最后,Tree-based模型,并不適合高維稀疏數據。因此,需要一個更強的,更易于訓練,并且適應高維稀疏數據的φ(.)來針對feature space做二元劃分。

    4. Generalized binary φ on Apache Spark


    白剛表示,通過對Spark的考量發現,Spark.mllib.classification中已有的模型和算法就符合我們的要求:首先,SVM和LR是比較強的二分類模型;其次,訓練過程采用GradientDescent或者LBFGS的數值優化方法,易于訓練、效率較高;最后使用SparseVector,支持高維稀疏數據。關于使用些模型的正確性的依據,在AdaBoost機制中,只要base learner比random guess(正確率0.5)好,整體就是收斂的,由于弱分類器中的vote vector的存在,可以保證每個label上的錯誤率都小于0.5。

    后續工作


    分享最后,白剛對現有的不足之處和可以優化的方向進行了總結,并邀請大家參與這個已經投放在GitHub上的項目,fork及pull request。

    總結

    以上是生活随笔為你收集整理的基于PredictionIO的推荐引擎打造,及大规模多标签分类探索的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩欧美黄色 | 国产精品无码一区 | 女人张开双腿让男人捅 | 99福利网 | 精品国产aⅴ一区二区三区东京热 | 黄色一级视频网站 | 一级片大片 | 欧美爱爱视频 | 亚洲50p | 国产真实乱在线更新 | 你懂的视频网站 | 国产美女自慰在线观看 | 黑人巨大精品欧美一区二区免费 | 日韩一区二区三区不卡 | 伊人999| 国产精选一区 | 色射综合| 天天操天天射天天 | 在线看h网站 | 中国美女一级片 | 青青草成人在线观看 | 日韩中文字幕在线看 | 日韩综合在线 | 亚洲久久成人 | 成人免费视频久久 | 国产xxxx性hd极品 | 亚洲xxx视频 | 青青草视频在线免费观看 | 99久久久国产 | 黑人精品一区二区三区 | 欧美日韩天堂 | 成在线人免费视频 | 美女扒开大腿让男人桶 | 黄色爱爱视频 | 国产精品第一 | 欧美一级视频在线观看 | www.日韩av.com| 欧美精品一区在线发布 | 久久大综合 | 日韩综合网 | 久草免费在线视频 | 性色av网址 | 你懂的国产视频 | 午夜精品久久久久久久久 | 麻豆视频在线观看免费网站黄 | 天天综合91| 天天综合天天做天天综合 | 少妇特黄一区二区三区 | 91香蕉国产在线观看软件 | 精品人妻一区二区三区日产乱码 | 精品久久久久久久久久久国产字幕 | 久久天堂网 | 午夜黄色 | 麻豆精品久久久 | 97插插插 | jvid视频| 91av福利视频 | 日韩在线观看免费av | 日韩一级黄色录像 | 日韩一区网站 | 91性高潮久久久久久久久 | 六月婷婷综合网 | 漂亮人妻洗澡被公强 日日躁 | 国产精彩视频在线 | 欧美视频不卡 | 免费黄色资源 | 天堂网在线视频 | 蜜桃av噜噜一区二区三区 | 国产一区二区三区免费视频 | 在线观看亚洲av每日更新 | 国产探花视频在线观看 | 亚洲午夜久久久久久久久久久 | 国产尤物在线视频 | 男人的天堂毛片 | 国产无码精品视频 | 日韩三级大片 | 少妇性l交大片免费观看 | 浓精喷进老师黑色丝袜在线观看 | 国产91精品高潮白浆喷水 | 中文字幕亚洲一区二区三区 | 狠狠97 | 久久亚洲激情 | 非洲黄色片 | 精品人妻久久久久久888不卡 | 亚洲天堂2020 | 国产美女一级视频 | 国产精品视频你懂的 | 成人a在线| 欧美一卡二卡在线观看 | 久操免费视频 | 双性人hdsexvideos | 老汉av网站 | 成人午夜影片 | 精品人妻人人做人人爽夜夜爽 | 午夜精品福利一区二区蜜股av | bt天堂新版中文在线地址 | 久草在在线视频 | 91人人爱| 青青青青青青草 |