LDA

美团网有大量的商户数据和团购单数据,Topic Model能不能在这方面找到一点应用呢?本文主要介绍用LDA在这方面的应用.


1 语料

选取商户的描述信息、品牌名等内容,以及这个商户下所有的团购单的描述、菜单等信息.把这些信息聚合在一作为商户的Document.最终有1.75M个商户,每个商户的Document平均70个word,词表大小36K. 词表示例:

度假区:尤物:幕后:环顾:1940年:美眉:天涯海角:海棠:红毛丹:过夜:与世隔绝:居民区:核心:组成部分:马场:后顾之忧:顶:渡假:蛋塔:佣:光度:习习:丝丝入扣:连缀:螺蛳:热气球:失望:以北:不畅:科学技术:地铺:行人:细碎:谱写:
转乘:丙烯酸:任教:倒忙:轻工:身段:兰陵:徽:避免:白衣:血肠:江口:飘落:力创:农贸:枕芯:相识:片片:耐用:主持:顿觉:海航:自助:20亿:小葱:表现力:精炼:千百年:王中王:理性:运输:浓缩:朵朵:潮牌:名画:顽皮:白羊座:古建:
精修:甸:纳豆:停息:鲫鱼:竹筏:漆:瑜伽:讨论:直至:无所不包:兵团:挽救:鲜果:哑巴:亭:牛仔裤:原班:河蟹:出租汽车:肝胆:维拉:平凡人:习得:纯度:窗口:异香:一刻:专修:俄语:干柴:豪杰:加长:干红酒:上流:结缔组织:河大:
熨斗:热狗:文教:青葱:尖锐:调养:东河:麦麸:充足:做作:脆饼:混合型:外层:世茂:久负盛名:潮水:拥有:长丰:赐予:白萝卜:叠彩:症:嗅觉:欧式:燕京:创面:生产厂:爽滑:含有:咸阳:18日:香槟色:莱:货源:龙城:潮起潮落:
舒筋活络:华兴:重拳:阳春:顶棚:面团:声控:秦岭:会客厅:找回:再见:候鸟:汉斯:应有:鸭脖子:月光:鱼花:恒基:普宁:汉白玉:齐名:幸福:浙:六年:酱香型:并列:诚恳:涌现:玉米油:腊八:角膜:盛大:糖心:有人:短途:闽北:祖庭:
溪谷:提档:萝卜丝:看病:清热解毒:氮:储:禾雀花:兰馨:蘸取:旺盛:双人间:布衣:力争上游:暂住证:茶道:准:醪糟:格陵兰:电磁:文德斯:身居:精工:人满为患:培根:脊椎动物:甜面酱:咸淡:旭日:外观:美罗城:肉感:花生油:
人才观:瓶盖:盲:菇类:都灵:因应:莱茵:吾爱:将令:何其:涉外:光彩:成长:铁棍:糖醇:肋条:乳鸽:冰梅:鱼疗:大自然:方案:交汇:力学:槿:东部:飞鸟:喜气洋洋:侨鸿:代表者:鲑鱼:评估师:看法:扶正:五角场:占优势:宜人:
大好:便秘:客舍:吉野家:锦上添花:窍:高薪:罗庄:古人:玻尿酸:糖衣:十一:输:讴歌:午饭:桑巴:才华:白天:精诚:聊:饮食:操作性:驰名中外:口香:雍容:全球通:馆子:赌神:家居服:卓著:玥:开怀:干裂:细节:103个:珍珍:
淦河:火箭:教练员:求变:虎尾:中段:舞阳:帕克:元子:卖座:深刻:眷恋:拍案叫绝:博弈:黄飞鸿:盲点:配色:肃穆:科威特:儒雅:显得:桂林:格桑:预售:粘土:德普:巨鹿:悠游:花果山:银杏

2 训练

用Spark 1.3 里的LDA做训练,设置K=300个Topic,迭代N=300次,超参数选取 $\alpha=50/K, \beta=0.01$.

3 结果

$\phi$,即$p(w|z)$,topic的词分布,结果如下(只显示了top 30个word):

土豆:0.2458;荤菜:0.2244;素菜:0.2242;青菜:0.1397;豆腐:0.0909;丸子:0.0708;青菜萝卜:0.0011;肝素:0.0004;豆腐干:0.0000;金针菇:0.0000;纸巾:0.0000;鱼丸子:0.0000;菜料:0.0000;粉条:0.0000;套菜:0.0000;煳:0.0000;仔虾:0.0000;馒头:0.0000;豆芽:0.0000;卷:0.0000;花菜:0.0000;碗筷:0.0000;锅底:0.0000;鸡脯:0.0000;冬瓜:0.0000;肉丸:0.0000;粉皮:0.0000;腰花:0.0000;猪肝:0.0000;餐巾:0.0000
美容:0.2885;美体:0.2513;美发:0.2385;美甲:0.0727;化妆:0.0187;爱美:0.0162;美甲师:0.0079;妆:0.0076;指甲:0.0072;护理:0.0071;工作室:0.0070;指尖:0.0069;彩妆:0.0055;美睫:0.0053;沙龙:0.0041;女子:0.0038;手足:0.0035;睫毛:0.0031;双手:0.0031;丽人:0.0028;绣:0.0026;嫁接:0.0023;纹:0.0020;美化:0.0019;名媛:0.0019;手部:0.0018;妍:0.0017;纤纤:0.0017;新娘:0.0015;修饰:0.0015
汽车:0.0637;保养:0.0510;车:0.0393;洗:0.0272;清洁:0.0155;车主:0.0121;美容:0.0120;清洗:0.0117;爱车:0.0112;维修:0.0099;用户:0.0092;驾:0.0085;养护:0.0085;高质:0.0083;线:0.0078;平台:0.0077;电子:0.0076;合作:0.0075;整合:0.0073;金融:0.0072;卡:0.0070;全方位:0.0069;优惠:0.0067;安全:0.0066;开通:0.0061;广泛:0.0061;深入:0.0057;核心:0.0054;宽:0.0054;年审:0.0053
宗旨:0.2092;良好:0.1462;科学:0.0938;至上:0.0911;原则:0.0637;规范:0.0478;信誉:0.0387;以人为本:0.0384;高效:0.0382;树立:0.0303;生命:0.0257;遵循:0.0225;力争:0.0152;诚实:0.0142;机制:0.0128;奉行:0.0116;方针:0.0104;诚心:0.0086;守信:0.0077;锐意进取:0.0067;13年:0.0054;主动:0.0045;形象:0.0043;有序:0.0043;待人:0.0040;社会效益:0.0035;至诚:0.0033;公平:0.0030;取胜:0.0028;经济效益:0.0024
自助:0.1713;自助餐:0.0873;单人:0.0603;午餐:0.0536;晚餐:0.0528;最多:0.0432;用餐:0.0420;限量:0.0335;综合类:0.0243;畅饮:0.0199;午:0.0187;周一:0.0173;烤肉:0.0138;周日:0.0134;周六:0.0132;周五:0.0128;热菜:0.0123;肉类:0.0112;付:0.0096;时段:0.0090;圣女果:0.0080;档:0.0077;糕点:0.0075;周末:0.0074;夜宵:0.0073;白酒:0.0066;周四:0.0060;晚市:0.0060;西点:0.0056;次日:0.0055

