大數(shù)據(jù)與機(jī)器學(xué)習(xí)在產(chǎn)品設(shè)計中的應(yīng)用
掃描二維碼
隨時隨地手機(jī)看文章
最近調(diào)研了一位班主任,他反饋了一個現(xiàn)象:過往的幾屆學(xué)生中總會出現(xiàn)這樣一種情況,原本明明是物理尖子生,但是隨著學(xué)業(yè)的進(jìn)展,部分學(xué)生的物理成績開始下滑。
通過分析學(xué)生的試卷情況,老師發(fā)現(xiàn)學(xué)生的失分點可能是和一些數(shù)學(xué)知識相關(guān)。這是不是意味著學(xué)生物理學(xué)的不好的原因可能是在數(shù)學(xué)方面出了問題?如果真的是這樣,我該怎么幫助學(xué)生?
針對這種情況,我們是否有一種方法能夠找到物理知識點與數(shù)學(xué)知識點的關(guān)系呢?正好,公司產(chǎn)品里已經(jīng)沉淀了大量關(guān)于學(xué)生的答題數(shù)據(jù),基于關(guān)聯(lián)規(guī)則分析我們可以找到學(xué)生的錯題知識點的規(guī)則,最終獲得知識點間的相關(guān)規(guī)律,并將該規(guī)律應(yīng)用于產(chǎn)品中進(jìn)行知識圖譜的搭建。
關(guān)聯(lián)分析規(guī)則
關(guān)聯(lián)規(guī)則分析也稱為購物籃分析,一個經(jīng)典的案例就是啤酒與尿布,最早是為了發(fā)現(xiàn)超市銷售數(shù)據(jù)庫中不同的商品之間的關(guān)聯(lián)關(guān)系。
美國沃爾瑪超市管理人員分析銷售數(shù)據(jù)時,發(fā)現(xiàn)了一個令人難以理解的現(xiàn)象:
在某些特定的情況下,“啤酒”與“尿布”兩件看上去毫無關(guān)系的商品,會經(jīng)常出現(xiàn)在同一個購物籃中,且大多出現(xiàn)在年輕的父親身上。經(jīng)調(diào)查發(fā)現(xiàn),在美國有嬰兒的家庭中,一般是母親在家中照看嬰兒,年輕的父親去超市買尿布。父親在購買尿布的同時,往往會順便為自己購買啤酒。
言歸正傳,我們將數(shù)據(jù)庫的學(xué)生答題數(shù)據(jù)進(jìn)行處理,將每位學(xué)生的數(shù)據(jù)整理成如下格式(整理方式不是本文重點內(nèi)容,這里就不做闡述了):
現(xiàn)在假設(shè),我們有10000條數(shù)據(jù)用來統(tǒng)計各個學(xué)生在知識點1與知識點2的掌握情況,其中有6000位學(xué)生未掌握知識點1,8000位學(xué)生未掌握知識點2,而有4000位學(xué)生同時未掌握知識點1和知識點2。
通過這個數(shù)據(jù)我們可以產(chǎn)生一條兩個知識點之間的關(guān)聯(lián)規(guī)則,用來表示未掌握知識點1的學(xué)生也未掌握知識點2。
這里我們需要引入三個關(guān)鍵指標(biāo)來評估這條規(guī)則的有效性,分別為支持度、置信度和提升度,這里我盡量簡單的講解下:
支持度、置信度和提升度
支持度揭示了同時未掌握知識點1與知識點2的學(xué)生在整個數(shù)據(jù)集的占比,針對上方案例支持度 Support = 4000/10000 = 40%。
支持度越小,說明同時未掌握知識點1和知識點2的學(xué)生少之又少,兩個知識點之間的聯(lián)系并不大;若支持度很大,則說明未掌握知識點1與知識點2的學(xué)生占比非常大,那兩個知識點的相關(guān)性可能已經(jīng)成為常識了,并不值得深究。
那僅了解支持度就足夠了么?肯定不是,通過支持度我們僅能了解到學(xué)生同時未掌握知識點1與知識點2的頻率,但我們并不能得到未掌握知識點1對未掌握知識點2起了多少決定因素。因此,我們要引入第二個指標(biāo),就是置信度。
置信度揭示了在未掌握知識點1的學(xué)生人群中,同時有多少學(xué)生也未掌握知識點2。針對上方案例,置信度 confidence = 4000/6000 = 67%。也就是意味著,在未掌握知識點1的學(xué)生中有67%的學(xué)生也未掌握知識點2。
是不是看了以上兩個指標(biāo)后,你會覺得知識點1與知識點2肯定存在著某種頻繁關(guān)系?
畢竟67%已經(jīng)不算是一個小數(shù)字了。但是我們再回看下案例,如果我們不考慮知識點1的掌握情況,只看知識點2的未掌握學(xué)生占比,這個值會高達(dá) 80% !這就表明未掌握知識點1對未掌握知識點2并不是一個正向的關(guān)系,未掌握知識點1的可能性提升反而會導(dǎo)致未掌握知識點2的可能性下降。
是不是很反常理?我額外掌握了一個知識點居然會讓我遺忘另一個知識點。其實,從現(xiàn)象上講這也是可能的。因為,人的大腦容量有限,并且部分知識點會存在干擾項,你學(xué)得多就會導(dǎo)致做題的時候會多種思考的維度,這可能會讓學(xué)生誤入歧途。(時隔多年,我終于找到我考試考不好的原因了!)。為了解決這個問題,我們引入了提升度。
當(dāng)提升度為1時說明,應(yīng)用關(guān)聯(lián)規(guī)則和不應(yīng)用關(guān)聯(lián)規(guī)則產(chǎn)生相同的結(jié)果;
當(dāng)提升度大于1時,說明應(yīng)用關(guān)聯(lián)規(guī)則和不應(yīng)用關(guān)聯(lián)規(guī)則能產(chǎn)生更好的結(jié)果;
當(dāng)提升度小于1時,關(guān)聯(lián)規(guī)則具有負(fù)相關(guān)的作用。
本例中的提升度 Lift = 67 % / 80% = 0.84,所以知識點1與知識點2是負(fù)相關(guān)的。
實際應(yīng)用
解釋完以上內(nèi)容后,相信大家已經(jīng)對關(guān)聯(lián)分析規(guī)則有了一個大致的概念。接下來我們進(jìn)行實操,針對所有知識點進(jìn)行兩兩組合,分別統(tǒng)計在未掌握知識點1的情況下未掌握知識點2的學(xué)生出現(xiàn)的數(shù)量、支持度、置信度和提升度。
因為閱讀本文的你很有可能并不會代碼(產(chǎn)品經(jīng)理也不需要會代碼,了解整體思路即可),我們就直接給出代碼運行結(jié)果(有興趣的小伙伴可以去自學(xué)下,工具為Python,庫為sys,Pandas,apriori), 我們根據(jù)出現(xiàn)的實例數(shù)進(jìn)行降序,并找到提升度>1的知識對,得到如下表格。
通過表格我們可以發(fā)現(xiàn)(牽扯到公司數(shù)據(jù)安全,這里我們就使用ID來進(jìn)行說明),ID為0131535的知識點與ID為0134176的知識點同時未掌握的頻次最高。并且,兩個知識點未掌握知識點0131535的學(xué)生,同時未掌握的知識點0134176的概率是47.23%,未掌握知識點0131535將會增加未掌握知識點0134176的可能性,提升度為1.341。
我們可以建議老師在學(xué)生若未掌握知識點0134176 的時候,可以適當(dāng)講解知識點0131535。
并且通過如上分析結(jié)果,我們可以提煉學(xué)生知識點間掌握程度的關(guān)聯(lián)(也可擴(kuò)展到多個知識點),一個8年級的知識點學(xué)不會可能是因為6、7年級的某些知識點沒有掌握而導(dǎo)致的,以此來搭建學(xué)生知識圖譜,幫助學(xué)生追根溯源,找到知識漏洞。