
去年夏天,我在簡(jiǎn)書寫下第一篇文章。
去年夏天,我在一家互聯(lián)網(wǎng)公司成為一名數(shù)據(jù)挖掘工程師。
我喜歡看書寫字,也喜歡分析數(shù)據(jù)。
夜晚,突然假想,如果我是簡(jiǎn)書數(shù)據(jù)挖掘工程師,我會(huì)怎么做?
采用自上而下,目標(biāo)先行的思考策略。我分析數(shù)據(jù)的最終目的是什么?是增加網(wǎng)站和app的訪問(wèn)量,提高用戶的滿意度。
怎么增加訪問(wèn)量?一方面可以加大宣傳力度,另一方面可以改進(jìn)算法,引導(dǎo)用戶發(fā)掘更多有意思的文章。怎么提高用戶的滿意度?對(duì)于讀者來(lái)說(shuō),是看到的文章符合自己的口味。對(duì)于筆者來(lái)說(shuō),是盡可能公平地推送文章。
可以改進(jìn)的點(diǎn)有哪些?至少有三大模塊可以優(yōu)化:首頁(yè)個(gè)性化推薦,專題內(nèi)部排序,定向搜索。
1、首頁(yè)個(gè)性化推薦
目前首頁(yè)可以看成是3大模塊,包括上方占屏面積最大的宣傳欄,下方的推薦列表,手機(jī)中間或電腦左邊的7日熱門、30熱門、新上榜。簡(jiǎn)書從多種角度給文章排序,以不同的方式呈現(xiàn)給用戶。這既是其優(yōu)勢(shì),也是其劣勢(shì)。簡(jiǎn)書把選擇權(quán)交給用戶,用戶自行選擇感興趣的模塊,靈活度較大。但是用戶需要瀏覽的文章數(shù)目增多,篩選的成本增大。簡(jiǎn)書不僅意味著極簡(jiǎn)寫作,也應(yīng)該爭(zhēng)取做到極簡(jiǎn)閱讀。在國(guó)內(nèi),簡(jiǎn)書確實(shí)是我見(jiàn)過(guò)的最好的寫作平臺(tái),但未見(jiàn)得是最好的閱讀平臺(tái)。
對(duì)于首頁(yè)推薦,我建議分兩次升級(jí)。第一步可以將看過(guò)的文章權(quán)重降低。進(jìn)一步改動(dòng)是多特征融合,用整體排序代替分組排序。
為什么要進(jìn)行第一次升級(jí)?因?yàn)槲野l(fā)現(xiàn)讀者明明已經(jīng)看過(guò)了某些文章,簡(jiǎn)書還一個(gè)勁地給他們推送同一篇文章,這就會(huì)降低用戶體驗(yàn)。就像亞馬遜一般不會(huì)給用戶推薦買過(guò)的書,而是推薦相似的書,同一個(gè)道理。
為什么要進(jìn)行第二次升級(jí)?追求極簡(jiǎn)的閱讀,讓用戶不用費(fèi)心選擇,不會(huì)被信息潮海所淹沒(méi),使得簡(jiǎn)書推薦的東西正好是他們想要的。這對(duì)數(shù)據(jù)挖掘工程師的要求比較高,短期內(nèi)難以得到完美解決。需要采取迭代的方式,一步一步優(yōu)化模型。
比如先構(gòu)建一個(gè)簡(jiǎn)單的模型,設(shè)立基線。
目標(biāo):?jiǎn)蝹€(gè)用戶對(duì)單篇文章的滿意度。
原始數(shù)據(jù):文章的屬性,筆者和讀者的信息,筆者和讀者在簡(jiǎn)書上的行為。
基本特征:文章粒度的的喜歡數(shù)和評(píng)論數(shù),筆者自帶的關(guān)注數(shù)和喜歡數(shù),文章的類別和用戶偏好的相似度,讀者對(duì)文章的顯示評(píng)價(jià)和隱式評(píng)價(jià)。
應(yīng)用比較廣泛的模型:邏輯斯特回歸和gbdt。
后續(xù)迭代優(yōu)化也可以從目標(biāo)、數(shù)據(jù)、特征、模型四個(gè)方面入手。
目標(biāo):可以設(shè)立多個(gè)評(píng)價(jià)指標(biāo),用不同的模型分別優(yōu)化各項(xiàng)指標(biāo),最后再進(jìn)行模型融合,給出一個(gè)總分。
數(shù)據(jù):可以采集更多的數(shù)據(jù),也可以進(jìn)行數(shù)據(jù)預(yù)處理(例如數(shù)據(jù)清洗和數(shù)據(jù)轉(zhuǎn)換)。前者擴(kuò)大了數(shù)據(jù)的量,后者提高了數(shù)據(jù)的質(zhì)。
特征:特征選擇和特征提取。前者是從一大堆候選特征中篩選出較優(yōu)的特征集合(降維),后者是對(duì)原有特征進(jìn)行重新組合。
模型:針對(duì)不同的評(píng)價(jià)指標(biāo),建立適合的模型。分析數(shù)據(jù),調(diào)研模型類型和模型參數(shù)。
2、專題內(nèi)部排序
專題內(nèi)部排序分為三個(gè)模塊,分別是最新收入,最新評(píng)論,熱門。目前這三塊的排序算法非常簡(jiǎn)單粗暴,有很大的提升空間。
對(duì)于最新收入?yún)^(qū),一般是評(píng)審?fù)ㄟ^(guò)了,就立馬在這個(gè)模塊出現(xiàn)。這樣,一篇文章的瀏覽量就會(huì)受到發(fā)布時(shí)間段和同時(shí)期其他作品數(shù)量的影響??梢愿倪M(jìn)的措施是,將新收錄的作品放到一個(gè)隊(duì)列中,每隔一段時(shí)間放出一個(gè)作品,利用不同時(shí)間段的流量監(jiān)控,使得每個(gè)作品在這個(gè)區(qū)的曝光率盡可能相等。
對(duì)于評(píng)論區(qū),只要文章有新的評(píng)論,該文章在收錄的所有專題中的排名就立馬靠前。這不是很合理,推薦兩種改進(jìn)策略。第一,產(chǎn)生新評(píng)論時(shí),在各個(gè)專題的排名不要同時(shí)上升,中間最好有個(gè)隨機(jī)時(shí)間差。第二,目前文章在評(píng)論區(qū)的曝光機(jī)會(huì)約等于評(píng)論次數(shù),這樣加劇了兩極分化,建議重新構(gòu)建模型,例如曝光機(jī)會(huì)=In(a+評(píng)論次數(shù))+b,初期可以人工設(shè)置參數(shù),后期可以通過(guò)模型訓(xùn)練獲取參數(shù)。
對(duì)于熱門區(qū),目前采取的是策略是按喜歡數(shù)排序。我覺(jué)得在這一塊至少要加上時(shí)間衰減策略,最好再聯(lián)合其他特征,給每篇文章一個(gè)更合理的分?jǐn)?shù)。
3、定向搜索
簡(jiǎn)書在定向搜索這塊做得比較差,很難滿足用戶需求,還好用戶使用搜索的次數(shù)不是很多,基本上都是推送什么看什么。
如果我來(lái)做定向搜索這一塊,我會(huì)分三步走。
第一步,構(gòu)建基線模型,采用BM25算法,即直接計(jì)算搜索關(guān)鍵詞與文章內(nèi)容的相關(guān)性。
第二步,聯(lián)合多個(gè)特征,用機(jī)器學(xué)習(xí)算法對(duì)前n名的結(jié)果進(jìn)行重新排序。特征可能是文章的質(zhì)量,文章發(fā)布的時(shí)間,喜歡和評(píng)論數(shù)目等等。
第三步,個(gè)性化調(diào)整排序結(jié)果。一般用戶去簡(jiǎn)書搜索文章,很有可能是之前瀏覽過(guò)的文章或者關(guān)注的專題和筆者的文章。簡(jiǎn)書可以在定向搜索模塊也加入個(gè)性化推薦策略,而不僅僅是在推送時(shí)才進(jìn)行個(gè)性化定制。
假如我是簡(jiǎn)書數(shù)據(jù)挖掘工程師,我會(huì)從以上內(nèi)容中選擇一個(gè)點(diǎn)進(jìn)行優(yōu)化。一個(gè)人的精力有限,一個(gè)人的力量也遠(yuǎn)不如一支團(tuán)隊(duì)的力量。簡(jiǎn)書想要打造極簡(jiǎn)的閱讀和寫作平臺(tái),需要的不是一個(gè)數(shù)據(jù)挖掘工程師,而是一支優(yōu)秀的數(shù)據(jù)挖掘團(tuán)隊(duì)。