當前位置:
首頁 > 最新 > 使用實體嵌入的結構化數據進行深度學習

使用實體嵌入的結構化數據進行深度學習

AiTechYun

編輯:Yining

嵌入(embedding)的想法來自於NLP(word2vec)

在這篇文章中,我們將討論機器學習中的兩個問題:第一個問題是關於深度學習如何在圖像和文本上表現良好,並且我們如何在表格數據中使用它。第二個問題是你在構建機器學習模型時必須問自己的問題:在這個數據集中,我如何處理分類變數?

令人驚訝的是,我們可以用同樣的答案來回答兩個問題:實體嵌入(entity embeddings)。

在許多方面,深度學習的表現都優於其他機器學習方法:圖像識別、音頻分類和自然語言處理只是其中的一些例子。這些研究領域都使用所謂的「非結構化數據」,即沒有預定義結構的數據。一般來說,這些數據也可以作為一個序列(像素、用戶行為、文本)進行組織。在處理非結構化數據時,深度學習已經成為標準。最近的一個問題是,深度學習是否也能在結構化數據上表現最好。結構化數據是以表格形式組織的數據,其中列表示不同的特性,而行代表不同的數據樣本。這類似於如何在Excel表中表示數據。目前,結構化數據集的黃金標準是梯度提升樹模型(Chen & Guestrin, 2016)。在學術文獻中,它們總是表現得最好。最近,深度學習表明,它可以與結構化數據的這些提升樹模型的性能相匹配。實體嵌入在這方面起著重要的作用。

結構化和非結構化數據


在將神經網路與結構化數據進行匹配時,實體嵌入已經被證明是成功的。例如,在Kaggle(大數據競賽平台)的競賽中,預測計程車行駛距離的獲勝的解決方案使用實體嵌入來處理每一輛車的分類元數據。同樣,德國大型超市Rossmann預測商店銷售的第三解決方案使用了一種比第一和第二解決方案更複雜的方法。該團隊通過使用一個簡單的前饋神經網路和實體嵌入來實現這種成功。這包括超過1000個類別的變數,比如store id。

簡而言之,嵌入指的是向量的類別表示。讓我們來看看它是如何在短句中奏效的:

『Deep learning is deep』

我們可以用一個向量來表示每個單詞,所以「deep」這個詞就變成了像是[0.20, 0.82, 0.45, 0.67]這樣的變數。在實踐中,一個人可以用像1 2 3 1這樣的整數替換單詞,並使用查找表來查找與每個整數相關的向量。這種做法在自然語言處理中非常常見,並且也被用於包括行為序列的數據。實體嵌入指的是在分類變數上使用這一原則,即一個分類變數的每一個類別都由一個向量表示。讓我們快速回顧一下在機器學習中處理分類變數的兩種常用方法。

獨熱編碼:創建二進位的子特性,如word_deep, word_learning, word_is。這些是屬於該數據點的類別為1,其他的則為0。因此,對於「deep」這個詞來說,特性word_deep將是1,特性word_learning和word_is等將是0。

標籤編碼:像我們在前面的例子中那樣分配整數,所以deep變成1,learning變成2等等。這個方法適用於基於樹型結構的方法,但不適用於線性模型,因為它意味著所賦值的順序。

實體嵌入基本上是將標籤編碼方法提升到下一個級別,不只是將一個整數賦值給一個類別,而是整個向量。這個向量可以任意大小,必須由研究人員指定。下面列出了3個實體嵌入的優點。

1. 實體嵌入解決了獨熱編碼的缺點。具有多個類別的獨熱編碼變數會導致非常稀疏的向量,這在計算上效率很低,而且很難達到優化。標籤編碼也解決了這個問題,但是只能被基於樹型結構的模型使用。

2. 嵌入式數據提供了不同類別之間距離的信息。使用嵌入的美妙之處是,在神經網路訓練過程中,分配給每個類別的向量也被訓練。因此,在訓練過程的最後,我們會得到一個代表每一個類別的向量。這些經過訓練的嵌入式設備可以被可視化,從而為每個類別提供深入的見解。在Rossmann的銷售預測任務中,德國各州的可視化嵌入顯示了類似的各州的地理位置的集群。儘管這些地理信息都沒有提供給模型。

3. 經過訓練的嵌入式設備可以在非深度學習模型中被保存和使用。例如,每個月都可以訓練分類特性的嵌入,並保存嵌入的特性。這些嵌入可以被用來訓練一個隨機森林或者一個梯度提升樹模型,通過載入被學習的嵌入物來進行分類特性。


嵌入大小指的是表示每個類別的向量的長度,並且可以為每個類別特性設置。與神經網路中超參數的優化過程類似,對於選擇嵌入的大小沒有嚴格的規則。在計程車距離預測任務中,研究人員使用了每個特性為10的嵌入大小。這些特性有非常不同的維度,範圍從7(每周的天數)到57106(客戶id)。為每個類別選擇相同的嵌入大小是一種簡單而透明的方法,但可能不是最優的方法。

對於Rossmann商店的銷售預測任務,研究人員選擇了1到M(類別的數量)-1的值,最大的嵌入大小為10。例如,每周的一天(7個值)的嵌入大小為6,而store id(1115個值)的嵌入大小為10。然而,沒有明確的規則來選擇1和m-1之間的大小。

Kaggle的前主席和首席科學家Jeremy Howard重建了Rossmann競爭的解決方案,並提出了以下解決方案來選擇嵌入尺寸:

# c is the amount of categories per feature

embedding_size = (c+1) // 2

if embedding_size > 50: embedding_size = 50


嵌入的優點是可以將所學到的嵌入進行可視化,以顯示哪些類別是相似的。最流行的方法是t-SNE,它是一種用於維數減少的技術,可以很好地利用高維性來可視化數據集。讓我們用兩個快速的可視化嵌入例子來結束這篇文章。以下是家得寶(美國家居連鎖店)產品及其所屬類別的可視化嵌入。類似的產品,如烤箱、冰箱和微波爐,彼此非常接近。對於像充電器、電池和鑽頭這樣的產品也是如此。

家得寶產品的嵌入

另一個例子是在這篇文章中提到的Rossmann銷售預測任務中,德國各州的狀態嵌入。在嵌入中這些相鄰的州接近於它們的地理位置。

德國各州嵌入的例子


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 ATYUN訂閱號 的精彩文章:

人工智慧人才到底有多稀缺?
演算法能預測精神分裂症嗎?

TAG:ATYUN訂閱號 |