陳錦繁,秦斌,劉佳敏
(深圳大學(xué)信息中心,深圳 518060)
隨著信息技術(shù)的普及推廣,生活中各種“互聯(lián)網(wǎng)+”應(yīng)用層出不窮,通過手機(jī)或電腦輕松點(diǎn)外賣、打車或買菜,已深入人心。投票系統(tǒng)大概是互聯(lián)網(wǎng)應(yīng)用最早的成功范例之一,利用在線網(wǎng)絡(luò)和移動互聯(lián)網(wǎng)的優(yōu)勢,既提高投票便利性,也能保證投票私密性。最重要的是,在線投票解決了線下手工計(jì)票的冗長繁瑣,高效可靠的算法還能保證投票結(jié)果的準(zhǔn)確度和可信度。因此,計(jì)票和計(jì)分算法的優(yōu)劣將決定投票系統(tǒng)的成敗。
自2015年起,深圳大學(xué)正式上線了“校內(nèi)服務(wù)單位滿意度網(wǎng)上測評系統(tǒng)”(以下簡稱深大測評系統(tǒng)),每年組織一次全校師生員工網(wǎng)上測評,對全校所有管理部門、教輔部門和服務(wù)單位的服務(wù)滿意度進(jìn)行投票。參與被投票的測評單位約50個,測評評價(jià)分非常滿意(100分)、滿意(80分)、基本滿意(60分)、不滿意(50分)和不了解(不計(jì)分)等5個計(jì)分級別。投票人按教師、本科生、研究生、非學(xué)歷教育學(xué)生、畢業(yè)校友和校企員工等分成不同類別,根據(jù)測評單位服務(wù)內(nèi)容和服務(wù)對象不同,每個投票用戶類別給每個測評單位的計(jì)票權(quán)重也不一樣。
由于各測評單位和投票用戶類別的權(quán)重可能會隨時調(diào)整,個別投票用戶類別甚至取消權(quán)重即投票計(jì)無效,因此在投票活動截止日停止投票后,統(tǒng)一進(jìn)行計(jì)票運(yùn)算。根據(jù)各單位收獲的評價(jià)票數(shù)和投票人權(quán)重,再通過加權(quán)計(jì)分即排名規(guī)則核算得分,得到服務(wù)滿意度的年度排名。
根據(jù)歷年的投票情況,教師、本科生和研究生等3類用戶的投票占了絕大多數(shù)。因此,為了方便闡述計(jì)票和計(jì)分流程,本文中涉及到的計(jì)票規(guī)則和計(jì)分規(guī)則兩個環(huán)節(jié)的算法都忽略了非在校師生因素,只保留教師、本科生和研究生3個在校師生類別。以圖書館和離退辦為例,圖書館服務(wù)對象囊括全校師生和校外讀者,各類人員都有評價(jià)權(quán),考慮到學(xué)校本科生數(shù)量較多,因此教師、本科生和研究生權(quán)重比定為3:4:3;離退辦的服務(wù)對象以臨近離退和已離退教師為主,工作內(nèi)容和學(xué)生關(guān)系不大,因此服務(wù)對象只有教師。
按照傳統(tǒng)的用戶依次計(jì)票累計(jì)辦法,公式(1)為各測評單位得票數(shù)規(guī)則示意。Pn(n=1~4即含P1、P2、P3、P4)分別是非常滿意、滿意、基本滿意和不滿意等4個評價(jià)得票數(shù),而“不了解”票計(jì)無效,不參與計(jì)票和計(jì)分;Wi是被測評單位對應(yīng)第i個用戶的權(quán)重,根據(jù)用戶類別不同,分別為Wt教師權(quán)重、Ws本科生權(quán)重和Wy研究生權(quán)重;Pn i(n=1~4)是第i個用戶選擇的評價(jià)票。2020年度剛剛結(jié)束的測評活動中,合計(jì)約2萬在校師生參與了投票,每用戶分別投給50家被測評單位,則實(shí)際需統(tǒng)計(jì)的加權(quán)票數(shù)100萬張。通過投票人和被測評單位的雙循環(huán),很容易實(shí)現(xiàn)票數(shù)統(tǒng)計(jì),流程圖如圖1左側(cè)一人一票模式(簡稱A模式)。
圖1 一人一票A模式和按用戶類別B模式計(jì)票流程對比圖
一人一票模式優(yōu)點(diǎn)是運(yùn)算邏輯清晰,在即投即計(jì)的網(wǎng)上投票系統(tǒng)中是最常用的。深大測評系統(tǒng)不是即投即計(jì),而且投票計(jì)票數(shù)據(jù)量較大。因此,這種計(jì)票模式應(yīng)用到本案例中,虛線框內(nèi)流程循環(huán)頻次達(dá)100萬次,勢必嚴(yán)重消耗系統(tǒng)資源,完成計(jì)票統(tǒng)計(jì)的時間漫長。
深大測評系統(tǒng)在實(shí)際應(yīng)用中是投票截止后統(tǒng)一進(jìn)行計(jì)票計(jì)分,因此一人一票模式并非必要。投票人分為教職工、本科生、研究生等3個不同權(quán)重的投票用戶類別,改進(jìn)的思路是按照用戶類別預(yù)先統(tǒng)計(jì)各被測評單位票數(shù),依次計(jì)入被測評單位。
公式(2)為改進(jìn)后計(jì)票算法規(guī)則。Pn(n=1~4即含P1、P2、P3、P4)分別是非常滿意、滿意、基本滿意和不滿意等4個評價(jià)得票數(shù);W t、W s、W y分別為教師權(quán)重、本科生權(quán)重和研究生權(quán)重;Pt n、Ps n、P y n分別為4個評價(jià)的教師總票數(shù)、本科生總票數(shù)和研究生總票數(shù)。公式(2)的流程如圖1的按用戶類別模式(簡稱B模式)所示。票池?cái)?shù)據(jù)先進(jìn)行按用戶類別的小計(jì)匯總,增加了“將人轉(zhuǎn)化為類別”的運(yùn)算步驟,即使再增加量級如10萬甚至100萬的票數(shù),這個數(shù)據(jù)整理初始化的運(yùn)算時間也是極少的,更加凸顯改進(jìn)效果。表1為圖書館和離退辦的按用戶類別統(tǒng)計(jì)的原始票數(shù)據(jù)。
表1 圖書館和離退辦原始投票統(tǒng)計(jì)表
優(yōu)化后的結(jié)果,從圖1的虛線框內(nèi)B模式雙循環(huán)中的唱票計(jì)票運(yùn)算頻次為150次,相比A模式循環(huán)頻次降幅超99.98%,大大節(jié)約了運(yùn)算耗時。在一臺普通終端電腦上運(yùn)行測評系統(tǒng)計(jì)票環(huán)節(jié)程序,對優(yōu)化前后的計(jì)票進(jìn)行粗略計(jì)時:A模式27秒,B模式快于1秒(約0.8秒)。對比見圖2所示。
圖2 計(jì)票環(huán)節(jié)優(yōu)化前后運(yùn)算時長對比圖
在計(jì)票過程中完成“唱票”,各被測評單位均得到非常滿意、滿意、基本滿意和不滿意等4個級別評價(jià)票數(shù)(如表1所示),接下來就是計(jì)分排名算法問題,深大測評系統(tǒng)的計(jì)分要求跟電影點(diǎn)評網(wǎng)類似。電影愛好者喜歡訪問的電影點(diǎn)評網(wǎng)有IMDb(internet movie database)、爛番茄(rotten tomatoes)、豆瓣電影(douban)等,他們都提供用戶投票打分排名功能。國內(nèi)的豆瓣電影網(wǎng)常被影迷們津津樂道,具有相當(dāng)?shù)闹?。根?jù)網(wǎng)上可查詢到的數(shù)據(jù),豆瓣電影評分規(guī)則采用了常見的加權(quán)百分比算法,規(guī)則簡單明了。
D1、D2、D3、D4、D5分別是對應(yīng)1星、2星、3星、4星、5星的分值;P1、P2、P3、P4、P5分別是上述5個星值的投票數(shù)。豆瓣電影被譽(yù)為國內(nèi)最大的青年影迷聚集地,擁有龐大用戶群,評分規(guī)則真實(shí)反映每一位打分影迷的喜好。深大測評系統(tǒng)第一年上線時同樣采用了類似的加權(quán)百分比算法,計(jì)分基本規(guī)則如公式(4)。
S1、S2、S3、S4對應(yīng)非常滿意、滿意、基本滿意和不滿意等4個評價(jià)等級權(quán)重分?jǐn)?shù)(不了解票計(jì)無效,不參與評分),分別是100分、80分、60分和50分;P1、P2、P3、P4分別是上述4個評價(jià)票數(shù),即公式(1)、(2)被測評單位加權(quán)票數(shù)Pn。加權(quán)百分比算法邏輯清晰,得分運(yùn)算也非常高效,但是這樣的得分排名是否真實(shí)反映各測評單位的優(yōu)劣呢?!
由于各測評單位的服務(wù)受眾不盡相同,比如圖書館服務(wù)對象涵蓋全校師生,離退辦的服務(wù)對象則較窄,前者投票人數(shù)必然遠(yuǎn)遠(yuǎn)超過后者。2020年圖書館投票數(shù)約2萬票,去除“不了解”票后得有效評價(jià)票Ptsy為14979張;離退辦原始票Ptsy為447張,但根據(jù)師生權(quán)重只計(jì)教師票實(shí)則為148張,約占圖書館票數(shù)1%。圖書館按公式(4)加權(quán)百分比得分87.2,離退辦按公式(4)算得88.2分。離退辦評價(jià)票偏少,加大了偶然因素影響。對于圖書館而言,服務(wù)滿意的師生可能投票參與度不高,但服務(wù)受眾廣難免百密一疏,不滿意票自然少不了,因此“有功勞也有苦勞”的圖書館得分Q的排名似乎有點(diǎn)欠說服力。
表2 圖書館和離退辦加權(quán)票和加權(quán)百分比得分表
電影評分也是同樣道理:一部熱門商業(yè)大片有超十萬影迷投票,而一部小眾影片可能獲得區(qū)區(qū)幾百投票。為了更準(zhǔn)確衡量熱門冷門影片的好壞,最理想的辦法是讓同樣數(shù)量影迷觀影并打分,但現(xiàn)實(shí)中這是無法做到的。因此,從計(jì)分算法入手,能否設(shè)法為冷門影片合理增加一些票數(shù)呢?貝葉斯算法可以提供一些思路。貝葉斯算法的推導(dǎo)始于條件概率:在事件B發(fā)生的前提下事件A發(fā)生的概率,數(shù)學(xué)上用P(A|B)來表示。
P(A)稱為事件A的先驗(yàn)概率;P(B)稱為事件B的先驗(yàn)概率;P(B|A)是事件A發(fā)生后事件B的觀測樣本統(tǒng)計(jì)概率,也稱為似然性概率;P(A|B)就是我們想要的事件A條件概率,也稱后驗(yàn)概率;公式中的P(B|A)/P(B)可看成一個整體,稱為可能性函數(shù),這是一個調(diào)整因子,使得預(yù)估概率更接近真實(shí)概率。通俗地說,貝葉斯公式是根據(jù)已有經(jīng)驗(yàn)和知識先得到先驗(yàn)概率,然后在觀測樣本和數(shù)據(jù)不斷積累的情況下調(diào)整這個概率,最終得到最科學(xué)最精準(zhǔn)的事件發(fā)生概率。全球最知名的電影點(diǎn)評網(wǎng)莫過于IMDb,基于龐大的用戶群和投票數(shù),它的排名得到業(yè)界的公認(rèn),投票計(jì)分規(guī)則來源于貝葉斯算法。
IMDb評分算法規(guī)則見公式(6)。R是用普通的方法計(jì)算出的平均分;v是投票人數(shù);m是進(jìn)入IMDb排名前250需要的最小票數(shù);C是目前所有電影的平均得分。IMDb考慮了所有可能影響的因子、基于普通方法計(jì)算出來的平均分、投票人數(shù)和目前所有電影的平均分。算法的關(guān)鍵點(diǎn)就是m,人為地給冷門影片增加基礎(chǔ)票數(shù),避免了過熱和過冷問題。借鑒IMDb評分方法,深大測評系統(tǒng)也引入最小票數(shù)概念,為各測評單位均增加一個基礎(chǔ)票數(shù),避免冷票倉單位出現(xiàn)“幾張滿意票就插隊(duì)領(lǐng)先”或“幾張不滿意票就拖后腿”的現(xiàn)象。
Q是按公式(4)加權(quán)百分比算法得分;P1、P2、P3、P4是公式(4)各評價(jià)等級票數(shù);m是基礎(chǔ)票數(shù),按總投票數(shù)1%;C是所有單位得分Q的平均值。因此,深大測評系統(tǒng)采用了以公式(4)為評分基準(zhǔn)、公式(7)為評分修正的計(jì)分規(guī)則。歸根結(jié)底,此計(jì)分規(guī)則同樣引入了貝葉斯推斷思想,在不知道結(jié)果之前,先預(yù)設(shè)一個值,通過越來越多的數(shù)據(jù)加以修正,目的仍是最大程度反映廣大師生意志,得到最真實(shí)的投票結(jié)果。
2020年度50個被測評單位,師生總投票數(shù)20000,則基礎(chǔ)票數(shù)m值為200;加權(quán)百分比評分Q后得到C值為85。如圖3所示,左側(cè)為全體50個測評單位的得分分布圖,其中Q曲線為加權(quán)百分比得分分布近似曲線,分布于70~95區(qū)間;S曲線為引入基礎(chǔ)票數(shù)m的得分分布,位于76~94區(qū)間;曲線下方50個色塊分別對應(yīng)50個測評單位在各得分區(qū)的分布情況;m取值200讓S曲線基本接近正態(tài)分布理想狀態(tài),一定程度上降低了冷門單位少數(shù)票的拉分效果,盡可能實(shí)現(xiàn)了服務(wù)數(shù)量和質(zhì)量的真實(shí)排名體現(xiàn)。按照改進(jìn)后的算法,因圖書館票數(shù)多受基礎(chǔ)票數(shù)m影響較小,最終得分仍為87.2;離退辦“拉分效果”被弱化,最終得分86.4,因此圖書館排名在離退辦前頭(見表3)。
圖3 全體測評單位得分S分布圖
表3 2020年測評單位排名統(tǒng)計(jì)表(部分)
深大測評系統(tǒng)使用的數(shù)據(jù)庫是SQL server 2008R2,具執(zhí)行大規(guī)模在線事務(wù)處理能力,是一個全面的數(shù)據(jù)管理和業(yè)務(wù)智能平臺,為關(guān)鍵業(yè)務(wù)應(yīng)用提供可擴(kuò)展性、數(shù)據(jù)倉庫、安全、高級分析和報(bào)表支持。優(yōu)化運(yùn)行環(huán)境,還可以從數(shù)據(jù)庫入手,考慮使用視圖和存儲過程。視圖可以通過抽取不同數(shù)據(jù)表的數(shù)據(jù)項(xiàng)生成,具有邏輯數(shù)據(jù)獨(dú)立性的特點(diǎn)。從視圖的特點(diǎn)和技術(shù)上說,對性能貌似并無提升,但從系統(tǒng)優(yōu)化的角度,可以有效精簡數(shù)據(jù)操作語句,同時保護(hù)數(shù)據(jù)表的直接讀寫,視圖是有意義的。另外,SQL server的存儲過程是一個預(yù)編譯過程,把測評系統(tǒng)計(jì)票和計(jì)分環(huán)節(jié)中的數(shù)據(jù)處理語句寫入存儲過程,數(shù)據(jù)庫不必每次執(zhí)行它時都要分析和編譯它,避免了處理語句在網(wǎng)絡(luò)中傳輸然后再解釋的低效率問題。
本文是應(yīng)用程序開發(fā)過程中的改進(jìn)優(yōu)化的有益實(shí)踐:計(jì)票環(huán)節(jié)著重提升運(yùn)算效率和性能,計(jì)分環(huán)節(jié)追求公平合理最大化。深大測評系統(tǒng)采用貝葉斯平均算法思路弱化極端投票影響,其他計(jì)票策略還有很多:比如非師生權(quán)重因素、本單位人員不能給本測評單位投票、單點(diǎn)異常投票、惡意投票告警、智能識別拉票等約束和控制功能。上述因素本文未提及,各種策略在以后運(yùn)行中會根據(jù)實(shí)際需求和變化進(jìn)行不斷調(diào)整調(diào)優(yōu)。深圳大學(xué)校內(nèi)單位服務(wù)滿意度網(wǎng)上測評系統(tǒng)已運(yùn)行6年,以科學(xué)精準(zhǔn)、客觀真實(shí)的測評數(shù)據(jù)為提升校內(nèi)服務(wù)水平和學(xué)校信息化應(yīng)用建設(shè)貢獻(xiàn)了一份力量。