數(shù)據(jù)挖掘 課件 第四章 關(guān)聯(lián)規(guī)則挖掘_第1頁
數(shù)據(jù)挖掘 課件 第四章 關(guān)聯(lián)規(guī)則挖掘_第2頁
數(shù)據(jù)挖掘 課件 第四章 關(guān)聯(lián)規(guī)則挖掘_第3頁
數(shù)據(jù)挖掘 課件 第四章 關(guān)聯(lián)規(guī)則挖掘_第4頁
數(shù)據(jù)挖掘 課件 第四章 關(guān)聯(lián)規(guī)則挖掘_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

關(guān)聯(lián)規(guī)則挖掘05高級關(guān)聯(lián)模式挖掘背景介紹01Contents關(guān)聯(lián)規(guī)則挖掘的基本概念02頻繁項集挖掘算法03關(guān)聯(lián)規(guī)則挖掘0406推薦系統(tǒng)中的關(guān)聯(lián)規(guī)則挖掘超市消費者購物小票說起“購買啤酒的男士經(jīng)常會購買小孩的紙尿布”不同商品間的關(guān)聯(lián)規(guī)則背景介紹谷歌預(yù)測2009年部分地區(qū)的流感“2009年,Google通過分析5000萬條美國人最頻繁檢索的詞匯,將之和美國疾病中心在2003年到2008年間季節(jié)性流感傳播時期的數(shù)據(jù)進行比較,并建立一個特定的數(shù)學(xué)模型。最終Google成功預(yù)測了2009冬季流感的傳播甚至可以具體到特定的地區(qū)和州。”背景介紹超市預(yù)知高中生顧客懷孕明尼蘇達州一家塔吉特(Target)門店被客戶投訴,一位中年男子指控塔吉特將嬰兒產(chǎn)品優(yōu)惠券寄給他的女兒——一個高中生。但沒多久他卻來電道歉,因為女兒經(jīng)他逼問后坦承自己真的懷孕了。塔吉特百貨就是靠著分析用戶所有的購物數(shù)據(jù),然后通過相關(guān)關(guān)系分析得出事情的真實狀況。背景介紹電表與空置房的匹配背景介紹05高級關(guān)聯(lián)模式挖掘背景介紹01Contents關(guān)聯(lián)規(guī)則挖掘的基本概念02頻繁項集挖掘算法03關(guān)聯(lián)規(guī)則挖掘0406推薦系統(tǒng)中的關(guān)聯(lián)規(guī)則挖掘購物籃事務(wù)下面表格中存儲的數(shù)據(jù)可以稱為購物籃事務(wù)。事務(wù):事務(wù)表示為形如<t,X>的元組事務(wù)標(biāo)識符(TID):事務(wù)中的t項集:

,如果一個項集包含k個項,則稱為k-項集。如{面包,尿布,啤酒,牛奶}為3-項集。TID項集1{面包,牛奶}2{面包,尿布,啤酒,牛奶}3{牛奶,尿布,啤酒,可樂}事務(wù)關(guān)聯(lián)規(guī)則挖掘關(guān)聯(lián)規(guī)則:是形如的表達式,其中