$\beta$,即$p(z|d)$, 商户的topic分布,结果如下所示:

1571873 198:0.06310082716669282;242:0.05046437222487283;286:0.05044248731825661;293:0.03502732171259233;111:0.033878672675442784;53:0.03378919182264838;18:0.03376680201932518;174:0.01975856097929003;266:0.019717137886086967;72:0.018424505637900858;147:0.01697522561124139;197:0.01696783977973679;120:0.01696040915168309;166:0.016958136137809023;267:0.01695751491656262;199:0.01693433000544572;116:0.016898517432571154;280:0.01689749983557617;233:0.01687333497392593;237:0.01683538471228805;269:0.01681173316170438;3:0.01680982549853652;68:0.01678370410380807;14:0.016751611744288596;9:0.01669732019903681;207:0.016674834633898895;194:0.01659515904305863;76:0.01650302623251824;289:0.016480551497600866;241:0.016166197385222396;62:0.01616566608490178;131:0.016141417571297622;127:0.015991135086737926;173:0.015958073483853273;8:0.015651072184413042;77:0.015605422509004903;184:0.015583928102491549;230:0.01536939472552592;261:0.015133013381280485;292:0.015011781998402312;32:0.014497961014899653;16:0.014352161635820026;137:0.013954258770494703;129:0.013922107451026856;170:0.013728808631892792;47:0.008484541371755487;244:0.008484489604371365;258:0.007898151557871828;126:0.007738173755340452;202:0.004678833668675306;20:0.004237716855448629;224:0.004198616500400396;74:0.0026069297729131836;278:0.0025874431223251327;232:0.002208819949165345;24:0.0014392287394138174;222:0.0013316003969851388;263:0.0012548999170589146;287:0.001151013529391716;264:0.0011252120812861883;22:0.0010297084440181762;37:9.378422861446874E-4;15:9.05200879313025E-4;57:8.835604438391054E-4;295:8.661197741029695E-4;218:8.085806696335742E-4;217:7.713587930239273E-4;7:7.012726696499481E-4;180:6.999996824973601E-4;70:6.962930687516791E-4;51:6.794621995057763E-4;250:6.447043635326424E-4;0:6.346112447174566E-4;42:6.239866534820998E-4;182:5.943023677029493E-4;117:5.366502073849082E-4;201:5.358918859688477E-4;294:5.279573081007997E-4;136:4.53418098843422E-4;10:4.4559322749626975E-4;49:3.2464355740442167E-4;156:3.1431472445770655E-4;28:3.101425895450049E-4;188:3.044984312625636E-4;100:2.933692077731368E-4;4:2.763879017531247E-4;291:2.4488088129639193E-4;296:2.3855814231626214E-4;130:2.1376988740437423E-4;118:2.044473959406073E-4;259:1.9820118002683934E-4;71:1.9397747755646078E-4;154:1.8437729415472784E-4;248:1.7071591534367588E-4;190:1.4998471340256422E-4;272:1.3179031071783111E-4;73:1.2508590698363648E-4;46:1.1445241925986257E-4;43:1.112414010670694E-4;128:8.969277454860407E-5;150:8.664989268095795E-5;17:8.052679934316407E-5;135:7.977075180785736E-5;175:6.63089270448145E-5;26:6.364192723876188E-5;115:6.214239178107387E-5;123:5.8646272227463425E-5;94:5.736855594820027E-5;141:5.32462745744633E-5;236:4.977831999213004E-5;34:4.808009295302888E-5;66:4.744520886983889E-5;67:4.6738821339479026E-5;56:4.4500376202542206E-5;101:3.776261558532109E-5;277:2.6695958113825655E-5;30:2.3118870128560704E-5;12:2.117871407619031E-5;251:1.743108051424695E-5;60:5.483988766755746E-6;221:5.394047555955542E-6;108:5.379680772577623E-6;103:5.280858272639848E-6;80:5.243441758198723E-6;85:5.090042054202639E-6;179:4.971172309565401E-6;257:4.800246657843656E-6;40:4.7030256857263795E-6;58:4.651183017783404E-6;139:4.539512210494617E-6;213:4.527136915550838E-6;106:4.411474621598286E-6;270:4.29605282066654E-6;121:4.262470964912306E-6;29:4.189968143567413E-6;178:4.187948629223413E-6;145:4.167770078427428E-6;255:4.130048888665926E-6;262:4.03551796589976E-6;177:3.948564500855709E-6;158:3.9399969394971215E-6;25:3.90978717323122E-6;274:3.89838108129971E-6;183:3.893102314504959E-6;133:3.804371964399319E-6;148:3.788529361460263E-6;93:3.7547626634688393E-6;82:3.7502713668267825E-6;279:3.7104952829724657E-6;31:3.666479938540797E-6;6:3.6595683715812787E-6;33:3.642514914797144E-6;275:3.5955996857813806E-6;78:3.5948904640334775E-6;276:3.5428829341074234E-6;83:3.494255441331636E-6;167:3.4520871222476886E-6;283:3.407197059717303E-6;153:3.394020255512473E-6;64:3.3907800418035345E-6;169:3.3876775753415134E-6;281:3.3809146604663445E-6;298:3.3720996348386105E-6;69:3.3564076830960563E-6;165:3.2851006436590425E-6;193:3.1158988906266368E-6;214:3.1122989819664564E-6;63:3.112068022251708E-6;125:3.1031184525630143E-6;79:3.0732179548009965E-6;65:3.0588469518861705E-6;225:3.0554446982070756E-6;92:3.0388602223380104E-6;142:3.0242908491797524E-6;75:2.983506030926081E-6;206:2.933839754702192E-6;172:2.898064365689083E-6;288:2.8955992095969954E-6;204:2.8908487640815665E-6;282:2.8488005743583952E-6;252:2.8458935880757774E-6;86:2.7993891397256226E-6;50:2.7875546397143665E-6;157:2.783671047841825E-6;234:2.7570651424346607E-6;152:2.7476071485192205E-6;181:2.7300485033938424E-6;61:2.721356992999252E-6;134:2.700785129628927E-6;38:2.680831984627177E-6;44:2.674949403236368E-6;110:2.669776089031988E-6;256:2.6432805318313984E-6;124:2.6353104419373657E-6;105:2.6022072129072288E-6;196:2.5791367309913297E-6;163:2.554816403173095E-6;185:2.5541335916032567E-6;220:2.491728593952108E-6;5:2.4689416447317747E-6;249:2.465847960963649E-6;19:2.44841650283243E-6;284:2.4415729640554834E-6;215:2.4378868041984373E-6;191:2.4324628540386714E-6;104:2.4230691025059473E-6;140:2.418857469175509E-6;41:2.392720729641264E-6;21:2.3757489424088826E-6;219:2.3379642684031172E-6;55:2.3358483432953454E-6;299:2.3334913017159354E-6;48:2.3326520012470003E-6;88:2.3209110308759414E-6;189:2.3143129795865853E-6;11:2.2861958216310787E-6;297:2.2819128721111174E-6;96:2.2718075856066284E-6;203:2.2527382439095973E-6;107:2.2472247482730418E-6;159:2.2440192996825254E-6;54:2.2036974777174494E-6;59:2.2005302145233034E-6;143:2.1915036081947304E-6;144:2.162395410429018E-6;254:2.1552309910615132E-6;216:2.1507412387427394E-6;208:2.1244245022760295E-6;164:2.073066815233686E-6;95:2.0724917586662656E-6;109:2.061802914467201E-6;210:2.023753468947374E-6;238:2.008359683025998E-6;151:2.0075510512050485E-6;132:1.9909816221290282E-6;98:1.9884677979580435E-6;155:1.975351808400043E-6;122:1.972116251827544E-6;260:1.954756996051634E-6;247:1.951563614609353E-6;84:1.9447889494827186E-6;246:1.94392765592623E-6;223:1.9373429815864204E-6;102:1.9172046548340363E-6;212:1.8925863435421195E-6;146:1.8681294259753657E-6;81:1.8673481917834272E-6;171:1.8651850146344656E-6;91:1.8636646394800542E-6;271:1.8129652020925714E-6;99:1.802647500708839E-6;45:1.7893843851405185E-6;35:1.7679621959095269E-6;39:1.7607310408469674E-6;138:1.7480208031375834E-6;119:1.7480110808364834E-6;231:1.7303385268277479E-6;240:1.7096487149094534E-6;168:1.7075765703122075E-6;149:1.674370343091349E-6;290:1.6737483695975627E-6;113:1.6482879367320036E-6;243:1.6234457083566311E-6;87:1.6092103707852215E-6;209:1.6055916419530442E-6;186:1.6043259911343589E-6;13:1.5947793034201702E-6;27:1.5693442901841885E-6;195:1.5467918624217918E-6;235:1.542089424923289E-6;200:1.5152639192645307E-6;52:1.51270285742989E-6;268:1.5116274065968045E-6;253:1.5043956559321299E-6;1:1.487852529749492E-6;228:1.4805721424218783E-6;89:1.468860484261437E-6;192:1.453086645899788E-6;211:1.430518242558325E-6;227:1.427338722716154E-6;265:1.3990760399766486E-6;160:1.3802501864249288E-6;285:1.3456066514215289E-6;229:1.3366043817579083E-6;90:1.3047427511532185E-6;2:1.285578249358117E-6;273:1.2617665061068411E-6;205:1.2573001812732377E-6;23:1.2538279442795979E-6;161:1.1663639222455474E-6;97:1.124862535561268E-6;226:1.08596353437779E-6;162:1.0585610363666215E-6;187:1.0495909990740622E-6;239:9.621346867686745E-7;245:9.252950882157465E-7;36:7.965780482794979E-7;176:7.71549969106647E-7;114:7.032467644419921E-7;112:3.7828448113696795E-7
5675062161:0.17910102155518873;139:0.09094591428506468;272:0.0896229695172606;121:0.08864911635868908;251:0.08845849389061983;87:0.08760167589588554;101:0.0849316397512933;291:0.08359235529834798;26:0.0688327116799406;202:0.025157585682795375;224:0.022584960244136615;74:0.014069780554508287;278:0.01395223115871229;285:0.00897781926177029;24:0.007781288761754734;160:0.005356000284062154;273:0.004595449121850801;0:0.003451508945230544;221:0.00264387889033126;176:0.0026273298545810156;10:0.002427314399450298;195:0.0019130842468090268;100:0.0016069442220121859;46:0.0015927666876909283;215:0.0015706058200572288;15:0.0014429336164007319;136:0.0013990302359087692;287:0.0011662540367800172;137:0.0011543198612955679;55:9.793710501926805E-4;156:7.688335289284723E-4;135:4.800590438143655E-4;127:3.207068980161698E-4;236:3.154908660952827E-4;217:2.67306304606677E-4;7:2.521552821646981E-4;154:2.280665653427601E-4;57:2.1685303492347243E-4;115:2.0820953401390127E-4;167:2.0492768258262604E-4;117:1.2551423095668923E-4;232:8.936034932855264E-5;28:7.728838450535323E-5;103:7.375807032454639E-5;288:7.3420916100328E-5;141:7.050907971275728E-5;80:7.030899290121506E-5;108:6.905448490585477E-5;257:6.695304290076834E-5;213:6.550981741550754E-5;296:6.542137224738119E-5;85:6.45961765514958E-5;106:6.454596789499519E-5;17:6.437500532577395E-5;60:5.958967373339585E-5;225:5.694811731902277E-5;152:5.654386617379395E-5;179:5.6220096403961617E-5;58:5.599601474930221E-5;145:5.592737224123296E-5;178:5.557961266950627E-5;22:5.5217719892103194E-5;40:5.444768894073259E-5;29:5.394076744673604E-5;183:5.307091830051579E-5;270:5.245764321837079E-5;262:5.23502372170639E-5;148:5.168196981511915E-5;158:5.088059320700487E-5;25:5.0353677006504084E-5;165:4.948356935002614E-5;169:4.9431535995506925E-5;193:4.910167151155633E-5;3:4.8942730264782605E-5;284:4.8646633579072766E-5;125:4.863168036581471E-5;277:4.847379615791979E-5;255:4.8336932461448725E-5;63:4.822111097750944E-5;82:4.799864261612762E-5;83:4.7713363951229955E-5;76:4.723057547754824E-5;93:4.687696018580885E-5;189:4.644302621386392E-5;276:4.615792543183665E-5;33:4.610889753147536E-5;31:4.596186049641239E-5;86:4.59030279539266E-5;177:4.5118834901650484E-5;153:4.4951028502392724E-5;274:4.4866980817649565E-5;65:4.446662629087222E-5;126:4.413268120096499E-5;214:4.409892391057145E-5;172:4.365486385927288E-5;281:4.3557307954895644E-5;218:4.335952375947915E-5;256:4.302726630930536E-5;6:4.2990269778413266E-5;185:4.2705097032309615E-5;279:4.243850689081532E-5;75:4.2180716616232595E-5;64:4.217361276950816E-5;140:4.1531234683048635E-5;78:4.0964706643176424E-5;163:4.0725059179026893E-5;175:4.064830597168066E-5;246:3.91720543964347E-5;283:3.9145588240739944E-5;298:3.888861123359619E-5;197:3.880154361579598E-5;110:3.878440501654892E-5;206:3.870783277909159E-5;144:3.8679776014532256E-5;188:3.8455223306322425E-5;204:3.818901197317239E-5;244:3.776945701555474E-5;47:3.776942232954938E-5;181:3.776655749266507E-5;105:3.749849064197823E-5;79:3.744101588609169E-5;9:3.7302729328944436E-5;241:3.730227804364348E-5;191:3.6832720162367494E-5;234:3.6612376118265975E-5;50:3.6080582438919435E-5;44:3.5950776449832794E-5;282:3.577229168149271E-5;69:3.559623621004585E-5;233:3.522219741923833E-5;142:3.4894971992259156E-5;124:3.489299193315409E-5;143:3.487442353184777E-5;275:3.433173049160296E-5;92:3.427917298143938E-5;95:3.381534447339506E-5;157:3.3671398522872685E-5;159:3.366522085251937E-5;107:3.356776028020464E-5;196:3.348481211819482E-5;5:3.335629889978106E-5;12:3.327797749531629E-5;118:3.314760063422294E-5;220:3.313999054842041E-5;77:3.310605055706572E-5;54:3.304072061206365E-5;81:3.288838499678558E-5;104:3.2555372518074834E-5;151:3.251681896597972E-5;147:3.223247476218216E-5;219:3.2167771743133366E-5;48:3.206660275375286E-5;299:3.204373967473755E-5;208:3.1887341485219274E-5;16:3.187863679021623E-5;254:3.183715619222087E-5;19:3.1707778424650435E-5;21:3.115351556270139E-5;53:3.086293825871877E-5;11:3.057081529476308E-5;289:3.0551693093703327E-5;164:3.0527581569791275E-5;238:3.05150908097002E-5;66:3.032694234139351E-5;68:3.025802708862813E-5;216:3.003262226236462E-5;230:2.9989202513188196E-5;242:2.9885444313497984E-5;96:2.98013296792735E-5;59:2.9771293721096548E-5;210:2.9734909592190122E-5;184:2.96094967859626E-5;173:2.9602516904714468E-5;38:2.958889693595514E-5;72:2.956743743612239E-5;155:2.9423898800166197E-5;247:2.933720566904367E-5;116:2.9309222831145717E-5;261:2.929882673617675E-5;14:2.9249997605053847E-5;42:2.9220355436076586E-5;269:2.912880705026776E-5;249:2.8935446739913034E-5;134:2.8827747564644957E-5;61:2.8821441265804777E-5;237:2.877377727826863E-5;174:2.8634624296701477E-5;32:2.8421405182843245E-5;294:2.802650837912377E-5;194:2.799808630955939E-5;122:2.7979237673369732E-5;295:2.764580386406119E-5;8:2.7532602974097535E-5;260:2.745489488690976E-5;132:2.737314336673773E-5;223:2.7173225444346983E-5;109:2.7011424234744776E-5;203:2.6773199526478712E-5;231:2.6562415665552004E-5;120:2.635180529161307E-5;146:2.630073626947278E-5;199:2.6199092926386683E-5;113:2.615070991267015E-5;252:2.6100008499091538E-5;170:2.596184497374527E-5;84:2.5665658731808696E-5;99:2.5499346215422675E-5;131:2.5413461684940653E-5;259:2.529134814765715E-5;166:2.524759910450239E-5;149:2.5127323723344167E-5;89:2.4846485039605925E-5;35:2.4822318922440473E-5;52:2.446086614975598E-5;267:2.4328667821532867E-5;297:2.4255471315059294E-5;45:2.401657795804883E-5;209:2.3741284541478953E-5;293:2.3376929122901153E-5;271:2.3368114882298933E-5;98:2.33650864820764E-5;212:2.331030551916844E-5;171:2.3306432452620297E-5;290:2.3233822549151698E-5;39:2.3165511840855218E-5;133:2.31444218891994E-5;119:2.3127073467079677E-5;263:2.310295155352018E-5;73:2.2744542860513572E-5;200:2.2711810323121937E-5;268:2.25509451525669E-5;186:2.2536514519949266E-5;243:2.2510088961506276E-5;94:2.250458834082116E-5;1:2.2388768418293025E-5;253:2.2355337434257967E-5;41:2.2312940798408595E-5;129:2.203767929131406E-5;67:2.199274509683022E-5;91:2.1921849096348522E-5;266:2.1810767771737154E-5;13:2.1742387878294756E-5;88:2.1703960386769865E-5;102:2.1682679303083375E-5;49:2.1600154272950873E-5;227:2.1276541626665438E-5;192:2.0972995769869855E-5;20:2.0921250080893255E-5;150:2.056071880964021E-5;198:2.04382059844351E-5;56:2.0420979565989596E-5;62:2.0133582594107216E-5;250:1.994097059917906E-5;258:1.9745908746079592E-5;286:1.970022615649504E-5;27:1.966292983310643E-5;23:1.903706565206534E-5;34:1.870351956776699E-5;205:1.8483834358673757E-5;235:1.832037505589143E-5;265:1.8223502667043397E-5;90:1.8167843744184997E-5;182:1.816761240496644E-5;280:1.8060707461226005E-5;2:1.8006632361753354E-5;97:1.794685688942832E-5;168:1.7714543897070445E-5;201:1.728579773179444E-5;229:1.7258224749536032E-5;111:1.7241297014315117E-5;51:1.7150370262184482E-5;190:1.7086079396887592E-5;180:1.7006721267019393E-5;18:1.6915055878333817E-5;130:1.682992630287276E-5;43:1.679065972594493E-5;240:1.6583407002423467E-5;226:1.6576711709416924E-5;162:1.6436476333582373E-5;228:1.6386452919545536E-5;207:1.6288990893529146E-5;71:1.5366306478030374E-5;138:1.515094062483355E-5;128:1.485104025853352E-5;211:1.4721788267842181E-5;292:1.432336862160927E-5;123:1.4117322191285653E-5;239:1.388295472181779E-5;37:1.3529416888907436E-5;264:1.2986807000447874E-5;245:1.2784734128294634E-5;70:1.2706579690334504E-5;187:1.2615687480676025E-5;222:1.1717038029278885E-5;36:1.165003057304858E-5;30:1.112437264624958E-5;114:1.0707430870896873E-5;248:7.640082717009552E-6;4:6.566880863372135E-6;112:6.351194959679467E-6

