【導(dǎo)讀】本文是數(shù)據(jù)科學(xué)家Rutger Ruizendaal撰寫的一篇技術(shù)博客,文章提出深度學(xué)習(xí)在非結(jié)構(gòu)數(shù)據(jù)中有不錯的表現(xiàn),當前通過實體嵌入也可以使之在結(jié)構(gòu)化數(shù)據(jù)中大放異彩。具體講解了如何利用深度學(xué)習(xí)訓(xùn)練結(jié)構(gòu)化數(shù)據(jù)的實體嵌入,并且討論了Entity Embeddings的各種優(yōu)勢:稠密向量、計算類別距離等。文末介紹了用t-SNE進行Embeddings可視化的兩個實例。接下來讓我們來看一下Entity Embeddings的獨特之處吧。
利用實體嵌入(Entity Embeddings)對結(jié)構(gòu)化數(shù)據(jù)進行深度學(xué)習(xí)
向您展示深度學(xué)習(xí)可以處理結(jié)構(gòu)化數(shù)據(jù)并且如何實現(xiàn)
作者首頁:
http://www.rutgerruizendaal.com
嵌入的想法來自他們在NLP(word2vec)中的單詞學(xué)習(xí),這是從Aylien獲得的圖像
在本博客中,我們將著重介紹機器學(xué)習(xí)中兩個不斷重復(fù)出現(xiàn)的問題:第一個問題: 深度學(xué)習(xí)在處理文本和圖像數(shù)據(jù)時的表現(xiàn)的不錯, 但深度學(xué)習(xí)該怎么處理列表(tabular)數(shù)據(jù)呢? 第二個問題是在我們在構(gòu)建機器學(xué)習(xí)模型的時候時常問的問題: 我改怎么處理數(shù)據(jù)集里的類別變量? 令人驚訝的是,我們可以用相同的答案回答這兩個問題:實體嵌入(Entity Embedding)。
深度學(xué)習(xí)在許多方面都優(yōu)于其他機器學(xué)習(xí)方法,圖像識別,音頻分類和自然語言處理僅僅是眾多例子中的一部分。 這些研究領(lǐng)域都使用所謂的“非結(jié)構(gòu)化數(shù)據(jù)”,即沒有預(yù)定義結(jié)構(gòu)的數(shù)據(jù)。 深度學(xué)習(xí)已成為處理非結(jié)構(gòu)化數(shù)據(jù)的標準。但是深度學(xué)習(xí)是否也可以在結(jié)構(gòu)化數(shù)據(jù)上有好的表現(xiàn)? 結(jié)構(gòu)化數(shù)據(jù)是以表格格式組織的數(shù)據(jù),其中列表示不同的特征,行表示不同的數(shù)據(jù)樣本。這與數(shù)據(jù)在Excel工作表中的表現(xiàn)方式類似。 目前,結(jié)構(gòu)化數(shù)據(jù)集的黃金標準是梯度增強樹(GBDT)模型(Gradient Boosted Tree models , Chen&Guestrin,2016)。 特別的, 這一模型在Kaggle比賽以及學(xué)術(shù)文獻中一直表現(xiàn)最好。 近期, 深度學(xué)習(xí)已經(jīng)證明它在結(jié)構(gòu)化數(shù)據(jù)上可以達到這些GBDT模型的性能。 實體嵌入在此扮演重要角色。
結(jié)構(gòu)化數(shù)據(jù)VS非結(jié)構(gòu)化數(shù)據(jù)
▌實體嵌入
在結(jié)構(gòu)化數(shù)據(jù)上運用神經(jīng)網(wǎng)絡(luò)時,實體嵌入表現(xiàn)的很好。 例如,在Kaggle競賽”預(yù)測出租車的距離問題”上獲勝的解決方案,就是使用實體嵌入來處理每次乘坐的分類元數(shù)據(jù)(de Brébissonet al.,2015)。 同樣,預(yù)測Rossmann藥店銷售任務(wù)的第三個解決方案使用了比前兩個方案更簡單的方法: 使用簡單的前饋神經(jīng)網(wǎng)絡(luò), 再加上類別變量的實體嵌入。它包括超過1000個類別的變量,如商店ID(Guo&Berkahn,2016)。
如果這是您第一次閱讀有關(guān)嵌入(embeddings)的內(nèi)容,我建議您先閱讀這篇文章(https://towardsdatascience.com/deep-learning-4-embedding-layers-f9a02d55ac12)。簡而言之,嵌入(embeddings)是把類別表示成向量。 讓我們來演示一下下面這個短句是如何工作的:
“Deep learning is deep”
我們可以用向量來表示每個單詞,因此“deep”這個單詞變成了[0.20,0.82,0.45,0.67]。 在實踐中,人們會用像1 2 3 1這樣的整數(shù)來替換單詞,并使用查找表來查找鏈接到每個整數(shù)的矢量。 這種做法在自然語言處理中非常常見,還能用于處理包含行為序列的數(shù)據(jù),如在線用戶的瀏覽記錄。實體嵌入是指在分類變量上使用此原則,其中分類變量的每個類別都由向量表示。 讓我們快速回顧一下在機器學(xué)習(xí)中處理分類變量的兩種常用方法。
One-hot編碼:創(chuàng)建二進制子特征,如word_deep,word_learning,word_is。 對于屬于該數(shù)據(jù)點的類別,其值為1,其他值為0。 所以,對于“deep”這個詞,特征word_deep將是1,并且word_learning,word_is等將是0。
標簽編碼(label encoding):像之前的例子中那樣分配id,deep變?yōu)?,learning變?yōu)?等。這種方法適用于基于樹的方法,但不適用于線性模型,因為它分配id的時候, 隱含了次序。
實體嵌入基本上將標簽編碼方法帶到下一個層次,它不是將一個整數(shù)分配給一個類別,而是整個向量。 這個向量可以是任何大小,必須由研究人員指定。這么做有幾個優(yōu)點:
1. 實體嵌入解決了one-hot編碼的缺點。如果類別過的的話one-hot編碼會非常稀疏,導(dǎo)致計算不準確,并且使得難以達到最優(yōu)。標簽編碼也解決了這個問題,但只能用于基于樹的模型。
2. 嵌入提供有關(guān)不同類別之間距離的信息。 使用嵌入的優(yōu)點在于,分配給每個類別的向量也在神經(jīng)網(wǎng)絡(luò)的訓(xùn)練期間被訓(xùn)練。 因此,在訓(xùn)練過程結(jié)束時,我們最終會得到一個代表每個類別的向量。 這些經(jīng)過訓(xùn)練的嵌入(embeddings)可以被可視化,以提供對每個類別的解釋。 在Rossmann銷售預(yù)測任務(wù)中,德國國家的可視化嵌入顯示了與各州地理位置相似的集群,即使這個地理信息沒有提供給模型。
3. 訓(xùn)練好的嵌入(embeddings)可以保存并用于非深度學(xué)習(xí)模型。 例如,你可以一個月訓(xùn)練一次嵌入(embeddings)的分類特征, 然后保存嵌入(embeddings)。 之后,只需要加載學(xué)習(xí)到的分類特征的嵌入(embeddings),就可以使用這些嵌入(embeddings)來訓(xùn)練隨機森林或梯度增強樹模型。
▌選擇嵌入(embeddings)的大小(size)
嵌入(embeddings)大小是指表示每個類別的向量的維度。 類似于神經(jīng)網(wǎng)絡(luò)中超參數(shù)的調(diào)整過程,選擇嵌入(embeddings)的大小沒有硬性規(guī)則。 在”出租車距離預(yù)測”任務(wù)中,研究人員使用每個特征的嵌入尺寸大小為10。 這些特征具有從7(一周中的某一天)到57106(客戶端ID)的不同維度。 為每個類別選擇相同的embeddings大小是一種簡單明了的方法,但可能不是最優(yōu)方法。
對于Rossmann商店銷售預(yù)測任務(wù),研究人員選擇1和M-1之間的值(M為類別數(shù)量),最大embeddings大小為10.例如,一周中的某天(7個值)的嵌入大小為6, 而商店ID(1115個值)的嵌入大小為10.但是,對于選擇1和M-1之間大小,作者沒有給出明確的規(guī)則。
Jeremy Howard重建了Rossmann競賽的解決方案,并提出了以下解決方案來選擇嵌入尺寸:
▌可視化嵌入(Embeddings)
嵌入(Embeddings)的一個優(yōu)點是已經(jīng)學(xué)習(xí)的Embeddings可以被可視化以顯示哪些類別彼此相似。 最流行的可視化方法是t-SNE,它是一種降維技術(shù),特別適用于高維數(shù)據(jù)集的可視化。讓我們看一下兩個可視化嵌入例子。以下是可視化嵌入(Embeddings)家得寶公司的產(chǎn)品及其該產(chǎn)品所屬類別。 相似的產(chǎn)品,如烤箱、冰箱和微波爐非常接近。 對于充電器、電池和鉆頭等產(chǎn)品也是如此。
經(jīng)過學(xué)習(xí)的家用產(chǎn)品的嵌入(Embeddings)
另一個例子是從Rossmann銷售預(yù)測任務(wù)中學(xué)習(xí)的德國各個州的Embeddings。Embeddings中之間的鄰近程度與它們的地理位置相似。
▌深度學(xué)習(xí)系列的其余部分:
1、Setting up AWS & Image Recognition
2、Convolutional Neural Networks
3、More on CNNs & Handling Overfitting
4、Why You Need to Start Using Embedding Layers
鏈接:
https://medium.com/towards-data-science/deep-learning-1-1a7e7d9e3c07
https://medium.com/towards-data-science/deep-learning-2-f81ebe632d5c
https://medium.com/towards-data-science/deep-learning-3-more-on-cnns-handling-overfitting-2bd5d99abe5d
https://towardsdatascience.com/deep-learning-4-embedding-layers-f9a02d55ac12
▌參考文獻
Chen, T., & Guestrin, C. (2016, August). Xgboost: A scalable tree
boosting system. In Proceedings of the 22nd acm sigkdd international
conference on knowledge discovery and data mining (pp. 785–794).
ACM.
De Brébisson, A., Simon, é., Auvolat, A., Vincent, P., & Bengio, Y.
(2015). Artibcial neural networks applied to taxi destination
prediction. arXiv preprint arXiv:1508.00021.
Guo, C., & Berkhahn, F. (2016). Entity embeddings of categorical
variables. arXiv preprint arXiv:1604.06737.
參考文獻:
https://towardsdatascience.com/deep-learning-structured-data-8d6a278f3088
聯(lián)系客服