和是兩個不相交的項集。關(guān)聯(lián)規(guī)則挖掘步驟:頻繁項集產(chǎn)生:使用頻繁項集挖掘算法,找出滿足最小支持度閾值的所有項集,這些項集為頻繁項集。規(guī)則生成:從上一步得到的頻繁項集中過濾出滿足最小置信度閾值的規(guī)則,這些規(guī)則稱為強規(guī)則。關(guān)聯(lián)規(guī)則挖掘支持度計數(shù):指一個項集在所有事務(wù)中出現(xiàn)的次數(shù)。換言之,它是該項集在事務(wù)數(shù)據(jù)庫中的絕對頻率。數(shù)學(xué)上可以表示為。支持度:支持度計數(shù)與總事務(wù)數(shù)的比例,表示在所有事務(wù)中有多少比例的事務(wù)包含該項集。這是一個標(biāo)準(zhǔn)化的指標(biāo),用于評估項集的普遍性。支持度的數(shù)學(xué)定義如下,N表示事務(wù)總數(shù)。在關(guān)聯(lián)規(guī)則挖掘中,支持度是用于初步篩選數(shù)據(jù)中潛在有用模式的重要工具。只有當(dāng)項集的支持度達到預(yù)設(shè)的最小支持度閾值時,這些項集才被認(rèn)為是頻繁項集。格結(jié)構(gòu)格結(jié)構(gòu):挖掘頻繁項集時,候選項集之間的包含關(guān)系所形成的結(jié)構(gòu)。性質(zhì):如果一個項集是另一個項集的子集,那么它們之間就存在一條連接。圖中顯示的是的項集格,其中2-項集{A,B}是3-項集{A,B,C}的直接子集。05高級關(guān)聯(lián)模式挖掘背景介紹01Contents關(guān)聯(lián)規(guī)則挖掘的基本概念02頻繁項集挖掘算法03關(guān)聯(lián)規(guī)則挖掘0406推薦系統(tǒng)中的關(guān)聯(lián)規(guī)則挖掘樸素法樸素法:將所有的k-項集作為候選項集,然后確定其在輸入數(shù)據(jù)中的支持度選出頻繁項集。算法步驟:候選生成:一次性生成所有候選項集,第k層的候選項集的數(shù)目為,其中d是項的總數(shù)。樸素法將每個事務(wù)與所有候選項集進行比較,如圖若候選項集在事務(wù)中,則該候選項集的支持度計數(shù)加一,最終根據(jù)項集支持度計數(shù)是否大于等于最小支持度閾值以判斷其是否為頻繁項集。樸素法的計算成本隨著數(shù)據(jù)量的增加呈指數(shù)級增長,因此在實際應(yīng)用中不太實用。先驗算法Apriori算法:一種經(jīng)典的頻繁項集挖掘算法,用于從大規(guī)模數(shù)據(jù)集中發(fā)現(xiàn)頻繁項集和關(guān)聯(lián)規(guī)則。核心思想:利用先驗知識來減少搜索空間。令

為任意兩個項集,若,則。進一步得到先驗知識:若是頻繁的,則其任意子集也是頻繁的。若是非頻繁的,則其任意超集也是非頻繁的。先驗算法假設(shè){A,B,C}是頻繁項集,則其子集{A,B}、{B,C}、{A,C}、{A}、{C}都是頻繁項集。先驗算法若{A,B}是非頻繁項集,則其超集{A,B,C}、{A,B,D}、{A,B,E}、{A,B,C,D}、{A,B,C,E}、{A,B,D,E}、{A,B,C,D,E}都是非頻繁的,對于非頻繁項集{A,B}在生成2-項集時將其剪枝,避免之后不必要的候選項集生成和支持度計算。先驗算法算法步驟:候選項集產(chǎn)生:由前一次迭代發(fā)現(xiàn)的頻繁項集(k-1)-項集產(chǎn)生新的候選k-項集。對于第k層的(k-1)-項集,僅當(dāng)它們的前k-2個項都相同,合并這對(k-1)-項集。令和是一對頻繁(k-1)-項集,如果它們滿足如下條件則合并:先驗算法候選項集剪枝:枚舉每個事務(wù)所包含的k-項集用于與候選k-項集進行匹配,若一致,則相應(yīng)的候選項集支持度計數(shù)加1。Apriori算法在處理大規(guī)模數(shù)據(jù)集時,候選項集的生成和支持度計算的開銷較大,算法效率較低。同時,生成的候選項集可能很大,占用大量存儲空間。FP增長算法FP增長算法:通過構(gòu)建一種增強的前綴樹-頻繁模式樹對數(shù)據(jù)集進行索引。優(yōu)點:避免了生成候選項集的過程。FP樹:FP樹是一種特殊類型的樹形數(shù)據(jù)結(jié)構(gòu),用于存儲一組事務(wù)數(shù)據(jù)庫的壓縮版本。FP樹中的每個節(jié)點包含項以及該項的支持度計數(shù)。FP增長算法FP樹創(chuàng)建:算法第一次掃描整個數(shù)據(jù)庫統(tǒng)計每一項的出現(xiàn)頻率并依據(jù)出現(xiàn)頻率降序排列,基于閾值(最小支持度)刪除非頻繁項。對于左下角表格中的事務(wù),設(shè)置最小支持度計數(shù)為2。TID項集1{A,B,E}2{B,E}3{A,B,D,E}4{A,B,C,E}5{B,C,D}TID項集1{B,E,A}2{B,E}3{B,E,A,D}4{B,E,A,C}5{B,C,D}FP增長算法第二次掃描數(shù)據(jù)庫將每個事務(wù)按照排序后的項添加到FP樹中,從空集開始,每讀入一條事務(wù),就根據(jù)事務(wù)中的項的順序,從根節(jié)點開始,若事務(wù)中的某一項在FP樹中已存在,則對應(yīng)的項支持度加一;若不存在,則創(chuàng)建該項對應(yīng)的節(jié)點。FP增長算法FP樹的挖掘:從FP樹中選擇一個項,找出其對應(yīng)的條件模式基。條件模式基:從該項出發(fā)到根節(jié)點的所有路徑集合,即要挖掘的項作為葉子節(jié)點所對應(yīng)的FP子樹,該子樹也稱為條件FP樹。以項D為例使用條件FP樹挖掘頻繁項集,從根到節(jié)點D一共有2條路徑,分別是{B,E,A,D}與{B,C,D}。將除了最后一項D的其他項插入新的FP樹中得到條件FP樹。FP增長算法由于E、A、C的支持度計數(shù)為1小于最小支持度計數(shù),故刪除非頻繁項E、A、C。頻繁項有{B:2},故生成D的頻繁2-項集{B:2,D:2}。05高級關(guān)聯(lián)模式挖掘背景介紹01Contents關(guān)聯(lián)規(guī)則挖掘的基本概念02頻繁項集挖掘算法03關(guān)聯(lián)規(guī)則挖掘0406推薦系統(tǒng)中的關(guān)聯(lián)規(guī)則挖掘關(guān)聯(lián)規(guī)則挖掘一旦識別出頻繁項集,下一步是從這些項集中生成潛在的關(guān)聯(lián)規(guī)則。關(guān)聯(lián)規(guī)則形如,其中A和B是不重疊的項集。A為規(guī)則中的“條件”部分,也稱為前件,代表了規(guī)則的出發(fā)條件;B是規(guī)則中的“結(jié)果”部分,代表了前件出現(xiàn)時,預(yù)期將會同時出現(xiàn)的項集,也稱為后件。產(chǎn)生規(guī)則的步驟:選擇頻繁項集F。為每個頻繁項集生成所有可能的非空子集A。對每個非空子集A,生成規(guī)則,令為B