4 Inference

把用户最近一段时间购买过的团购单的描述信息、菜单等信息抽取出来当作用户的Document,用上面的训练结果来做Inference.由于Spark 1.3里还没有LDA的Inference,自己实现了一个,代码如下:

import org.apache.spark.broadcast.Broadcast

class GibbsInference(val iters: Int)
  extends Serializable{

  def inference(alpha: Double, phiBC: Broadcast[Array[Array[Double]]], doc: Array[Int]) : Array[Double] = {
    val phi = phiBC.value
    val K = phi.length
    val nd = Array.ofDim[Int](K)
    var ndsum = 0

    val N = doc.length
    val z = Array.ofDim[Int](N)
    for (n <- Range(0, N)) {
      val topic = (Math.random() * K).toInt
      z(n) = topic
      nd(topic) += 1
    }

    ndsum = N
    for (i <- Range(0, iters)) {
      for (n <- Range(0, N)) {
        var topic = z(n)
        nd(topic) -= 1
        ndsum -= 1

        val p = Array.ofDim[Double](K)
        for (k <- Range(0, K)) {
          p(k) = (nd(k) + alpha) / (ndsum + K * alpha) * phi(k)(doc(n))
        }

        for (k <- Range(1, K)) {
          p(k) += p(k - 1)
        }

        val u = Math.random() * p(K - 1)
        var flag = true
        for (i <- Range(0, K)) {
          if (flag && u < p(i)) {
            topic = i
            flag = false
          }
        }

        nd(topic) += 1
        ndsum += 1
        z(n) = topic
      }
    }
    val theta = Array.ofDim[Double](K)
    for (k <- Range(0, K)) {
      theta(k) = (nd(k) + alpha) / (ndsum + K * alpha)
    }

    theta
  }
}

