机器学习问题总结(05)
文章目錄
- 1. Hadoop、Spark
- 1.1 hadoop
- 1.2 spark
- 1.3 MapReduce
- 1.3.1 概念
- 1.3.1 MapReduce執(zhí)行流程
- 2、機(jī)器學(xué)習(xí)場(chǎng)景
- 3、推薦系統(tǒng)(預(yù)測(cè)電影等級(jí))
- 4、CTR(點(diǎn)擊通過(guò)率 -> 廣告)
- 5、SVM
- 5.1 svm的原理
- 5.2 SVM的核技巧
- 6、K-means
- 6.1 K-means算法
- 6.2、如何用 hadoop 實(shí)現(xiàn) k-means
- 7、naive bayes和logistic regression的區(qū)別
- 8、生成模型、判別模型
- 9、LDA的原理和推導(dǎo)
- 10、做廣告點(diǎn)擊率(CTR)預(yù)測(cè),用哪些數(shù)據(jù)什么算法
- 10.1 特征選擇與使用
- 10.2 點(diǎn)擊率模型的評(píng)估方法
- 10.3 LR+人工 特征工程 風(fēng)光不再
- 10.4、邏輯回歸
- 11、常見(jiàn)計(jì)算廣告點(diǎn)擊率(CTR)預(yù)估算法
- 11.1**CTR架構(gòu)**
- 11.2主要算法
- 1.Logistic Regression
- 2.PLOY2:通過(guò)特征的二項(xiàng)式組合來(lái)建模
- 3.Factorization Machine(FM)
- 4.Field-aware FM(FFM)
- 5.FNN(前向神經(jīng)網(wǎng)絡(luò)在CTR中的應(yīng)用)
- 6.CCPM(卷積神經(jīng)網(wǎng)絡(luò)在CTR中的應(yīng)用)
- 7.PNN
- 8.DeepFM
- 9.其他方法:
- 12、推薦系統(tǒng)的算法中KNN和矩陣分解各自適用場(chǎng)景
- 12.1 矩陣分解
- 12.2 矩陣分解的優(yōu)劣
1. Hadoop、Spark
1.1 hadoop
Apache Hadoop軟件庫(kù)是一個(gè)允許使用簡(jiǎn)單編程模型跨計(jì)算機(jī)集群處理大型數(shù)據(jù)集合的框架,其設(shè)計(jì)的初衷是將單個(gè)服務(wù)器擴(kuò)展成上千個(gè)機(jī)器組成的一個(gè)集群為大數(shù)據(jù)提供計(jì)算服務(wù),其中每個(gè)機(jī)器都提供本地計(jì)算和存儲(chǔ)服務(wù)。
主要解決兩大核心問(wèn)題:大數(shù)據(jù)存儲(chǔ) && 大數(shù)據(jù)處理
1.2 spark
spark是一個(gè)和Hadoop一樣思路的大數(shù)據(jù)處理框架,但是Hadoop是基于磁盤(pán)計(jì)算的,而spark是基于內(nèi)存計(jì)算的。
spark相比于Hadoop的優(yōu)勢(shì)
- 速度快:Apache Spark擁有先進(jìn)的DAG調(diào)度器、查詢(xún)優(yōu)化器以及物理執(zhí)行引擎從而高性能的實(shí)現(xiàn)批處理和流數(shù)據(jù)處理
- 易用性:可以使用Java,Scala,Python,R以及SQL快速的寫(xiě)Spark應(yīng)用
- 通用性:支持SQL,流數(shù)據(jù)處理以及復(fù)雜分析,Spark擁有一系列庫(kù),包括SQL和DataFrame,用于機(jī)器學(xué)習(xí)的MLib,支持圖計(jì)算GraphX以及流計(jì)算模塊Streaming。你可以在一個(gè)應(yīng)用中同時(shí)組合這些庫(kù)。
- 支持多種模式運(yùn)行:平臺(tái)包括Hadoop,Apache Mesos,Kubernete,standalone或者云上,也可以獲取各種數(shù)據(jù)源上的數(shù)據(jù)
1.3 MapReduce
1.3.1 概念
MapReduce是一種并行可擴(kuò)展計(jì)算模型
MapReduce由JobTracker和TaskTracker組成。JobTracker負(fù)責(zé)資源管理和作業(yè)控制,TaskTracker負(fù)責(zé)任務(wù)的運(yùn)行。
1.3.1 MapReduce執(zhí)行流程
(1) 開(kāi)發(fā)人員編寫(xiě)好MapReduce program,將程序打包運(yùn)行。
(2) JobClient向JobTracker申請(qǐng)可用Job,JobTracker返回JobClient一個(gè)可用Job ID。
(3) JobClient得到Job ID后,將運(yùn)行Job所需要的資源拷貝到共享文件系統(tǒng)HDFS中。
(4) 資源準(zhǔn)備完備后,JobClient向JobTracker提交Job。
(5) JobTracker收到提交的Job后,初始化Job。
(6) 初始化完成后,JobTracker從HDFS中獲取輸入splits(作業(yè)可以該啟動(dòng)多少M(fèi)apper任務(wù))。
(7) 與此同時(shí),TaskTracker不斷地向JobTracker匯報(bào)心跳信息,并且返回要執(zhí)行的任務(wù)。
(8) TaskTracker得到JobTracker分配(盡量滿(mǎn)足數(shù)據(jù)本地化)的任務(wù)后,向HDFS獲取Job資源(若數(shù)據(jù)是本地的,不需拷貝數(shù)據(jù))。
(9) 獲取資源后,TaskTracker會(huì)開(kāi)啟JVM子進(jìn)程運(yùn)行任務(wù)
MapReduce編程主要組件
2、機(jī)器學(xué)習(xí)場(chǎng)景
搜索、廣告、垃圾過(guò)濾、安全、推薦系統(tǒng)…
3、推薦系統(tǒng)(預(yù)測(cè)電影等級(jí))
對(duì)于機(jī)器學(xué)習(xí)來(lái)說(shuō),特征是非常重要的(對(duì)ML算法影響很大)
推薦系統(tǒng):自動(dòng)的替你學(xué)習(xí)到一組很好的特征量
4、CTR(點(diǎn)擊通過(guò)率 -> 廣告)
CTR(Click-Through-Rate)即點(diǎn)擊通過(guò)率,是互聯(lián)網(wǎng)廣告常用的術(shù)語(yǔ),指網(wǎng)絡(luò)廣告(圖片廣告/文字廣告/關(guān)鍵詞廣告/排名廣告/視頻廣告等)的點(diǎn)擊到達(dá)率,即該廣告的實(shí)際點(diǎn)擊次數(shù)除以廣告的展現(xiàn)量。
CTR是衡量互聯(lián)網(wǎng)廣告效果的一項(xiàng)重要指標(biāo)
CTR指在搜索引擎中輸入關(guān)鍵詞后進(jìn)行搜索,然后按競(jìng)價(jià)等因素把相關(guān)的網(wǎng)頁(yè)按順序進(jìn)行排列出來(lái),然后用戶(hù)會(huì)選擇自己感興趣的網(wǎng)站點(diǎn)擊進(jìn)去;把一個(gè)網(wǎng)站所有搜索出來(lái)的次數(shù)作為總次數(shù),把用戶(hù)點(diǎn)擊并進(jìn)入網(wǎng)站的次數(shù)占總次數(shù)的比例叫點(diǎn)擊率。
5、SVM
5.1 svm的原理
(1)大間隔分類(lèi)超平面,(線(xiàn)性二分類(lèi))找到一條更“胖”,更健壯的分割線(xiàn)
(2)分割線(xiàn)的確定只與支持向量有關(guān)
(3)噪聲點(diǎn)是造成過(guò)擬合的主要原因
(4)分界面與支持向量的距離: 1/||w||
為什么???
5.2 SVM的核技巧
- 將特征轉(zhuǎn)換、z空間內(nèi)積計(jì)算 合起來(lái),會(huì)簡(jiǎn)化計(jì)算
6、K-means
6.1 K-means算法
K-means是聚類(lèi)算法中最簡(jiǎn)單的一種,將樣本聚類(lèi)成k個(gè)簇(cluster)
K均值是一個(gè)迭代方法:
1.簇分配
2.移動(dòng)聚類(lèi)中心
3.當(dāng)聚類(lèi)中心不再變化時(shí),聚類(lèi)完成
K值的選擇
肘部法則(統(tǒng)計(jì)不同K下的模型的性能,找到性能突然降低的那個(gè)點(diǎn)為拐點(diǎn)則為我們的K),場(chǎng)景需求
- 優(yōu)點(diǎn):算法簡(jiǎn)單、簇類(lèi)時(shí)效果好
- 缺點(diǎn):大數(shù)據(jù)計(jì)算開(kāi)銷(xiāo)大,K值難以估計(jì),隨機(jī)初始影響大
6.2、如何用 hadoop 實(shí)現(xiàn) k-means
寫(xiě)mapreduce程序?qū)崿F(xiàn)kmeans算法,我們的思路可能是這樣的
1 用一個(gè)全局變量存放上一次迭代后的質(zhì)心
2 map里,計(jì)算每個(gè)質(zhì)心與樣本之間的距離,得到與樣本距離最短的質(zhì)心,以這個(gè)質(zhì)心作為key,樣本作為value,輸出
3 reduce里,輸入的key是質(zhì)心,value是其他的樣本,這時(shí)重新計(jì)算聚類(lèi)中心,將聚類(lèi)中心put到一個(gè)全部變量t中。
4在main里比較前一次的質(zhì)心和本次的質(zhì)心是否發(fā)生變化,如果變化,則繼續(xù)迭代,否則退出。
本文的思路基本上是按照上面的步驟來(lái)做的,只不過(guò)有幾個(gè)問(wèn)題需要解決
1 Hadoop是不存在自定義的全局變量的,所以上面定義一個(gè)全局變量存放質(zhì)心的想法是實(shí)現(xiàn)不了的,所以一個(gè)替代的思路是將質(zhì)心存放在文件中
2 存放質(zhì)心的文件在什么地方讀取,如果在map中讀取,那么可以肯定我們是不能用一個(gè)mapreduce實(shí)現(xiàn)一次迭代,所以我們選擇在main函數(shù)里讀取質(zhì)心,然后將質(zhì)心set到configuration中,configuration在map和reduce都是可讀
7、naive bayes和logistic regression的區(qū)別
-
Naive Bayes是一個(gè)生成模型,在計(jì)算P(y|x)之前,先要從訓(xùn)練數(shù)據(jù)中計(jì)算P(x|y)和P(y)的概率,從而利用貝葉斯公式計(jì)算P(y|x)。Logistic Regression是一個(gè)判別模型,它通過(guò)在訓(xùn)練數(shù)據(jù)集上最大化判別函數(shù)P(y|x)學(xué)習(xí)得到,不需要知道P(x|y)和P(y)。
-
Naive Bayes是建立在條件獨(dú)立假設(shè)基礎(chǔ)之上的,設(shè)特征X含有n個(gè)特征屬性(X1,X2,…Xn),那么在給定Y的情況下,X1,X2,…Xn是條件獨(dú)立的。Logistic Regression的限制則要寬松很多,如果數(shù)據(jù)滿(mǎn)足條件獨(dú)立假設(shè),Logistic Regression能夠取得非常好的效果;當(dāng)數(shù)據(jù)不滿(mǎn)度條件獨(dú)立假設(shè)時(shí),Logistic Regression仍然能夠通過(guò)調(diào)整參數(shù)讓模型最大化的符合數(shù)據(jù)的分布,從而訓(xùn)練得到在現(xiàn)有數(shù)據(jù)集下的一個(gè)最優(yōu)模型。
-
當(dāng)數(shù)據(jù)集比較小的時(shí)候,應(yīng)該選用Naive Bayes,為了能夠取得很好的效果,數(shù)據(jù)的需求量為O(log n);當(dāng)數(shù)據(jù)集比較大的時(shí)候,應(yīng)該選用Logistic Regression,為了能夠取得很好的效果,數(shù)據(jù)的需求量為O( n)
-
Naive Bayes運(yùn)用了比較嚴(yán)格的條件獨(dú)立假設(shè),為了計(jì)算P(y|x),我們可以利用統(tǒng)計(jì)的方法統(tǒng)計(jì)數(shù)據(jù)集中P(x|y)和P(y)出現(xiàn)的次數(shù),從而求得P(x|y)和P(y)。因而其所需的數(shù)據(jù)量要小一些,為O(log n).Logistic Regression在計(jì)算時(shí),是在整個(gè)參數(shù)空間進(jìn)行線(xiàn)性搜索的,需要的數(shù)據(jù)集就更大,為O( n)
8、生成模型、判別模型
9、LDA的原理和推導(dǎo)
LDA,將高維樣本投影到具有最佳判別效果的低維矢量空間,使得降維樣本在新的子空間內(nèi)類(lèi)間距離最大,而類(lèi)內(nèi)距離最小,即在該低維空間內(nèi)有最大的可分性。
LDA 既可以實(shí)現(xiàn)降維,也能完成分類(lèi)。
PCA和LDA非常相似,最終都是解一個(gè)矩陣特征值的問(wèn)題
10、做廣告點(diǎn)擊率(CTR)預(yù)測(cè),用哪些數(shù)據(jù)什么算法
logistic regression模型是比較簡(jiǎn)單而且實(shí)用的
在訓(xùn)練方法確定后,對(duì)ctr預(yù)估起到?jīng)Q定性作用的是選用的特征
10.1 特征選擇與使用
- 做點(diǎn)擊率預(yù)估需要兩方面的數(shù)據(jù),一方面是廣告的數(shù)據(jù),另一方面是用戶(hù)的數(shù)據(jù),現(xiàn)在所有的數(shù)據(jù)都有,那么工作就是利用這兩方面的數(shù)據(jù)評(píng)估用戶(hù)點(diǎn)擊這個(gè)廣告的可能性(也就是概率)。
- 用戶(hù)的特征是比較多的:用戶(hù)的年齡,性別,地域,職業(yè),學(xué)校,手機(jī)平臺(tái)等等。
- 廣告的特征:如廣告大小,廣告文本,廣告所屬行業(yè),廣告圖片。
- 反饋的特征:如每個(gè)廣告的實(shí)時(shí)ctr,廣告跟性別交叉的ctr
1.特征選擇
2.特征處理
- 離散化特征(年齡20-30之間用1個(gè))
- 交叉
- 連續(xù)特征離散化
3.特征的過(guò)濾和修正
經(jīng)過(guò)修正后的ctr再做特征,實(shí)際線(xiàn)上效果有了比較大的提升。()
10.2 點(diǎn)擊率模型的評(píng)估方法
評(píng)估點(diǎn)擊率模型的好壞,有各種定性的或定量的、線(xiàn)上的或線(xiàn)下的方法。但是不論什么樣的評(píng)測(cè)方法,其本質(zhì)都是一樣,就是要看這個(gè)模型被點(diǎn)擊的展示與沒(méi)被點(diǎn)擊的展示之間的區(qū)別。當(dāng)然,如果能找到一個(gè)離線(xiàn)可以計(jì)算的量化指標(biāo),是再好不過(guò)了。
這樣的指標(biāo)是有一個(gè),ROC曲線(xiàn)下的面積,術(shù)語(yǔ)上稱(chēng)為AUC
10.3 LR+人工 特征工程 風(fēng)光不再
Kdd 2012年起的各屆冠軍,這些比賽型的選手,基本占據(jù)了前十的位置,從使用的模型上,基本以fm和gbdt,還有神經(jīng)網(wǎng)絡(luò)這些非線(xiàn)性模型為主。可以這么說(shuō),在比賽里,邏輯回歸加大量的人工特征工程的方案已經(jīng)很難排到比賽前列,靠邏輯回歸一個(gè)模型包打天下,已經(jīng)成為過(guò)去時(shí)
10.4、邏輯回歸
11、常見(jiàn)計(jì)算廣告點(diǎn)擊率(CTR)預(yù)估算法
11.1CTR架構(gòu)
如上圖,主要包括兩大部分:離線(xiàn)部分、在線(xiàn)部分,其中離線(xiàn)部分目標(biāo)主要是訓(xùn)練出可用模型,而在線(xiàn)部分則考慮模型上線(xiàn)后,性能可能隨時(shí)間而出現(xiàn)下降,弱出現(xiàn)這種情況,可選擇使用Online-Learning來(lái)在線(xiàn)更新模型
11.2主要算法
1.Logistic Regression
2.PLOY2:通過(guò)特征的二項(xiàng)式組合來(lái)建模
PLOY2就是通過(guò)特征的二項(xiàng)式組合來(lái)建模這類(lèi)特征的復(fù)雜的內(nèi)在關(guān)系,二項(xiàng)式部分如下圖公式
PLOY2有一個(gè)明顯的問(wèn)題,就是在實(shí)際場(chǎng)景中,大部分特征都是稀疏的,即大部分特征值為0,對(duì)這些稀疏的特征做二項(xiàng)式組合,會(huì)發(fā)現(xiàn)最后大部分特征值都是0,而在梯度更新時(shí),當(dāng)大部分feature為0時(shí),其實(shí)梯度并不更新,所以PLOY2的方法在實(shí)際場(chǎng)景中并不能比較好地解決這類(lèi)特征組合來(lái)建模更復(fù)雜線(xiàn)性關(guān)系的問(wèn)題。
3.Factorization Machine(FM)
FM的基本原理是將這些二項(xiàng)式矩陣做矩陣分解,將高維稀疏的特征向量映射到低維連續(xù)向量空間,然后根據(jù)內(nèi)積表示二項(xiàng)式特征關(guān)系:
FM通過(guò)對(duì)二項(xiàng)式稀疏進(jìn)行低維連續(xù)空間的轉(zhuǎn)換,能夠有效地解決PLOY2中存在的二次項(xiàng)系數(shù)在大規(guī)模系數(shù)數(shù)據(jù)下不更新的問(wèn)題,另外由于訓(xùn)練預(yù)測(cè)復(fù)雜度均為線(xiàn)性,PLOY2+SVM這樣邏輯下由于要計(jì)算多項(xiàng)式核,復(fù)雜度是n^2,由于FM的這幾個(gè)特征,在實(shí)際場(chǎng)景中,FM也大規(guī)模的應(yīng)用在CTR中,尤其是在數(shù)據(jù)極其系數(shù)的場(chǎng)景下,FM效果相對(duì)于其他算法有很明星的改善。
4.Field-aware FM(FFM)
FMM全程是 Field-aware FactorizationMachine,相對(duì)于FM增加了Field信息,每個(gè)特征屬于一個(gè)field
5.FNN(前向神經(jīng)網(wǎng)絡(luò)在CTR中的應(yīng)用)
6.CCPM(卷積神經(jīng)網(wǎng)絡(luò)在CTR中的應(yīng)用)
7.PNN
主要是在深度學(xué)習(xí)網(wǎng)絡(luò)中增加了一個(gè)inner/outer product layer,用來(lái)建模特征之前的關(guān)系,如下圖,Product layer部分Z是weight_feature,P部分weight_I(feature_i,feature_j)用來(lái)建模二項(xiàng)式關(guān)系
8.DeepFM
9.其他方法:
- GBDT+LR:Facebook提出利用GBDT探索海量特征空間的特征組合,減少特征工程工作量,性能很好;
- MLR:阿里媽媽提出的一種增強(qiáng)LR模型,將region的劃分考慮進(jìn)去來(lái)建模非線(xiàn)性關(guān)系,感覺(jué)類(lèi)似于深度學(xué)習(xí)的Attention機(jī)制,據(jù)說(shuō)在阿里媽媽相關(guān)業(yè)務(wù)提升很多;
**總結(jié) **
前面討論了一些CTR常見(jiàn)的方法,重點(diǎn)介紹了Factorization Machine及其變種Field-Aware Factorization Machine,還有和深度學(xué)習(xí)的結(jié)合,個(gè)人感覺(jué)PNN的邏輯比較有意思,完全使用神經(jīng)網(wǎng)絡(luò)的思維模型重塑了FM,為后面DeepFM擴(kuò)展wide and deep的工作打下基礎(chǔ),減少了wide and deep中需要的一些基本的特征工程工作(wide部分二次項(xiàng)工作),上面只是涉及到模型的算法部分,在實(shí)際中可以去探討,并不能說(shuō)明一定性能就好,另外由于架構(gòu)的限制,綜合考慮其他方面的因素,如請(qǐng)求時(shí)間、模型復(fù)雜度,也是最終是否采用相關(guān)算法的考慮因素
12、推薦系統(tǒng)的算法中KNN和矩陣分解各自適用場(chǎng)景
12.1 矩陣分解
我們從二分類(lèi)的線(xiàn)性回歸的式子可以看出,其實(shí)最終學(xué)習(xí)到的模型就是對(duì)特征X的加權(quán)求和,而我們通過(guò)數(shù)據(jù)學(xué)習(xí)到的就是加權(quán)中的權(quán)重。在實(shí)際的生產(chǎn)環(huán)境中,原始的數(shù)據(jù)或存在大量的零,尤其是在對(duì)類(lèi)別型的數(shù)據(jù)作完one-hot編碼處理后,而且未經(jīng)過(guò)特征提取的數(shù)據(jù)直接用于訓(xùn)練效果較差。因此,在推薦和廣告領(lǐng)域,我們經(jīng)常要做的就是對(duì)特征進(jìn)行組合,比較傳統(tǒng)的方法是對(duì)特征來(lái)兩兩進(jìn)行組合。但是正如前面所說(shuō)的,實(shí)際開(kāi)發(fā)環(huán)境中,特征X會(huì)有非常多的零,通過(guò)簡(jiǎn)單的兩兩組合只會(huì)生成更加大的稀疏矩陣,這對(duì)于很多機(jī)器學(xué)習(xí)模型都是致命的,尤其是以梯度下降優(yōu)化算法的模型,所以我們就想著能不能對(duì)這個(gè)高維的稀疏矩陣分解成2個(gè)低維的稠密矩陣。這便是矩陣分解的方法由來(lái);但是直接對(duì)矩陣進(jìn)行分解,隨著矩陣大小的增加,求解的復(fù)雜度增加,所以為啥不直接將模型的優(yōu)化直接考慮進(jìn)矩陣的分解中,最終得到的矩陣直接就是模型的參數(shù)。FM便是這樣的技術(shù),通過(guò)對(duì)原始數(shù)據(jù)矩陣的分解,通過(guò)迭代的方法通過(guò)求解矩陣分解后使損失函數(shù)最小情況下的權(quán)重矩陣,然后改權(quán)重矩陣便是最終模型的參數(shù)。
12.2 矩陣分解的優(yōu)劣
優(yōu)點(diǎn)是:
- 比較容易編程實(shí)現(xiàn)
- 比較低的時(shí)間和空間復(fù)雜度
- 預(yù)測(cè)的精度比較高
- 非常好的擴(kuò)展性
缺點(diǎn):
推薦的結(jié)果不具有很好的可解釋性。因?yàn)榘裷atings matrix分解成user-factor matrix和item-factor matrix,這里的factor很難用實(shí)際意義的概念來(lái)解釋。不過(guò),矩陣分解的過(guò)程相當(dāng)于一個(gè)軟聚類(lèi)的過(guò)程,得到的每一個(gè)factor相當(dāng)于每一個(gè)聚類(lèi)后的分組,只是我們沒(méi)有一個(gè)通用的方法來(lái)為這些分組命名。
但是在實(shí)際的應(yīng)用中,我們可以提取這些分組中最突出的特點(diǎn)來(lái)給這些factor命名。比如,拿新聞資訊類(lèi)的推薦系統(tǒng)來(lái)說(shuō),做好分解之后,每個(gè)factor都可以看成是一類(lèi)資訊,可以從這些資訊中提取一些特征來(lái)給這個(gè)factor命名。
總結(jié)
以上是生活随笔為你收集整理的机器学习问题总结(05)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 剑指offer_04
- 下一篇: 大数据学习(08)--Hadoop中的数