。計算每條規(guī)則的置信度,即A出現(xiàn)的條件下B出現(xiàn)的概率基于置信度的剪枝置信度(confidence):在前件A發(fā)生的情況下,后件B同時發(fā)生的條件概率。它是衡量規(guī)則準(zhǔn)確性的一個標(biāo)準(zhǔn)。基于置信度剪枝目的:減少關(guān)聯(lián)規(guī)則挖掘過程中無關(guān)或誤導(dǎo)性規(guī)則的數(shù)量,提高挖掘結(jié)果的質(zhì)量。通過設(shè)置置信度閾值,只有當(dāng)規(guī)則的置信度高于此閾值時,規(guī)則才被認(rèn)為是強規(guī)則,值得進一步分析。從關(guān)聯(lián)分析到相關(guān)分析假設(shè)在一個大型零售商店中,通過交易數(shù)據(jù)分析發(fā)現(xiàn):80%的顧客都購買了牛奶。50%的顧客都購買了面包。40%的顧客同時購買了牛奶和面包?,F(xiàn)在考慮關(guān)聯(lián)規(guī)則:“購買牛奶→購買面包”。支持度為0.4,因為40%的交易中牛奶和面包一起被購買置信度為0.5(40%/80%),看起來這個關(guān)聯(lián)較強盡管“購買牛奶→購買面包”的置信度較高,但這可能并不是因為購買牛奶導(dǎo)致了購買面包的行為,而是因為牛奶和面包都是非常普遍的購買選項。提升度提升度:衡量的是規(guī)則前件和后件同時發(fā)生的概率與這個兩個項集獨立發(fā)生的概率乘積的比值。引入了提升度幫助我們更加準(zhǔn)確地評估兩個項集之間是否存在超過隨機機會的關(guān)聯(lián)。性質(zhì):如果提升度大于1,表明A和B之間有正相關(guān)關(guān)系,一個出現(xiàn)另一個可能同時出現(xiàn);提升度等于1,表明A和B獨立,沒有關(guān)聯(lián)。提升度小于1,表明A和B之間有負(fù)相關(guān)關(guān)系,一個出現(xiàn)可能導(dǎo)致另一個不出現(xiàn)。使用提升度再次計算例子,lift(“購買牛奶”“購買面包”)=1,這意味著購買牛奶和購買面包之間實際上沒有超過隨機概率的關(guān)聯(lián)。杠桿率杠桿率:衡量項集A和B同時出現(xiàn)的聯(lián)合概率與假設(shè)兩個項集完全獨立的情況下期望聯(lián)合概率之間的差性質(zhì):如果兩個項集完全獨立,則杠桿率為零。確信度確信度:衡量的是在規(guī)則A→B下,不發(fā)生B時A發(fā)生的頻率與B自身不發(fā)生的頻率之比。這個指標(biāo)幫助我們理解當(dāng)規(guī)則A→B