用户的Inference结果示例如下:

FA94CD8D2F73460C2D6233AE5468BE44362A0348CDEAC3C577C8369047A2B29363:0.07189655172413792;65:0.020172413793103444;154:0.020172413793103444;200:0.020172413793103444;0:0.0029310344827586207;1:0.0029310344827586207;2:0.0029310344827586207;3:0.0029310344827586207;4:0.0029310344827586207;5:0.0029310344827586207;6:0.0029310344827586207;7:0.0029310344827586207;8:0.0029310344827586207;9:0.0029310344827586207;10:0.0029310344827586207;11:0.0029310344827586207;12:0.0029310344827586207;13:0.0029310344827586207;14:0.0029310344827586207;15:0.0029310344827586207;16:0.0029310344827586207;17:0.0029310344827586207;18:0.0029310344827586207;19:0.0029310344827586207;20:0.0029310344827586207;21:0.0029310344827586207;22:0.0029310344827586207;23:0.0029310344827586207;24:0.0029310344827586207;25:0.0029310344827586207;26:0.0029310344827586207;27:0.0029310344827586207;28:0.0029310344827586207;29:0.0029310344827586207;30:0.0029310344827586207;31:0.0029310344827586207;32:0.0029310344827586207;33:0.0029310344827586207;34:0.0029310344827586207;35:0.0029310344827586207;36:0.0029310344827586207;37:0.0029310344827586207;38:0.0029310344827586207;39:0.0029310344827586207;40:0.0029310344827586207;41:0.0029310344827586207;42:0.0029310344827586207;43:0.0029310344827586207;44:0.0029310344827586207;45:0.0029310344827586207;46:0.0029310344827586207;47:0.0029310344827586207;48:0.0029310344827586207;49:0.0029310344827586207;50:0.0029310344827586207;51:0.0029310344827586207;52:0.0029310344827586207;53:0.0029310344827586207;54:0.0029310344827586207;55:0.0029310344827586207;56:0.0029310344827586207;57:0.0029310344827586207;58:0.0029310344827586207;59:0.0029310344827586207;60:0.0029310344827586207;61:0.0029310344827586207;62:0.0029310344827586207;64:0.0029310344827586207;66:0.0029310344827586207;67:0.0029310344827586207;68:0.0029310344827586207;69:0.0029310344827586207;70:0.0029310344827586207;71:0.0029310344827586207;72:0.0029310344827586207;73:0.0029310344827586207;74:0.0029310344827586207;75:0.0029310344827586207;76:0.0029310344827586207;77:0.0029310344827586207;78:0.0029310344827586207;79:0.0029310344827586207;80:0.0029310344827586207;81:0.0029310344827586207;82:0.0029310344827586207;83:0.0029310344827586207;84:0.0029310344827586207;85:0.0029310344827586207;86:0.0029310344827586207;87:0.0029310344827586207;88:0.0029310344827586207;89:0.0029310344827586207;90:0.0029310344827586207;91:0.0029310344827586207;92:0.0029310344827586207;93:0.0029310344827586207;94:0.0029310344827586207;95:0.0029310344827586207;96:0.0029310344827586207;97:0.0029310344827586207;98:0.0029310344827586207;99:0.0029310344827586207;100:0.0029310344827586207;101:0.0029310344827586207;102:0.0029310344827586207;103:0.0029310344827586207;104:0.0029310344827586207;105:0.0029310344827586207;106:0.0029310344827586207;107:0.0029310344827586207;108:0.0029310344827586207;109:0.0029310344827586207;110:0.0029310344827586207;111:0.0029310344827586207;112:0.0029310344827586207;113:0.0029310344827586207;114:0.0029310344827586207;115:0.0029310344827586207;116:0.0029310344827586207;117:0.0029310344827586207;118:0.0029310344827586207;119:0.0029310344827586207;120:0.0029310344827586207;121:0.0029310344827586207;122:0.0029310344827586207;123:0.0029310344827586207;124:0.0029310344827586207;125:0.0029310344827586207;126:0.0029310344827586207;127:0.0029310344827586207;128:0.0029310344827586207;129:0.0029310344827586207;130:0.0029310344827586207;131:0.0029310344827586207;132:0.0029310344827586207;133:0.0029310344827586207;134:0.0029310344827586207;135:0.0029310344827586207;136:0.0029310344827586207;137:0.0029310344827586207;138:0.0029310344827586207;139:0.0029310344827586207;140:0.0029310344827586207;141:0.0029310344827586207;142:0.0029310344827586207;143:0.0029310344827586207;144:0.0029310344827586207;145:0.0029310344827586207;146:0.0029310344827586207;147:0.0029310344827586207;148:0.0029310344827586207;149:0.0029310344827586207;150:0.0029310344827586207;151:0.0029310344827586207;152:0.0029310344827586207;153:0.0029310344827586207;155:0.0029310344827586207;156:0.0029310344827586207;157:0.0029310344827586207;158:0.0029310344827586207;159:0.0029310344827586207;160:0.0029310344827586207;161:0.0029310344827586207;162:0.0029310344827586207;163:0.0029310344827586207;164:0.0029310344827586207;165:0.0029310344827586207;166:0.0029310344827586207;167:0.0029310344827586207;168:0.0029310344827586207;169:0.0029310344827586207;170:0.0029310344827586207;171:0.0029310344827586207;172:0.0029310344827586207;173:0.0029310344827586207;174:0.0029310344827586207;175:0.0029310344827586207;176:0.0029310344827586207;177:0.0029310344827586207;178:0.0029310344827586207;179:0.0029310344827586207;180:0.0029310344827586207;181:0.0029310344827586207;182:0.0029310344827586207;183:0.0029310344827586207;184:0.0029310344827586207;185:0.0029310344827586207;186:0.0029310344827586207;187:0.0029310344827586207;188:0.0029310344827586207;189:0.0029310344827586207;190:0.0029310344827586207;191:0.0029310344827586207;192:0.0029310344827586207;193:0.0029310344827586207;194:0.0029310344827586207;195:0.0029310344827586207;196:0.0029310344827586207;197:0.0029310344827586207;198:0.0029310344827586207;199:0.0029310344827586207;201:0.0029310344827586207;202:0.0029310344827586207;203:0.0029310344827586207;204:0.0029310344827586207;205:0.0029310344827586207;206:0.0029310344827586207;207:0.0029310344827586207;208:0.0029310344827586207;209:0.0029310344827586207;210:0.0029310344827586207;211:0.0029310344827586207;212:0.0029310344827586207;213:0.0029310344827586207;214:0.0029310344827586207;215:0.0029310344827586207;216:0.0029310344827586207;217:0.0029310344827586207;218:0.0029310344827586207;219:0.0029310344827586207;220:0.0029310344827586207;221:0.0029310344827586207;222:0.0029310344827586207;223:0.0029310344827586207;224:0.0029310344827586207;225:0.0029310344827586207;226:0.0029310344827586207;227:0.0029310344827586207;228:0.0029310344827586207;229:0.0029310344827586207;230:0.0029310344827586207;231:0.0029310344827586207;232:0.0029310344827586207;233:0.0029310344827586207;234:0.0029310344827586207;235:0.0029310344827586207;236:0.0029310344827586207;237:0.0029310344827586207;238:0.0029310344827586207;239:0.0029310344827586207;240:0.0029310344827586207;241:0.0029310344827586207;242:0.0029310344827586207;243:0.0029310344827586207;244:0.0029310344827586207;245:0.0029310344827586207;246:0.0029310344827586207;247:0.0029310344827586207;248:0.0029310344827586207;249:0.0029310344827586207;250:0.0029310344827586207;251:0.0029310344827586207;252:0.0029310344827586207;253:0.0029310344827586207;254:0.0029310344827586207;255:0.0029310344827586207;256:0.0029310344827586207;257:0.0029310344827586207;258:0.0029310344827586207;259:0.0029310344827586207;260:0.0029310344827586207;261:0.0029310344827586207;262:0.0029310344827586207;263:0.0029310344827586207;264:0.0029310344827586207;265:0.0029310344827586207;266:0.0029310344827586207;267:0.0029310344827586207;268:0.0029310344827586207;269:0.0029310344827586207;270:0.0029310344827586207;271:0.0029310344827586207;272:0.0029310344827586207;273:0.0029310344827586207;274:0.0029310344827586207;275:0.0029310344827586207;276:0.0029310344827586207;277:0.0029310344827586207;278:0.0029310344827586207;279:0.0029310344827586207;280:0.0029310344827586207;281:0.0029310344827586207;282:0.0029310344827586207;283:0.0029310344827586207;284:0.0029310344827586207;285:0.0029310344827586207;286:0.0029310344827586207;287:0.0029310344827586207;288:0.0029310344827586207;289:0.0029310344827586207;290:0.0029310344827586207;291:0.0029310344827586207;292:0.0029310344827586207;293:0.0029310344827586207;294:0.0029310344827586207;295:0.0029310344827586207;296:0.0029310344827586207;297:0.0029310344827586207;298:0.0029310344827586207;299:0.0029310344827586207
CDFE4D12BC476D39874D192F49137EB7DCDC6653CFDB39EB1DABE38B4DBDE684    63:0.13829545454545455;262:0.047386363636363636;78:0.03602272727272727;238:0.03602272727272727;29:0.02465909090909091;43:0.02465909090909091;79:0.013295454545454544;87:0.013295454545454544;110:0.013295454545454544;117:0.013295454545454544;122:0.013295454545454544;169:0.013295454545454544;195:0.013295454545454544;200:0.013295454545454544;237:0.013295454545454544;247:0.013295454545454544;275:0.013295454545454544;0:0.001931818181818182;1:0.001931818181818182;2:0.001931818181818182;3:0.001931818181818182;4:0.001931818181818182;5:0.001931818181818182;6:0.001931818181818182;7:0.001931818181818182;8:0.001931818181818182;9:0.001931818181818182;10:0.001931818181818182;11:0.001931818181818182;12:0.001931818181818182;13:0.001931818181818182;14:0.001931818181818182;15:0.001931818181818182;16:0.001931818181818182;17:0.001931818181818182;18:0.001931818181818182;19:0.001931818181818182;20:0.001931818181818182;21:0.001931818181818182;22:0.001931818181818182;23:0.001931818181818182;24:0.001931818181818182;25:0.001931818181818182;26:0.001931818181818182;27:0.001931818181818182;28:0.001931818181818182;30:0.001931818181818182;31:0.001931818181818182;32:0.001931818181818182;33:0.001931818181818182;34:0.001931818181818182;35:0.001931818181818182;36:0.001931818181818182;37:0.001931818181818182;38:0.001931818181818182;39:0.001931818181818182;40:0.001931818181818182;41:0.001931818181818182;42:0.001931818181818182;44:0.001931818181818182;45:0.001931818181818182;46:0.001931818181818182;47:0.001931818181818182;48:0.001931818181818182;49:0.001931818181818182;50:0.001931818181818182;51:0.001931818181818182;52:0.001931818181818182;53:0.001931818181818182;54:0.001931818181818182;55:0.001931818181818182;56:0.001931818181818182;57:0.001931818181818182;58:0.001931818181818182;59:0.001931818181818182;60:0.001931818181818182;61:0.001931818181818182;62:0.001931818181818182;64:0.001931818181818182;65:0.001931818181818182;66:0.001931818181818182;67:0.001931818181818182;68:0.001931818181818182;69:0.001931818181818182;70:0.001931818181818182;71:0.001931818181818182;72:0.001931818181818182;73:0.001931818181818182;74:0.001931818181818182;75:0.001931818181818182;76:0.001931818181818182;77:0.001931818181818182;80:0.001931818181818182;81:0.001931818181818182;82:0.001931818181818182;83:0.001931818181818182;84:0.001931818181818182;85:0.001931818181818182;86:0.001931818181818182;88:0.001931818181818182;89:0.001931818181818182;90:0.001931818181818182;91:0.001931818181818182;92:0.001931818181818182;93:0.001931818181818182;94:0.001931818181818182;95:0.001931818181818182;96:0.001931818181818182;97:0.001931818181818182;98:0.001931818181818182;99:0.001931818181818182;100:0.001931818181818182;101:0.001931818181818182;102:0.001931818181818182;103:0.001931818181818182;104:0.001931818181818182;105:0.001931818181818182;106:0.001931818181818182;107:0.001931818181818182;108:0.001931818181818182;109:0.001931818181818182;111:0.001931818181818182;112:0.001931818181818182;113:0.001931818181818182;114:0.001931818181818182;115:0.001931818181818182;116:0.001931818181818182;118:0.001931818181818182;119:0.001931818181818182;120:0.001931818181818182;121:0.001931818181818182;123:0.001931818181818182;124:0.001931818181818182;125:0.001931818181818182;126:0.001931818181818182;127:0.001931818181818182;128:0.001931818181818182;129:0.001931818181818182;130:0.001931818181818182;131:0.001931818181818182;132:0.001931818181818182;133:0.001931818181818182;134:0.001931818181818182;135:0.001931818181818182;136:0.001931818181818182;137:0.001931818181818182;138:0.001931818181818182;139:0.001931818181818182;140:0.001931818181818182;141:0.001931818181818182;142:0.001931818181818182;143:0.001931818181818182;144:0.001931818181818182;145:0.001931818181818182;146:0.001931818181818182;147:0.001931818181818182;148:0.001931818181818182;149:0.001931818181818182;150:0.001931818181818182;151:0.001931818181818182;152:0.001931818181818182;153:0.001931818181818182;154:0.001931818181818182;155:0.001931818181818182;156:0.001931818181818182;157:0.001931818181818182;158:0.001931818181818182;159:0.001931818181818182;160:0.001931818181818182;161:0.001931818181818182;162:0.001931818181818182;163:0.001931818181818182;164:0.001931818181818182;165:0.001931818181818182;166:0.001931818181818182;167:0.001931818181818182;168:0.001931818181818182;170:0.001931818181818182;171:0.001931818181818182;172:0.001931818181818182;173:0.001931818181818182;174:0.001931818181818182;175:0.001931818181818182;176:0.0019318931818181818182;160:0.001931818181818182;161:0.001931818181818182;162:0.001931818181818182;163:0.001931818181818182;164:0.001931818181818182;165:0.001931818181818182;166:0.001931818181818182;167:0.001931818181818182;168:0.001931818181818182;170:0.001931818181818182;171:0.001931818181818182;172:0.001931818181818182;173:0.001931818181818182;174:0.001931818181818182;175:0.001931818181818182;176:0.0019318931818181818182;160:0.001931818181818182;161:0.001931818181818182;162:0.001931818181818182;163:0.001931818181818182;164:0.001931818181818182;165:0.001931818181818182;166:0.001931818181818182;167:0.00193181818181818001931818181818182;204:0.001931818181818182;205:0.001931818181818182;206:0.001931818181818182;207:0.001931818181818182;208:0.001931818181818182;209:0.001931818181818182;210:0.001931818181818182;211:0.001931818181818182;212:0.001931818181818182;213:0.001931818181818182;214:0.001931818181818182;215:0.001931818181818182;216:0.001931818181818182;217:0.001931818181818182;218:0.001931818181818182;219:0.001931818181818182;220:0.001931818181818182;221:0.001931818181818182;222:0.001931818181818182;223:0.001931818181818182;224:0.001931818181818182;225:0.001931818181818182;226:0.001931818181818182;227:0.001931818181818182;228:0.001931818181818182;229:0.001931818181818182;230:0.001931818181818182;231:0.001931818181818182;232:0.001931818181818182;233:0.001931818181818182;234:0.001931818181818182;235:0.001931818181818182;236:0.001931818181818182;239:0.001931818181818182;240:0.001931818181818182;241:0.001931818181818182;242:0.001931818181818182;243:0.001931818181818182;244:0.001931818181818182;245:0.001931818181818182;246:0.001931818181818182;248:0.001931818181818182;249:0.001931818181818182;250:0.001931818181818182;251:0.001931818181818182;252:0.001931818181818182;253:0.001931818181818182;254:0.001931818181818182;255:0.001931818181818182;256:0.001931818181818182;257:0.001931818181818182;258:0.001931818181818182;259:0.001931818181818182;260:0.001931818181818182;261:0.001931818181818182;263:0.001931818181818182;264:0.001931818181818182;265:0.001931818181818182;266:0.001931818181818182;267:0.001931818181818182;268:0.001931818181818182;269:0.001931818181818182;270:0.001931818181818182;271:0.001931818181818182;272:0.001931818181818182;273:0.001931818181818182;274:0.001931818181818182;276:0.001931818181818182;277:0.001931818181818182;278:0.001931818181818182;279:0.001931818181818182;280:0.001931818181818182;281:0.001931818181818182;282:0.001931818181818182;283:0.001931818181818182;284:0.001931818181818182;285:0.001931818181818182;286:0.001931818181818182;287:0.001931818181818182;288:0.001931818181818182;289:0.001931818181818182;290:0.001931818181818182;291:0.001931818181818182;292:0.001931818181818182;293:0.001931818181818182;294:0.001931818181818182;295:0.001931818181818182;296:0.001931818181818182;297:0.001931818181818182;298:0.001931818181818182;299:0.001931818181818182

5 应用

有了商户的topic分布和用户的topic分布,就可以算商户-用户之间的相似度了,这个相似度特征很容易用在搜索、推荐、广告的排序中.相似度的计算可以采用Jensen-Shannon distance,计算公式如下:

其中 $ M=\frac {1}{2} (X+Y) $,$X$ 表示商户的topic分布,$Y$表示用户的topic分布, $D_{KL}$表示KL散度.