前言
在美團(tuán)商家數(shù)據(jù)中心(MDC),有超過100w的已校準(zhǔn)審核的POI數(shù)據(jù)(我們一般將商家標(biāo)示為POI,POI基礎(chǔ)信息包括:門店名稱、品類、電話、地址、坐標(biāo)等)。如何使用這些已校準(zhǔn)的POI數(shù)據(jù),挖掘出有價值的信息,本文進(jìn)行了一些嘗試:利用機(jī)器學(xué)習(xí)方法,自動標(biāo)注缺失品類的POI數(shù)據(jù)。例如,門店名稱為“好再來牛肉拉面館”的POI將自動標(biāo)注“小吃”品類。
機(jī)器學(xué)習(xí)解決問題的一般過程:
本文將按照:1)特征表示;2)特征選擇;3)基于Naive Bayes分類模型;4)分類預(yù)測,四個部分順序展開。
特征表示
我們需要先將實際問題轉(zhuǎn)換成計算機(jī)可識別的形式。對于POI而言,反應(yīng)出POI品類的一個重要特征是POI門店名稱,那么問題轉(zhuǎn)換成了根據(jù)POI門店名稱判別POI品類。POI名稱字段屬于文本特征,傳統(tǒng)的文本表示方法是基于向量空間模型(VSM模型)[1]:
空間向量模型需要一個“字典”,這個字典可以在樣本中產(chǎn)生,也可以從外部導(dǎo)入。上圖中的字典就是[好, 賓館, 海底, 拉面, 冰雪, ……. ,館]。我們對已校準(zhǔn)的POI,先利用Lucene的中文分詞工具SmartCn[2]對POI名稱做預(yù)分詞處理,提取特征詞,作為原始粗糙字典集合。
有了字典后便可以量化地表示出某個文本。先定義一個與字典長度相同的向量,向量中的每個位置對應(yīng)字典中的相應(yīng)位置的單詞。然后遍歷這個文本,對應(yīng)文本中的出現(xiàn)某個單詞,在向量中的對應(yīng)位置,填入“某個值”(即特征詞的權(quán)重,包括BOOL權(quán)重,詞頻權(quán)重,TFIDF權(quán)重)??紤]到一般的POI名稱都屬于短文本,本文采用BOOL權(quán)重。
在產(chǎn)生粗糙字典集合時,我們還統(tǒng)計了校準(zhǔn)POI中,每個品類(type_id),以及特征詞(term)在品類(type_id)出現(xiàn)的次數(shù)(文檔頻率)。分別寫入到表category_frequency和term_category_frequency,表的部分結(jié)果如下:
category_frequency表:
term_category_frequency表:
分別記:
A(i,j) = 特征詞term(i) 在品類為type_id(j)出現(xiàn)的次數(shù)count
T(j) = 品類為type_id(j)在樣本集出現(xiàn)的次數(shù)
N = 已校準(zhǔn)POI數(shù)據(jù)集的數(shù)量
這些統(tǒng)計量,將在后續(xù)的計算中發(fā)揮它們的作用。
特征選擇
現(xiàn)在,我們得到了一個“預(yù)輸入字典”:包括了所有已校準(zhǔn)POI名稱字段的特征詞,這些特征詞比如:“88”、“11”, “3”、“auyi”、“中心”、“中國”、“酒店”、“自助餐”、“拉面”等。直觀感覺,“88”、“11”, “3”、“auyi”、“中國”這些詞對判斷品類并沒有多大幫助,但“酒店”、“自助餐”、“拉面”對判斷一個POI的品類卻可能起到非常重要作用。
那么問題來了,如何挑選出有利于模型預(yù)測的特征呢?這就涉及到了特征選擇。特征選擇方法可以分成基于領(lǐng)域知識的規(guī)則方法和基于統(tǒng)計學(xué)習(xí)方法。本文使用統(tǒng)計機(jī)器學(xué)習(xí)方法,輔助規(guī)則方法的特征選擇算法,挑選有利于判斷POI品類的特征詞。
基于統(tǒng)計學(xué)習(xí)的特征選擇算法
基于統(tǒng)計學(xué)習(xí)的特征選擇算法,大體可以分成兩種:
1.基于相關(guān)性度量(信息論相關(guān))