不成立時,A發(fā)生的可能性有多大。性質(zhì):如果A和B是完全獨立的,即A對B的發(fā)生沒有任何影響,則確信度值為1;如果A對B的發(fā)生有強烈的正影響,即B幾乎總是在A發(fā)生時發(fā)生,那么Confidence(A→B)接近于1,從而使1?Confidence(A→B)接近于0,這會使確信度趨向無窮大。。05高級關(guān)聯(lián)模式挖掘背景介紹01Contents關(guān)聯(lián)規(guī)則挖掘的基本概念02頻繁項集挖掘算法03關(guān)聯(lián)規(guī)則挖掘0406推薦系統(tǒng)中的關(guān)聯(lián)規(guī)則挖掘多層模式挖掘多層模式挖掘:通過利用數(shù)據(jù)的內(nèi)在層次結(jié)構(gòu)來探索和發(fā)現(xiàn)跨多個層次的關(guān)聯(lián)規(guī)則。適用場景:這種方法特別適用于那些具有豐富分類層次的數(shù)據(jù)集,如零售產(chǎn)品分類和在線內(nèi)容分類,如零售產(chǎn)品分類和在線內(nèi)容分類。作用:通過這種技術(shù),企業(yè)可以揭示不同層級之間的隱含關(guān)系,幫助制定更精確的營銷策略和庫存管理。多層模式挖掘一個大型在線零售商,其產(chǎn)品分類具有詳細(xì)的層次結(jié)構(gòu),從一般類別到具體商品。頂層為最抽象層,自上而下產(chǎn)品變得具體,底層為具體品牌的產(chǎn)品。使用底層規(guī)則來探索更一般的類別層面上的關(guān)聯(lián),比如在Huawei的層次上,可能會發(fā)現(xiàn)用戶購買HuaweiMate40的同時更有可能購買HuaweiWatch4Pro;在手機層次下,可以發(fā)現(xiàn)用戶購買華為手機的同時更有可能購買華為的手表。多層模式挖掘模式挖掘步驟:在每個層級中提取模式。從底層開始,即最具體的層次,挖掘出關(guān)聯(lián)規(guī)則,并逐步上升到更一般的層次。遞減支持度被提出,通過在較低層使用遞減的最小支持度,適應(yīng)不同層級的數(shù)據(jù)稀疏性。非頻繁項集挖掘非頻繁模式:數(shù)據(jù)集中出現(xiàn)頻率超過最小支持度閾值的項集,使用支持度閾值剪枝掉的模式。作用:非頻繁模式不常出現(xiàn)但可能包含重要信息的模式,同樣具有重要的研究價值和應(yīng)用背景。應(yīng)用:一些罕見疾病和癥狀的組合雖然出現(xiàn)的頻率較低,但它們可以揭示不常見但臨床上極其重要的癥狀與病癥關(guān)聯(lián)。商品間的負(fù)相關(guān)關(guān)系揭示了它們之間的互斥或替代關(guān)系,如60%的意大利面在市場上顯示出了互斥和替代的關(guān)系。零售商來說,理解這些關(guān)系可以幫助識別競爭商品,并據(jù)此優(yōu)化貨架布局和促銷策略。05高級關(guān)聯(lián)模式挖掘背景介紹01Contents關(guān)聯(lián)規(guī)則挖掘的基本概念02頻繁項集挖掘算法03關(guān)聯(lián)規(guī)則挖掘0406推薦系統(tǒng)中的關(guān)聯(lián)規(guī)則挖掘推薦系統(tǒng)概述推薦系統(tǒng)中的兩類角色用戶項:推薦系統(tǒng)中的項目,如電影推薦系統(tǒng)中的電影。推薦流程召回階段:候選集規(guī)模大、模型和特征簡單、速度快,盡量保證用戶感興趣數(shù)據(jù)多召回。排序階段:候選集不大,目標(biāo)是保證排序的精準(zhǔn),一般使用復(fù)雜和模型和特征召回層召回路徑i2i:根據(jù)一項物品推薦另一項物品。u2i:為一個用戶推薦一項物品。U2i2i:根據(jù)用戶偏愛的一個物品推薦另一個物品。U2u2i:為當(dāng)前用戶推薦與之相似的用戶所偏愛的物品U2tag2i:指根據(jù)用戶偏愛的標(biāo)簽推薦物品。這里的tag指的是項的標(biāo)簽?;趦?nèi)容的召回層挖掘基于內(nèi)容的召回層挖掘:依賴于項的內(nèi)容特征以及用戶的偏好歷史來進行個性化推薦。核心:是將項描述轉(zhuǎn)化為可處理的特征向量,然后利用這些特征向量來找出用戶過去喜歡的項與未知項之間的相似性。常見的特征提取技術(shù):TF-IDF(TermFrequency-InverseDocumentFrequency)LDA(LatentDirichletAllocation)TF-IDF詞頻(TF):一個詞在文檔中出現(xiàn)的頻率,表示詞在文檔中出現(xiàn)的次數(shù)逆文檔頻率(IDF):一個詞普遍重要性的度量,其中表示所有文檔的數(shù)量,表示包含詞條的文檔數(shù)量。TF-IDF例題:假設(shè)電影“星球大戰(zhàn):帝國反擊戰(zhàn)”共有1200篇影評,其中一篇影評包含150個詞語,且經(jīng)過停用詞過濾后,三個出現(xiàn)頻率最高的關(guān)鍵詞為“絕地”、“帝國”和“反擊”,在這篇影評中出現(xiàn)次數(shù)分別為25、18、12次。這些詞在所有影評中出現(xiàn)的次數(shù)分別為200、600、300次。計算TF詞頻(TF)表示某一特定詞語在單個文檔中出現(xiàn)的頻率,計算公式為該詞在文檔中出現(xiàn)的次數(shù)除以文檔的總詞數(shù):“絕地”的TF=25/150=0.167“帝國”的TF=18/150=0.120“反擊”的TF=12/150=0.080TF-IDF計算IDF逆文檔頻率(IDF)的計算公式是總文檔數(shù)除以包含該詞的文檔數(shù)的商的對數(shù):“絕地”的IDF=log(1200/200)=log(6)≈0.778“帝國”的IDF=log(1200/600)=log(2)≈0.301“反擊”的IDF=log(1200/300)=log(4)≈0.602計算TF-IDFTF-IDF值通過將TF和IDF相乘得到,用來評估一個詞對于一個文檔集或一個語料庫中的其中一份文檔的重要性:“絕地”的TF-IDF=0.167*0.778=0.130“帝國”的TF-IDF=0.120*0.301=0.036“反擊”的TF-IDF=0.080*0.602=0.048基于內(nèi)容的召回層挖掘算法步驟:特征提?。簩γ總€項提取關(guān)鍵特征,例如對于電影,特征可能包括類型、導(dǎo)演、演員等。構(gòu)建用戶畫像:分析用戶的歷史行為(如評分、收藏、點贊等),提取出用戶偏好的特征組合,構(gòu)建一個反映這些偏好的用戶畫像。計算相似度:利用余弦相似度、Jaccard相似度或其他相關(guān)度量計算用戶畫像與各項之間的相似度生成推薦:根據(jù)相似度分?jǐn)?shù),從高到低為用戶推薦項基于協(xié)同過濾的召回層挖掘基于內(nèi)容的召回層挖掘:通過分析用戶之間或項之間的行為和偏好相似性來推薦項。核心:“群體智慧”,如果一組用戶對某些項有共同的評價偏好,那么他們對其他項的評價也可能是相似的。與基于內(nèi)容的召回算法的區(qū)別:內(nèi)容算法側(cè)重于分析項的固有屬性,而協(xié)同過濾側(cè)重于用戶行為之間的相互關(guān)系,不直接依賴項內(nèi)容。協(xié)同過濾能夠在不了解項具體內(nèi)容的情況下,基于用戶群體的行為模式推薦項,而基于內(nèi)容的推薦往往局限于用戶已顯示出興趣的項目類型?;趨f(xié)同過濾的召回層挖掘基于內(nèi)容的召回層挖掘算法分類:用戶-用戶協(xié)同過濾(User-UserCF)項-項協(xié)同過濾(Item-ItemCF)模型驅(qū)動的協(xié)同過濾用戶-用戶協(xié)同過濾用戶-用戶協(xié)同過濾:根據(jù)目標(biāo)用戶對項的偏好找到興趣相近的用戶作為相鄰用戶,將相鄰用戶的偏好推薦給目標(biāo)用戶。算法步驟:用相似度度量的方法找出與目標(biāo)用戶興趣相似的用戶計算目標(biāo)用戶對相似用戶偏好項的喜好程度進行推薦將用戶推薦項的過程轉(zhuǎn)化為用戶對項進行評分的過程,若評分比較高,則把項推薦給用戶,否則不推薦。用戶-用戶協(xié)同過濾例題:假設(shè)有一個小型電影評分系統(tǒng),其中包括4位用戶對4部電影的評分,目標(biāo)是預(yù)測用戶對他未看過的電影的評分。用戶/電影電影A電影B電影C電影DAlice4?53Bob5342Carol?445Dave3435用戶-用戶協(xié)同過濾計算每個用戶的平均評分Alice:(5+3+4)/3=4Bob:(5+3+4+2)/4=3.5Dave:(5+3+4+3)/4=3.75Carol:(4+4+5)/3=4.33計算用戶間的相似度這里,使用了皮爾遜相關(guān)系數(shù)計算用戶間的相似度。這一度量將幫助我們找到與目標(biāo)用戶興趣最相似的用戶。其中u、v為用戶,i表示項,、分別表示用戶u、v的評價項集,表示用戶u對項i的評分,表示用戶u的平均評分。用戶-用戶協(xié)同過濾計算用戶間的相似度Alice與Bob的共同評分的電影為A、C、D,Alice的平均評分為4,Bob的平均評分3.5,相關(guān)系數(shù)為Alice與Dave的共同評分的電影為A、C、D,Dave的平均評分3.75,相關(guān)系數(shù)為Alice與Carol共同評分的電影為C、D,Carol的平均評分為4.33,相關(guān)系數(shù)為用戶-用戶協(xié)同過濾計算Alice對未評分電影的預(yù)測值通過其他用戶對目標(biāo)項的評分與Alice與其他用戶的相似度對目標(biāo)項進行預(yù)測,考慮到用戶的評分標(biāo)準(zhǔn)不一致,有的偏好打低分有的偏好打高分,其他用戶對目標(biāo)項的評分與其所有評分均值作差,使用相對值進行預(yù)測。表示預(yù)測的用戶u對項i的評分,其中表示用戶u和用戶u’的相似度。聚合Bob、Dave、Carol對電影B的相對評分獲得Alice對電影B的評分。用戶-用戶協(xié)同過濾聚合Bob、Dave、Carol對電影B的相對評分獲得Alice對電影B的評分由于預(yù)測值小于Alice對電影的平均得分,因此不為Alice推薦電影B項-項協(xié)同過濾用戶-用戶協(xié)同過濾:項間的相似度可以通過它們被共同喜歡的用戶數(shù)量來確定。算法步驟:構(gòu)建項與項的共現(xiàn)矩陣計算物品之間的相似度基于用戶的歷史記錄推薦物品項-項協(xié)同過濾例題:假設(shè)有以下五位用戶及其喜愛的項集合,使用相似度矩陣中的相似度得分來計算B對項x、z的預(yù)期喜好度用戶喜愛的物品A{x,y,z}B{y,w}C{w,z}D{x,w,z}E{x,z}項-項協(xié)同過濾構(gòu)建項與項的共現(xiàn)矩陣XYWZX0113Y1011W1102z3120項-項協(xié)同過濾計算物品之間的相似度采用余弦相似度進行計算,其中表示偏好項的用戶數(shù),表示同時偏好項、的用戶數(shù),則項與項的相似度為XYWZX-0.2580.2240.548Y0.258-0.2890.236W0.2240.289-0.408z0.5480.2360.408-項-項協(xié)同過濾基于用戶的歷史記錄推薦物品

