上周,我去洛杉磯參加了一個機(jī)器學(xué)習(xí)的meetup,一位主講是eHarmony公司(美國最大的婚戀交友網(wǎng)站之一,通過性格測試來進(jìn)行婚戀匹配的模式——百度百科)的Jon Morra,他著重分享了機(jī)器學(xué)習(xí)(machine learning)在他們的在線交友平臺中的應(yīng)用。機(jī)器學(xué)習(xí)技術(shù)應(yīng)用的深度和廣度給我留下了深刻的印象,他們居然能夠應(yīng)用到大多數(shù)人都能遇到的問題——尋找愛情上!
核心問題
在線約會的核心問題有太多的可挑選對象。為了防止用戶無所適從,我們需要提供智能匹配。簡單來說,你需要評估一下不同人們之間的“約會相容性(dating compatibility)”矩陣,從而建立一些匹配,這些匹配能夠最大可能的使得約會成功。
如果這個愛情距離矩陣很小,你可以輕松的算出匹配,然后就能夠給每一個人一個最佳匹配。比如,你可以用匈牙利算法來解決這一分配問題。然而,當(dāng)我們處理數(shù)以百萬計(jì)的用戶量的時候,計(jì)算愛情距離矩陣就不現(xiàn)實(shí)了,并且我們的匹配也不是完美的,所以我們需要提供多個匹配。
John提供了一個“三級跳”的方法來解決這些問題:
- 根據(jù)相容性分級來減少潛在匹配池。相容性分級由用戶提交的心理自測結(jié)果以及性取向、年齡、所在地等構(gòu)成。
- 基于統(tǒng)計(jì)數(shù)據(jù)、文本功能、視覺功能等來計(jì)算潛在匹配之間的相似性(affinity)。
- 基于相似性,就可以找到最佳的匹配,然后通過日常電子郵件發(fā)送給用戶。
相容性分級
第一部分是最簡單的:根據(jù)一些調(diào)查和從心理學(xué)的角度來看,人與人之間或多或少是具有相容性的。相容性分級既包括單人的人格特質(zhì)也包含了人與人之間的二元特質(zhì)——也就是相似性(similarity)。
相容性結(jié)果也使用了性別偏好、年齡段和所在地等因素進(jìn)行了過濾。第一步通過硬閾值消除了大量的不兼容的匹配。這樣就把愛情距離矩陣轉(zhuǎn)換成了更加易于處理的不含0元素的矩陣。我私下揣摩,這樣也可能導(dǎo)致創(chuàng)建一些小分組,比如基于所在地的分組等,這些分組可以為后續(xù)的并行運(yùn)算做準(zhǔn)備。
相似性計(jì)算
相似性分值是兩個用戶愿意交流的概率。這個分值是基于邏輯回歸模型訓(xùn)練得到的。訓(xùn)練數(shù)據(jù)包括了一些日志,這里面記載了兩個用戶是否曾經(jīng)給對方傳遞過個人資料。訓(xùn)練通過Vowpal Wabbit來完成,這是一個聽起來挺可怕,但是功能強(qiáng)大的機(jī)器學(xué)習(xí)包,可以在TB級別上做線性和邏輯回歸模型的在線訓(xùn)練。
你的特征關(guān)系到你的生死;eHarmony公司采用經(jīng)典的特征,如網(wǎng)站使用率統(tǒng)計(jì)數(shù)據(jù)、文本特征(我猜測是bag-of-words模型)和照片數(shù)量等,這些數(shù)據(jù)從成對的用戶中提取得到。我認(rèn)為訓(xùn)練矩陣也包括了相似的特征,比如相容性等級。有趣的是,最近eHarmony公司也涉足了照片分析。
John首先展示了使用Viola-Jones探測器提取圖像特征(比如臉部區(qū)/圖片區(qū))的例子。無處不在的Viola-Jones檢測器采用級聯(lián)分類器存根來檢測一副圖像中是否包含了人臉,它在OpenCV中有具體實(shí)現(xiàn)。這個分類器使用了類Haar特征,這種特征可以使用積分圖像進(jìn)行高效的計(jì)算,同時,分類器使用AdaBoost算法進(jìn)行訓(xùn)練。
Face Parts檢測器
然后,John展示了使用Face Parts檢測器進(jìn)行檢測的一些結(jié)果,這部分內(nèi)容我不懂,但是效果還是相當(dāng)驚人的。Face Parts 包含的思想是,一個人臉可以看出是由多個部件構(gòu)成的,這些部件可以放置到一個樹形結(jié)構(gòu)中。部分匹配(可以看成一個圖形的一部分如果識別成眉毛,那么這種識別可以用一個分值來表示)通過計(jì)算模板和特征集的高斯直方圖(HOG)的點(diǎn)積得到。