用戶的歷史喜好可以用一個評分矩陣表示,其中“1”表示用戶喜歡某項,而“0”表示沒有記錄(即用戶可能未評分或未表達喜好)。基于上面的數(shù)據(jù)有用戶XYWZA1101B0110C0011D1011E1001項-項協(xié)同過濾基于用戶的歷史記錄推薦物品

根據(jù)用戶的歷史記錄為用戶推薦物品的思想是與用戶歷史上感興趣的項相似度高的項更可能為用戶偏好項。因此可以通過如下公式計算用戶對項是喜好度:計算用戶B對項x的預(yù)期喜好度計算用戶B對項z的預(yù)期喜好度排序?qū)优判驅(qū)拥淖饔茫涸谡倩貙雍Y選出的候選項集中進一步精確地評估和排序這些項。排序?qū)拥囊饬x:提升推薦的精準(zhǔn)度以及優(yōu)化用戶體驗上,確保推薦內(nèi)容的個性化和相關(guān)性達到最高。任務(wù)挑戰(zhàn):不僅需要處理來自召回階段的數(shù)據(jù),還需要運用更復(fù)雜的模型和更豐富的特征來實現(xiàn)高度個性化的推薦。特點:與召回層使用相對簡單的模型和較少的特征不同,排序?qū)油ǔ?yīng)用深度學(xué)習(xí)模型、復(fù)雜的機器學(xué)習(xí)算法和上千種特征。排序?qū)訉W(xué)習(xí)排序(LearningtoRank,LTR):利用機器學(xué)習(xí)算法來應(yīng)對現(xiàn)實排序挑戰(zhàn)的技術(shù)集合。學(xué)習(xí)排序分類:單點法(Pointwise)配對法(Pairwise)列表法(Listwise)單點法核心思想:方法是通過將排序問題視作回歸或多分類問題來處理,獨立預(yù)測每個項與用戶的相關(guān)性得分。常用方法:二元分類的Pointwise,輸入為用戶與項的特征,輸出為用戶和項是否有相關(guān)關(guān)聯(lián),存在相關(guān)關(guān)聯(lián)是正樣例,反之為負(fù)樣例。缺點:不關(guān)注項間的相對關(guān)系,忽略了項之間的相互作用和內(nèi)部依賴性,這對于改善排序結(jié)果的質(zhì)量是不利的。配對法核心思想:通過將項-項對作為訓(xùn)練樣本,專注于學(xué)習(xí)項之間的相對優(yōu)先級缺點:訓(xùn)練數(shù)據(jù)的構(gòu)建相對復(fù)雜,需要生成項-項對并標(biāo)注哪一個更為相關(guān)或優(yōu)先;僅考慮兩個項的先后順序而忽略了它們在整體列表中的位置,可能會影響最終的用戶體驗;可能會因為不同查詢下的文檔數(shù)量差異而導(dǎo)致訓(xùn)練不均衡。列表法核心思想:考慮了整個推薦列表的結(jié)構(gòu),盡力映射出用戶可能的最佳體驗。缺點:當(dāng)需要對大量的項目進行排序時,復(fù)雜度和計算成本高;許多Listwise算法的性能極大依賴于能否準(zhǔn)確地獲取和標(biāo)注數(shù)據(jù),這在某些實際應(yīng)用中可能是一個限制因素?;谶壿嫽貧w的排序?qū)油诰驅(qū)崙?zhàn)演練:使用Pointwise中的邏輯回歸進行個性化電影排序推薦。使用電影推薦時長使用的數(shù)據(jù)集Movielens-100k,該數(shù)據(jù)集包含了943位用戶對1682部電影的評分信息,評分是[1,5]的整數(shù),其中比較重要的文件包括u.data、u.genre、、u.item、u.occupation、u.useru.data--由943個用戶對1682個電影的10000條評分組成。每個用戶至少評分20部電影。用戶和電影從1號開始連續(xù)編號,數(shù)據(jù)是隨機排序的。標(biāo)簽分隔列表:userid|itemid|rating|timestampu.genre--類型列表--u.data數(shù)據(jù)集中的用戶數(shù)、電影數(shù)以及評分?jǐn)?shù)u.item--電影信息列表:movieid|movietitle|releasedate|videoreleasedate|IMDbURL|unknown|Action|Adventure|Animation|Children's|Comedy|Crime|Documentary|Drama|Fantasy|Film-Noir|Horror|Musical|Mystery|Romance|Sci-Fi|Thriller|War|Western最后19個字段是流派,1表示電影是該類型,0表示不是,電影可以同時使用幾種流派。u.occupation--用戶職業(yè)列表u.user--用戶的信息列表:userid|age|gender|occupation|zipcode基于邏輯回歸的排序?qū)油诰驍?shù)據(jù)清洗:對數(shù)據(jù)進行前處理,對于用戶信息,將評分標(biāo)簽轉(zhuǎn)換為二元標(biāo)簽,用戶評分大于3的電影標(biāo)簽設(shè)置為1,否則標(biāo)簽為0;由于郵編不常用于推薦系統(tǒng),將郵編刪除。對于電影數(shù)據(jù),提取u.item中的流派數(shù)據(jù)生成新列g(shù)enre,刪除不必要的電影屬性列,只保留movieid、releasedata、genre用于電影推薦data_df=pd.read_csv(data_csv,sep='\t',header=None)data_df.columns=['user_id','item_id','label','timestamp']data_df['label']=(data_df['label']>threshold).astype(int)data_df['timestamp']=mms.fit_transform(data_df['timestamp'].values.reshape(-1,1))

user_df=pd.read_csv(user_csv,sep='|',header=None)user_df.columns=['user_id','age','gender','occupation','zip_code']user_df.drop(columns='zip_code',inplace=True)基于邏輯回歸的排序?qū)油诰騣tem_df=pd.read_csv(item_csv,sep='|',header=None,encoding='latin-1')seq_len=item_df[range(5,24)].sum(axis=1).max()defconvert_genre(x):genre=list(np.where(x.iloc[5:].values)[0])genre.extend([0]*(seq_len-len(genre)))returngenreitem_df['genre']=item_df.apply(convert_genre,axis=1)item_df.drop(columns=[1,*range(3,24)],inplace=True)item_df.columns=['item_id','release_year','genre']fill_na=item_df['release_year'].mode()[0][-4:]item_df['release_year']=item_df['release_year'].apply(lambdax:x[-4:]ifpd.notnull(x)elsefill_na).astype(int)#mergedf=data_df.merge(user_df,on='user_id',how='left').merge(item_df,on='item_id',how='left')df=df.sort_values(by=['user_id','timestamp'],ascending=[1,1]).reset_index(drop=True)token_col=['user_id','item_id','age','gender','occupation','release_year']mappings={}#存儲編碼后的數(shù)字到原始數(shù)據(jù)的映射foriintoken_col:

le.fit(df[i])#使用編碼前的數(shù)據(jù)進行擬合mappings[i]=dict(zip(le.transform(le.classes_),le.classes_))#創(chuàng)建映射字典df[i]=le.transform(df[i])#對數(shù)據(jù)進行編碼

returndf,mappings基于邏輯回歸的排序?qū)油诰蚨xMovieLens100K數(shù)據(jù)集類:__init__方法:初始化數(shù)據(jù)集對象。"user_id"、"item_id"、"age"、"gender"、"occupation"、"release_year"作為特征列,并將其轉(zhuǎn)換為NumPy數(shù)組保存在self.df中。__len__方法:返回數(shù)據(jù)集的大小,即標(biāo)簽的數(shù)量。__getitem__方法:獲取單個數(shù)據(jù)點,返回特征和標(biāo)簽對。classMovieLens_100K_Dataset(Dataset):def__init__(self,df):

token_col=["user_id","item_id","age","gender","occupation","release_year"]

self.df=df[token_col].values

self.field_dims=df[token_col].nunique().values

self.labels=df["label"].valuesdef__len__(self):"""返回數(shù)據(jù)集的大小"""returnlen(self.labels)def__getitem__(self,idx):"""獲取單個數(shù)據(jù)點"""returnself.df[idx],self.labels[idx]基于邏輯回歸的排序?qū)油诰蚨x回歸模型類:__init__方法:使用field_dims參數(shù)初始化一個Embedding層,輸出維度默認(rèn)為1。這個Embedding層用于表示特征的線性部分。初始化一個偏置項bias,維度與Embedding層輸出維度相同。計算特征域的偏移量offsets,用于將特征編碼后的索引轉(zhuǎn)換為在整個特征向量中的位置forward方法:接受輸入張量x,表示樣本的特征,輸出概率值。classLogisticRegressionModel(Module):def__init__(self,field_dims,output_dim=1):super().__init__()

self.fc=Embedding(sum(field_dims),output_dim)

self.bias=Parameter(torch.zeros((output_dim,)))

self.offsets=np.array((0,*np.cumsum(field_dims)[:-1]),dtype=pat.long)

torch.nn.init.xavier_uniform_(self.fc.weight.data)defforward(self,x):"""模型前向傳播,使用sigmoid激活函數(shù)"""x=x+x.new_tensor(self.offsets).unsqueeze(0)

linear_output=torch.sum(self.fc(x),dim=1)+self.biasreturntorch.sigmoid(linear_output).squeeze(1)基于邏輯回歸的排序?qū)油诰蛴?xùn)練、驗證模型函數(shù):使用train_epoch函數(shù)對模型進行訓(xùn)練,并使用validate_model函數(shù)在驗證集上評估模型的性能。deftrain_epoch(model,data_loader,cr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論