• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的協(xié)同過(guò)濾推薦算法設(shè)計(jì)與實(shí)現(xiàn)

    2016-12-22 21:40:40周張?zhí)m
    軟件導(dǎo)刊 2016年11期
    關(guān)鍵詞:個(gè)性化推薦協(xié)同過(guò)濾

    周張?zhí)m

    摘 要:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是數(shù)據(jù)的一種存儲(chǔ)方式,它具有插入、刪除操作靈活的特性,可以很好地適應(yīng)數(shù)據(jù)變化。在分析協(xié)同過(guò)濾推薦算法數(shù)據(jù)對(duì)象特點(diǎn)及實(shí)現(xiàn)原理的基礎(chǔ)上,以十字鏈表、鄰接表為存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)了基于內(nèi)存的鏈?zhǔn)綌?shù)據(jù)存儲(chǔ)方法,并在此基礎(chǔ)上實(shí)現(xiàn)了一組操作,這些操作可以完成評(píng)分?jǐn)?shù)據(jù)創(chuàng)建、相似度計(jì)算、評(píng)分預(yù)測(cè)和推薦列表生成等功能。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及相關(guān)操作能方便地進(jìn)行功能擴(kuò)展,并可根據(jù)需要實(shí)現(xiàn)更為復(fù)雜的操作。

    關(guān)鍵詞關(guān)鍵詞:鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu);協(xié)同過(guò)濾;興趣模型;個(gè)性化推薦

    DOIDOI:10.11907/rjdk.162119

    中圖分類(lèi)號(hào):TP312

    文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):16727800(2016)011005904

    1 協(xié)同過(guò)濾推薦算法

    面對(duì)海量的數(shù)據(jù)信息,個(gè)性化推薦已成為用戶(hù)在互聯(lián)網(wǎng)中獲取感興趣內(nèi)容的一種重要途徑。通常,個(gè)性化推薦首先需從已知的用戶(hù)行為中獲得用戶(hù)興趣模型,然后預(yù)測(cè)用戶(hù)可能感興趣的其它行為,最后向用戶(hù)提供推薦。協(xié)同過(guò)濾推薦是個(gè)性化推薦中的一種重要方法,它依據(jù)用戶(hù)對(duì)項(xiàng)目的評(píng)分信息,而不依賴(lài)于推薦內(nèi)容本身,因而對(duì)復(fù)雜對(duì)象的推薦具有重要意義。

    傳統(tǒng)的協(xié)同過(guò)濾推薦算法有基于用戶(hù)(Userbased)的協(xié)同過(guò)濾推薦[1]和基于項(xiàng)目(Itembased)的協(xié)同過(guò)濾推薦[2]?;谟脩?hù)的協(xié)同過(guò)濾推薦算法的主要步驟為:首先,計(jì)算用戶(hù)和用戶(hù)之間的相似度;其次,利用相似度為目標(biāo)用戶(hù)尋找近鄰;然后,根據(jù)近鄰的評(píng)分來(lái)預(yù)測(cè)目標(biāo)用戶(hù)評(píng)分;最后,依據(jù)預(yù)測(cè)評(píng)分的高低產(chǎn)生推薦?;陧?xiàng)目的協(xié)同過(guò)濾推薦算法與之類(lèi)似,其計(jì)算項(xiàng)目與項(xiàng)目之間的相似性,尋找項(xiàng)目近鄰,并利用相似項(xiàng)目的評(píng)分來(lái)預(yù)測(cè)目標(biāo)用戶(hù)評(píng)分。從實(shí)現(xiàn)角度上看,兩者操作步驟相似。

    通常,協(xié)同過(guò)濾推薦的數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集兩部分。其中,訓(xùn)練集用來(lái)獲取用戶(hù)興趣模型,測(cè)試集用來(lái)預(yù)測(cè)。一般情況下,數(shù)據(jù)集來(lái)自用戶(hù)的評(píng)分行為,經(jīng)過(guò)預(yù)處理后按照一定格式生成一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集。比如MovieLens數(shù)據(jù)集[3]即采用四元組形式存儲(chǔ)用戶(hù)對(duì)電影的評(píng)分,四元組的組成元素分別是user_id、item_id,rating和timestamp。MovieLens提供的數(shù)據(jù)集是常用的推薦算法測(cè)試數(shù)據(jù)集,本文也以此數(shù)據(jù)集作為數(shù)據(jù)對(duì)象。由于用戶(hù)對(duì)項(xiàng)目的評(píng)分常常是稀疏的,比如用戶(hù)能瀏覽并評(píng)分的商品往往十分有限。因此,在實(shí)現(xiàn)算法時(shí)要合理地考慮數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。

    2 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

    在協(xié)同過(guò)濾推薦算法中需要存儲(chǔ)的數(shù)據(jù)對(duì)象包括:從訓(xùn)練集和測(cè)試集中讀取的用戶(hù)評(píng)分?jǐn)?shù)據(jù)、計(jì)算得到的用戶(hù)或項(xiàng)目的相似度數(shù)據(jù)、向用戶(hù)產(chǎn)生推薦的預(yù)測(cè)數(shù)據(jù)。

    2.1 評(píng)分?jǐn)?shù)據(jù)存儲(chǔ)結(jié)構(gòu)

    協(xié)同過(guò)濾推薦中,處理的數(shù)據(jù)對(duì)象是用戶(hù)對(duì)項(xiàng)目的評(píng)分。當(dāng)然,這些數(shù)據(jù)是經(jīng)過(guò)預(yù)處理的,比如去掉無(wú)效評(píng)分、采用統(tǒng)一的數(shù)據(jù)格式等。用戶(hù)評(píng)分?jǐn)?shù)據(jù)可看成一個(gè)評(píng)分矩陣,其中,行代表用戶(hù),列代表項(xiàng)目,第i行第j列的元素aij代表用戶(hù)i對(duì)項(xiàng)目j的評(píng)分。評(píng)分?jǐn)?shù)據(jù)有兩種存儲(chǔ)方法,順序存儲(chǔ)或鏈?zhǔn)酱鎯?chǔ)。若采用順序的二維數(shù)組存儲(chǔ),可以實(shí)現(xiàn)對(duì)數(shù)據(jù)元素aij的隨機(jī)存取。但對(duì)數(shù)組而言,主要的操作是查找和修改,不易進(jìn)行插入、刪除操作。另外,由于用戶(hù)對(duì)項(xiàng)目的評(píng)分是一個(gè)稀疏矩陣,最好對(duì)數(shù)據(jù)進(jìn)行壓縮處理。因此,采用十字鏈表作為數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)不僅可以實(shí)現(xiàn)數(shù)據(jù)壓縮,還能利用指針[4]靈活地進(jìn)行結(jié)點(diǎn)的插入、刪除操作?;谑宙湵韀5]存儲(chǔ)的數(shù)據(jù)類(lèi)型定義如下:

    (1)評(píng)分結(jié)點(diǎn)類(lèi)型定義:

    typedef struct rateNode{

    int user_id; //用戶(hù)id

    int item_id; //項(xiàng)目id

    int rating; //評(píng)分

    struct rateNode *rownext; //行指針

    struct rateNode *colnext; //列指針

    }rNode,*rNodeLink;

    (2)用戶(hù)項(xiàng)目類(lèi)型定義:

    typedef struct UserItemRateList{

    int id; //用戶(hù)id或項(xiàng)目id

    float rAvg;//用戶(hù)或項(xiàng)目平均評(píng)分

    struct rateNode *first;

    }UIRate;

    (3)U個(gè)用戶(hù)的用戶(hù)表,I個(gè)項(xiàng)目的項(xiàng)目表可定義為:

    UIRate User[U],Item[I];

    2.2 相似度存儲(chǔ)結(jié)構(gòu)

    首先,分析用戶(hù)(或項(xiàng)目)之間的相似度特點(diǎn)。在協(xié)同過(guò)濾推薦算法中,計(jì)算用戶(hù)(或項(xiàng)目)的相似度有很多方法,方法不同得到的相似度值也不同。常見(jiàn)的相似度計(jì)算方法有余弦相似性、調(diào)整的余弦相似性和相關(guān)相似性。余弦相似性的取值范圍為[0,1],調(diào)整的余弦相似性和相關(guān)相似性的取值范圍為[-1,1]。因此,用戶(hù)(或項(xiàng)目)的相似度值為一個(gè)實(shí)數(shù),一般定義為float即可。為了滿(mǎn)足應(yīng)用需求,以用戶(hù)相似度為例,假設(shè)用戶(hù)數(shù)量為U,若計(jì)算出所有用戶(hù)之間的相似度,則相似度矩陣大小為U*U。然而,不是每個(gè)用戶(hù)之間都能計(jì)算出相似度值,若兩個(gè)用戶(hù)之間沒(méi)有共同評(píng)分項(xiàng)目,無(wú)論采用以上哪一種相似度計(jì)算方法都無(wú)法計(jì)算。因此,用戶(hù)相似度矩陣也可能是稀疏的。更重要的是,為了能依據(jù)相似度快速地查找到用戶(hù)(或項(xiàng)目)的近鄰,最好為每個(gè)用戶(hù)(或項(xiàng)目)建立一個(gè)相似度表,并按相似度值從大到小降序排列。可采用類(lèi)似圖的鄰接表的存儲(chǔ)方式,為每一個(gè)用戶(hù)(或項(xiàng)目)建立一個(gè)鏈表,鏈表中的結(jié)點(diǎn)包含近鄰用戶(hù)(或項(xiàng)目)號(hào)id、相似度值data以及指向下一個(gè)結(jié)點(diǎn)的指針next。其中,結(jié)點(diǎn)按相似度值降序排列。

    (1)用戶(hù)(或項(xiàng)目)相似度結(jié)點(diǎn)定義如下:

    typedef struct Node{

    int id; //用戶(hù)或項(xiàng)目id

    float data; //用戶(hù)或項(xiàng)目相似度值

    struct Node *next; //指向下一個(gè)相似度結(jié)點(diǎn)的指針

    }Node;

    (2)用戶(hù)或項(xiàng)目相似度表定義如下:

    typedef struct List{

    int id; //用戶(hù)或項(xiàng)目id

    struct Node *first; //用戶(hù)或項(xiàng)目相似度鏈表的頭指針

    }List;

    (3)U個(gè)用戶(hù),I個(gè)項(xiàng)目的相似度表定義為:

    List UserSim [U], ItemSim [I];

    2.3 用戶(hù)推薦存儲(chǔ)結(jié)構(gòu)

    為了實(shí)現(xiàn)推薦,需生成一個(gè)用戶(hù)推薦表,推薦表中包含向用戶(hù)推薦的項(xiàng)目以及對(duì)該項(xiàng)目的預(yù)測(cè)評(píng)分。同樣,為方便查找,在存儲(chǔ)時(shí)最好也按預(yù)測(cè)評(píng)分的高低排序。因此,推薦表的存儲(chǔ)方式可以和相似度表相同,都為L(zhǎng)ist類(lèi)型。其中,每個(gè)用戶(hù)有一個(gè)按預(yù)測(cè)評(píng)分降序排列的推薦鏈表,鏈表結(jié)點(diǎn)包含項(xiàng)目號(hào)id、預(yù)測(cè)評(píng)分值data以及指向下一個(gè)結(jié)點(diǎn)的指針next,結(jié)點(diǎn)類(lèi)型與相似度結(jié)點(diǎn)類(lèi)型相同,為Node類(lèi)型。另外,推薦表中的用戶(hù)和對(duì)應(yīng)的項(xiàng)目信息來(lái)自于測(cè)試集中的數(shù)據(jù),因此還需一個(gè)測(cè)試表來(lái)存儲(chǔ)從測(cè)試集中讀取的用戶(hù)和待測(cè)項(xiàng)目信息。由于測(cè)試表存儲(chǔ)的數(shù)據(jù)是產(chǎn)生推薦表時(shí)要讀取的內(nèi)容,因此測(cè)試表也定義為L(zhǎng)ist類(lèi)型。U個(gè)用戶(hù)的推薦表和測(cè)試表可定義為:

    List PreRem[U], TestRem[U];

    2.4 協(xié)同過(guò)濾推薦類(lèi)型定義

    為實(shí)現(xiàn)協(xié)同過(guò)濾推薦,需要包含的數(shù)據(jù)信息有:用戶(hù)數(shù)、項(xiàng)目數(shù)、記錄數(shù)、用戶(hù)表、項(xiàng)目表、用戶(hù)或項(xiàng)目相似度表、測(cè)試表和推薦表。因此,定義協(xié)同過(guò)濾推薦類(lèi)型CFR如下:

    typedef struct CFR{

    int UserNum; //用戶(hù)數(shù)

    int ItemNum; //項(xiàng)目數(shù)

    int RecordNum;//訓(xùn)練集記錄數(shù)

    int RecordNum_t; //測(cè)試集記錄數(shù)

    UIRate *User; // 用戶(hù)表

    UIRate *Item; // 項(xiàng)目表

    List *Sim; // 用戶(hù)或項(xiàng)目相似度表

    List *TestRem; //測(cè)試表

    List *PreRem; //推薦表

    }CFR;

    3 算法設(shè)計(jì)

    協(xié)同過(guò)濾推薦算法3個(gè)主要步驟分別是計(jì)算相似度、尋找近鄰和預(yù)測(cè)評(píng)分。獲取用戶(hù)近鄰的方法有多種[6],如基于前k個(gè)近鄰的計(jì)算方法、基于閾值的計(jì)算方法等。

    在分析協(xié)同過(guò)濾推薦的數(shù)據(jù)特點(diǎn)并確定相應(yīng)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)后,設(shè)計(jì)算法詳細(xì)實(shí)現(xiàn)步驟如下:首先,讀入已格式化的用戶(hù)評(píng)分訓(xùn)練集,生成以十字鏈表形式存儲(chǔ)的用戶(hù)項(xiàng)目評(píng)分矩陣;然后,利用某種相似度計(jì)算方法(如余弦相似性)計(jì)算用戶(hù)(或項(xiàng)目)之間的相似度,為用戶(hù)(或項(xiàng)目)創(chuàng)建一個(gè)按相似度值從高到低排序的最近鄰表,以便快速找到與用戶(hù)(或項(xiàng)目)相似的近鄰(如前k個(gè)近鄰);再次,讀入測(cè)試集用戶(hù)數(shù)據(jù),創(chuàng)建測(cè)試表;最后,預(yù)測(cè)測(cè)試表中用戶(hù)對(duì)項(xiàng)目的評(píng)分,并按預(yù)測(cè)評(píng)分的高低生成用戶(hù)推薦表。算法流程如圖1所示。

    4 算法實(shí)現(xiàn)

    在實(shí)現(xiàn)中,由于采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu),因此多數(shù)為基于指針的查找、插入和刪除操作。其中,主要操作的算法用C語(yǔ)言描述如下:

    (1) CreateCrossLink():創(chuàng)建十字鏈表。讀入用戶(hù)評(píng)分訓(xùn)練集,創(chuàng)建以十字鏈表形式存儲(chǔ)的用戶(hù)項(xiàng)目評(píng)分矩陣。算法描述如下:

    int CreateCrossLink(char str[20],CFR &R){

    FILE *fp;

    rNode *p,*q;

    if(!(fp=fopen(str,"r"))) {printf("Cant open the base file!n");exit(-1);} //讀入訓(xùn)練集

    for(k=0;k

    fscanf(fp,"%d %d %d",&i,&j,&r);

    if(i<1||i>R.UserNum||j<1||j>R.ItemNum) return 0;

    p=(rNode*)malloc(sizeof(rNode));

    if(!p) exit(-1);

    p->user_id=i;p->item_id=j;p->rating=r;

    if(R.User[i-1].first==NULL||R.User[i-1].first->item_id>j){

    p->rownext=R.User[i-1].first;R.User[i-1].first=p;}

    else{ for(q=R.User[i-1].first;q->rownext&&q->rownext->item_idrownext);

    p->rownext=q->rownext;q->rownext=p;}

    if(R.Item[j-1].first==NULL||R.Item[j-1].first->item_id>j){

    p->colnext=R.Item[j-1].first;R.Item[j-1].first=p;}

    else { for(q=R.Item[j-1].first;q->colnext&&q->colnext->user_idcolnext);

    p->colnext=q->colnext;q->colnext=p;} }

    return 1;}

    (2)InsertNodeDesc():按降序在指定表List中插入一個(gè)結(jié)點(diǎn)。在指定表L中,以降序方式向L[i]元素所在鏈表中插入一個(gè)Node類(lèi)型的結(jié)點(diǎn)。其中,結(jié)點(diǎn)id號(hào)為j,值data為val。例如,若List為用戶(hù)相似度表,則表示在用戶(hù)i所在的相似度鏈表中插入一個(gè)編號(hào)為j(即用戶(hù)j)且值為val的結(jié)點(diǎn)。算法描述如下:

    int InsertNodeDesc(int i,int j,float val,List *L){

    //將結(jié)點(diǎn)(j,val)按val值降序插入L[i]的鏈表中

    Node *p,*q;

    p=(Node *)malloc(sizeof(Node));

    if(!p) exit(-1);

    p->id=j;p->data=val;

    if(L[i-1].first==NULL||L[i-1].first->data

    p->next=L[i-1].first;L[i-1].first=p;}

    else {for(q=L[i-1].first;q->next&&q->next->data>=val;q=q->next);

    p->next=q->next;q->next=p;}

    return 1;}

    (3)CreateUINeiLink ():創(chuàng)建用戶(hù)或項(xiàng)目的相似度表。相似度計(jì)算方法有多種,一般只要兩個(gè)用戶(hù)或項(xiàng)目之間有共同評(píng)分即可計(jì)算出相似度值。這里給出采用余弦相似性計(jì)算用戶(hù)之間相似度的算法,算法描述如下:

    int CreateUINeiLink_Consin(CFR &R){

    //以余弦相似性計(jì)算用戶(hù)與用戶(hù)之間的相似度,并以降序方式插入用戶(hù)的相似度表R.Sim中

    float suv,su,sv;

    rNode *p,*q;

    for(i=0;i

    for(j=i+1;j

    suv=0;su=0;sv=0; p=R.User[i].first; q=R.User[j].first;

    while(p&&q){

    if(p->item_id==q->item_id){

    suv=suv+p->rating*q->rating;

    su=su+p->rating*p->rating;sv=sv+q->rating*q->rating;

    p=p->rownext;q=q->rownext;}

    else if(p->item_iditem_id){

    su=su+p->rating*p->rating; p=p->rownext;}

    else{ sv=sv+q->rating*q->rating; q=q->rownext;}}

    while(p){su=su+p->rating*p->rating; p=p->rownext;}

    while(q){sv=sv+q->rating*q->rating; q=q->rownext;}

    if(su&&sv&&suv) {

    suv=suv/(sqrt(su)*sqrt(sv));

    InsertNodeDesc(i+1,j+1,suv,R.Sim); //將計(jì)算出的相似度值suv插入用戶(hù)i所在的相似度鏈表R.Sim[i]中

    InsertNodeDesc(j+1,i+1,suv,R.Sim);} }}//將計(jì)算出的相似度值suv插入用戶(hù)j所在的相似度鏈表R.Sim[j]中

    return 1;}

    由于用戶(hù)和項(xiàng)目相似度計(jì)算方法類(lèi)似,若計(jì)算項(xiàng)目之間的相似度,只需在以上操作中將若干成員變量由用戶(hù)改為項(xiàng)目即可,如將UserNum改為ItemNum,User[i]改為Item[i],指針p->rownext改為p->colnext等。

    (4)CreateRemList():讀入測(cè)試數(shù)據(jù)集,創(chuàng)建測(cè)試表R.TestRem。讀入測(cè)試數(shù)據(jù)集,將所需預(yù)測(cè)的用戶(hù)及其對(duì)應(yīng)項(xiàng)目插入到測(cè)試列表R.TestRem中。例如,若要向用戶(hù)i推薦,在R.TestRem[i]中創(chuàng)建一個(gè)測(cè)試鏈表,其中結(jié)點(diǎn)包含讀入的項(xiàng)目號(hào)和評(píng)分。若未評(píng)分,則初始評(píng)分值為0。若要檢測(cè)推薦效果,則在此讀入用戶(hù)的真實(shí)評(píng)分,可以方便地實(shí)現(xiàn)同預(yù)測(cè)評(píng)分的比較。

    int CreateRemList(char str[20],CFR &R){

    FILE *fp;

    if(?。╢p=fopen(str,"r"))) {printf("Cant open the file!n");exit(-1);}

    for(int k=0;k

    fscanf(fp,"%d %d %d",&i,&j,&r);//若沒(méi)有評(píng)分,r值為0

    if(i<1||i>R.UserNum||j<1||j>R.ItemNum) return 0;

    InsertUNodeDesc(i,j,r,R.TestRem);}

    return 1;}

    (5)PreUI_Average():返回用戶(hù)i對(duì)項(xiàng)目j的預(yù)測(cè)評(píng)分。利用用戶(hù)(或項(xiàng)目)的相似度表R.Sim預(yù)測(cè)用戶(hù)i對(duì)項(xiàng)目j的評(píng)分。在R.Sim[i]的相似度鏈表中取前n個(gè)結(jié)點(diǎn),讀取這些結(jié)點(diǎn)中的用戶(hù)評(píng)分并進(jìn)行計(jì)算,如求平均值。當(dāng)然,也可以根據(jù)需要采用其它計(jì)算方法,只需在取值后的計(jì)算部分稍作修改即可。這里給出采用用戶(hù)前n個(gè)最近鄰的平均值計(jì)算評(píng)分的算法。算法描述如下:

    float PreUI_Average(int i,int j,int n,CFR &R){

    Node *p; rNode *q;

    p=R.Sim[i-1].first;

    if(!p) return 0;

    for(;p&&countnext){

    for(k=p->id,q=R.User[k-1].first;q!=NULL;q=q->rownext){

    if(q->item_id==j){

    sum=sum+q->rating;

    count++;}}}

    if(count==n) return sum/count;

    else return 0; }

    (6)PreRemList():生成用戶(hù)推薦表。調(diào)用某種近鄰計(jì)算方法預(yù)測(cè)用戶(hù)評(píng)分,然后將預(yù)測(cè)評(píng)分按降序方式插入相應(yīng)的推薦表R.PreRem中,輸出R.RreRem,即可得到用戶(hù)的推薦項(xiàng)目及其對(duì)應(yīng)的預(yù)測(cè)評(píng)分。這里給出為用戶(hù)生成推薦表的算法,其中,以用戶(hù)前n個(gè)最近鄰對(duì)項(xiàng)目的平均評(píng)分計(jì)算預(yù)測(cè)評(píng)分,即調(diào)用PreUI_Average()方法。算法描述如下:

    int PreRemList(int n,CFR &R){

    //取用戶(hù)前n個(gè)近鄰來(lái)預(yù)測(cè)評(píng)分

    Node *p; float rp;

    for(i=0;i

    for(p=R.TestRem[i].first;p!=NULL;p=p->next) {

    j=p->id;

    rp=PreUI_Average(i+1,j,n,R);//預(yù)測(cè)用戶(hù)i對(duì)項(xiàng)目j的評(píng)分

    if(rp){ InsertNodeDesc(i+1,j,rp,R.PreRem);}}}

    return 1;}

    在上述基于鏈?zhǔn)降拇鎯?chǔ)結(jié)構(gòu)中,用十字鏈表存儲(chǔ)用戶(hù)項(xiàng)目評(píng)分矩陣,以鄰接表形式存儲(chǔ)用戶(hù)表、項(xiàng)目表、測(cè)試表和推薦表,此存儲(chǔ)結(jié)構(gòu)使一系列相關(guān)操作的實(shí)現(xiàn)和擴(kuò)展變得相對(duì)容易。另外,在用戶(hù)表和項(xiàng)目表的類(lèi)型定義中,預(yù)留了用戶(hù)或項(xiàng)目的平均分UIRate.rAvg,可以在需要時(shí)計(jì)算并存入以便能直接使用,如當(dāng)采用調(diào)整的余弦相似性計(jì)算相似度時(shí)即可用到。基于鏈?zhǔn)降拇鎯?chǔ)結(jié)構(gòu)具有插入、刪除操作簡(jiǎn)單靈活的特點(diǎn),可以很好地適應(yīng)數(shù)據(jù)變化。

    參考文獻(xiàn):

    [1] SEHAFER J,KONSTAN J,REDLL J. Recomrnender systems in E-commerce[C]. Proc ACM E-Commerce,1999:158166.

    [2] SARWAR B,KARYPIS G,KONSTAN J,et al. Itembased collaborative filtering recommendation algorithms[C]. Proc 10th Conf International World Wide Web, 2001:285295.

    [3] MovieLens[EB/OL].http://grouplens.org/datasets/.

    [4] 譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì)[M]. 第2版.北京:清華大學(xué)出版社, 1999.

    [5] 嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M]. 北京:清華大學(xué)出版社, 2007.

    [6] HERLOCKER J L,KONSTAN J A,BOREHERS A, et al. An algorithmic framework for performing collaborative filtering[C].Proc ACM SIGIR, 1999.

    (責(zé)任編輯:黃 ?。?

    猜你喜歡
    個(gè)性化推薦協(xié)同過(guò)濾
    基于用戶(hù)評(píng)分和項(xiàng)目類(lèi)偏好的協(xié)同過(guò)濾推薦算法
    基于遠(yuǎn)程教育的個(gè)性化知識(shí)服務(wù)研究
    東方教育(2016年8期)2017-01-17 19:47:27
    圖書(shū)推薦算法綜述
    改進(jìn)的協(xié)同過(guò)濾推薦算法
    基于相似傳播和情景聚類(lèi)的網(wǎng)絡(luò)協(xié)同過(guò)濾推薦算法研究
    個(gè)性化推薦系統(tǒng)關(guān)鍵算法探討
    基于協(xié)同過(guò)濾算法的個(gè)性化圖書(shū)推薦系統(tǒng)研究
    混合推薦算法在電影推薦中的研究與評(píng)述
    文本數(shù)據(jù)挖掘在電子商務(wù)網(wǎng)站個(gè)性化推薦中的應(yīng)用
    商(2016年34期)2016-11-24 16:28:51
    無(wú)線(xiàn)定位個(gè)性化導(dǎo)覽關(guān)鍵技術(shù)在博物館中的運(yùn)用
    一级,二级,三级黄色视频| 怎么达到女性高潮| 亚洲国产精品合色在线| 神马国产精品三级电影在线观看 | 免费在线观看亚洲国产| 久久午夜综合久久蜜桃| 欧美激情久久久久久爽电影 | 日韩欧美免费精品| 国产麻豆69| 天堂影院成人在线观看| 在线十欧美十亚洲十日本专区| 纯流量卡能插随身wifi吗| 日韩欧美一区视频在线观看| av视频免费观看在线观看| 在线观看舔阴道视频| 欧洲精品卡2卡3卡4卡5卡区| 最近最新中文字幕大全电影3 | 超碰成人久久| 超碰成人久久| 少妇 在线观看| 成人av一区二区三区在线看| 天天影视国产精品| 国产欧美日韩一区二区三| 亚洲熟妇熟女久久| 人人妻人人爽人人添夜夜欢视频| 国产av一区二区精品久久| 日韩三级视频一区二区三区| 国产色视频综合| 丰满人妻熟妇乱又伦精品不卡| 超碰成人久久| av视频免费观看在线观看| 久久久久久久精品吃奶| 自拍欧美九色日韩亚洲蝌蚪91| av电影中文网址| 国产精品影院久久| 国产一区二区三区在线臀色熟女 | 亚洲国产毛片av蜜桃av| 丝袜美腿诱惑在线| 18禁黄网站禁片午夜丰满| 怎么达到女性高潮| 免费在线观看影片大全网站| 男女床上黄色一级片免费看| 成年人黄色毛片网站| 欧美大码av| 在线观看66精品国产| 在线观看免费视频网站a站| 亚洲欧美一区二区三区黑人| 少妇的丰满在线观看| 午夜福利影视在线免费观看| 巨乳人妻的诱惑在线观看| 亚洲性夜色夜夜综合| 三级毛片av免费| 亚洲精品av麻豆狂野| 色哟哟哟哟哟哟| 免费在线观看完整版高清| 国产黄色免费在线视频| 国产日韩一区二区三区精品不卡| 麻豆久久精品国产亚洲av | 日日夜夜操网爽| 99久久久亚洲精品蜜臀av| 十八禁网站免费在线| 久久午夜亚洲精品久久| 人妻丰满熟妇av一区二区三区| 亚洲一区二区三区色噜噜 | 高清在线国产一区| 黑人巨大精品欧美一区二区mp4| 欧美日本亚洲视频在线播放| 1024香蕉在线观看| av欧美777| 无人区码免费观看不卡| 精品一区二区三区av网在线观看| 在线十欧美十亚洲十日本专区| ponron亚洲| 免费av中文字幕在线| 国产亚洲精品一区二区www| 国产亚洲精品久久久久久毛片| 亚洲精品一卡2卡三卡4卡5卡| 亚洲欧美激情在线| 大型黄色视频在线免费观看| 欧美亚洲日本最大视频资源| 18禁国产床啪视频网站| 久久中文字幕人妻熟女| 人成视频在线观看免费观看| 一区在线观看完整版| 欧美日韩亚洲国产一区二区在线观看| 看免费av毛片| 欧美 亚洲 国产 日韩一| 夜夜看夜夜爽夜夜摸 | 欧美黑人欧美精品刺激| 51午夜福利影视在线观看| 午夜精品久久久久久毛片777| av网站在线播放免费| 日韩精品中文字幕看吧| 国产免费av片在线观看野外av| 这个男人来自地球电影免费观看| 久久 成人 亚洲| www.自偷自拍.com| 久久中文字幕人妻熟女| 欧美成人免费av一区二区三区| 亚洲国产精品合色在线| 久久精品国产清高在天天线| 一级作爱视频免费观看| 亚洲av片天天在线观看| 成人三级黄色视频| 亚洲国产欧美一区二区综合| 人人妻人人添人人爽欧美一区卜| 国产av在哪里看| 久久人妻熟女aⅴ| 精品午夜福利视频在线观看一区| 日韩精品中文字幕看吧| 18禁国产床啪视频网站| 欧美日韩一级在线毛片| 午夜91福利影院| 天天躁狠狠躁夜夜躁狠狠躁| 久久精品成人免费网站| 高潮久久久久久久久久久不卡| 欧美日韩亚洲高清精品| 日韩视频一区二区在线观看| www.精华液| 午夜两性在线视频| 男女床上黄色一级片免费看| 夜夜夜夜夜久久久久| 久久久久国产精品人妻aⅴ院| 80岁老熟妇乱子伦牲交| 成年人黄色毛片网站| 美女福利国产在线| 在线观看一区二区三区激情| 在线观看免费日韩欧美大片| 亚洲av成人一区二区三| 久久狼人影院| 嫁个100分男人电影在线观看| xxxhd国产人妻xxx| 亚洲精品一区av在线观看| 精品免费久久久久久久清纯| 精品一区二区三区av网在线观看| 波多野结衣av一区二区av| 日韩av在线大香蕉| 最新美女视频免费是黄的| 国产欧美日韩一区二区三区在线| 日本a在线网址| 成人影院久久| 国产欧美日韩一区二区三区在线| 日日干狠狠操夜夜爽| 伦理电影免费视频| 精品电影一区二区在线| 狠狠狠狠99中文字幕| 黄色丝袜av网址大全| 国产成人欧美| 亚洲性夜色夜夜综合| 国产精品久久电影中文字幕| 大型黄色视频在线免费观看| 久久精品91无色码中文字幕| 黑人操中国人逼视频| 男人舔女人下体高潮全视频| 久99久视频精品免费| 国产成+人综合+亚洲专区| 亚洲精品久久成人aⅴ小说| 成年人黄色毛片网站| 9191精品国产免费久久| 精品人妻在线不人妻| 两性夫妻黄色片| 热re99久久国产66热| 国产不卡一卡二| 成年人黄色毛片网站| 黑人操中国人逼视频| 久久亚洲精品不卡| 一级作爱视频免费观看| 欧美日韩瑟瑟在线播放| 99热只有精品国产| e午夜精品久久久久久久| 欧美精品亚洲一区二区| 久久久水蜜桃国产精品网| 国产成人一区二区三区免费视频网站| 女性被躁到高潮视频| 99热只有精品国产| 国产精品亚洲av一区麻豆| 久久国产精品影院| 午夜福利在线免费观看网站| 制服人妻中文乱码| 日韩欧美国产一区二区入口| 亚洲一区二区三区欧美精品| 咕卡用的链子| 亚洲第一青青草原| 亚洲免费av在线视频| 欧美精品亚洲一区二区| 色综合站精品国产| 欧洲精品卡2卡3卡4卡5卡区| 涩涩av久久男人的天堂| 大香蕉久久成人网| 国产熟女xx| 99热只有精品国产| 两人在一起打扑克的视频| 久久国产精品影院| 天天添夜夜摸| 精品久久久久久久久久免费视频 | 成人黄色视频免费在线看| 又黄又粗又硬又大视频| 91麻豆精品激情在线观看国产 | 一区二区日韩欧美中文字幕| 亚洲成a人片在线一区二区| 侵犯人妻中文字幕一二三四区| 亚洲精品国产精品久久久不卡| 中出人妻视频一区二区| 久久婷婷成人综合色麻豆| 欧美日韩亚洲综合一区二区三区_| 免费av中文字幕在线| 欧美+亚洲+日韩+国产| 国产精品久久久久久人妻精品电影| 淫妇啪啪啪对白视频| 亚洲欧美日韩无卡精品| 欧美成狂野欧美在线观看| 女人爽到高潮嗷嗷叫在线视频| 久久精品国产清高在天天线| 成熟少妇高潮喷水视频| 亚洲精品中文字幕在线视频| 国产成人精品无人区| 亚洲精品av麻豆狂野| 午夜a级毛片| 日韩有码中文字幕| 一级a爱视频在线免费观看| av有码第一页| 国产成人av激情在线播放| 亚洲欧美日韩无卡精品| 一级作爱视频免费观看| 九色亚洲精品在线播放| 大陆偷拍与自拍| 国产高清国产精品国产三级| 男女下面进入的视频免费午夜 | 国产精品日韩av在线免费观看 | 在线观看66精品国产| 亚洲人成77777在线视频| 在线播放国产精品三级| 久久久国产欧美日韩av| 中文字幕人妻熟女乱码| 少妇 在线观看| av在线天堂中文字幕 | 在线观看一区二区三区| 国产成人一区二区三区免费视频网站| 亚洲精品成人av观看孕妇| 亚洲人成77777在线视频| 成人18禁高潮啪啪吃奶动态图| 涩涩av久久男人的天堂| 欧美人与性动交α欧美精品济南到| 色老头精品视频在线观看| 亚洲中文av在线| 夫妻午夜视频| 国产又色又爽无遮挡免费看| 欧美丝袜亚洲另类 | 久久精品影院6| 自拍欧美九色日韩亚洲蝌蚪91| 国产精品综合久久久久久久免费 | 午夜精品久久久久久毛片777| 欧美日韩av久久| 嫩草影院精品99| 国产成人av激情在线播放| 午夜福利欧美成人| 免费在线观看亚洲国产| 99久久久亚洲精品蜜臀av| 最近最新免费中文字幕在线| 亚洲va日本ⅴa欧美va伊人久久| 国产午夜精品久久久久久| 校园春色视频在线观看| 人人妻,人人澡人人爽秒播| 成年人黄色毛片网站| 老司机在亚洲福利影院| 叶爱在线成人免费视频播放| 怎么达到女性高潮| 亚洲精品一二三| 亚洲成国产人片在线观看| 久久久久久人人人人人| 国产精华一区二区三区| 亚洲色图av天堂| 叶爱在线成人免费视频播放| 窝窝影院91人妻| 少妇被粗大的猛进出69影院| 一级片'在线观看视频| 99国产极品粉嫩在线观看| 两性夫妻黄色片| 国产乱人伦免费视频| 国产有黄有色有爽视频| 99国产精品99久久久久| 深夜精品福利| 国产精品一区二区在线不卡| 婷婷六月久久综合丁香| www国产在线视频色| 自线自在国产av| 国产精品成人在线| 国产精品免费视频内射| cao死你这个sao货| 欧美 亚洲 国产 日韩一| videosex国产| 久久国产亚洲av麻豆专区| 精品乱码久久久久久99久播| 正在播放国产对白刺激| 国产高清激情床上av| 国产区一区二久久| 婷婷精品国产亚洲av在线| 久久香蕉激情| 成人特级黄色片久久久久久久| 国产精品久久久久久人妻精品电影| 搡老熟女国产l中国老女人| 99在线人妻在线中文字幕| 制服人妻中文乱码| 他把我摸到了高潮在线观看| svipshipincom国产片| 国产成人系列免费观看| 欧美丝袜亚洲另类 | 午夜福利在线免费观看网站| 精品高清国产在线一区| 十八禁网站免费在线| 国产精品一区二区在线不卡| 国产91精品成人一区二区三区| 亚洲男人的天堂狠狠| 国产成人系列免费观看| 久久久国产成人精品二区 | 精品久久久久久成人av| 一级a爱片免费观看的视频| 日本vs欧美在线观看视频| 老熟妇仑乱视频hdxx| 国产色视频综合| 亚洲精品成人av观看孕妇| 免费搜索国产男女视频| 亚洲午夜精品一区,二区,三区| 午夜亚洲福利在线播放| 又黄又粗又硬又大视频| 91av网站免费观看| 一本大道久久a久久精品| 久久久精品欧美日韩精品| 国产精品野战在线观看 | 美国免费a级毛片| 90打野战视频偷拍视频| 真人做人爱边吃奶动态| 19禁男女啪啪无遮挡网站| 国产在线精品亚洲第一网站| 亚洲第一青青草原| 久久热在线av| 99热只有精品国产| 国产精品一区二区免费欧美| 十八禁网站免费在线| 欧美久久黑人一区二区| 日韩欧美三级三区| 级片在线观看| 1024香蕉在线观看| 精品午夜福利视频在线观看一区| 国产高清视频在线播放一区| 国产精品成人在线| 午夜两性在线视频| 中文字幕人妻丝袜制服| av国产精品久久久久影院| 男女之事视频高清在线观看| 国产精品久久久久成人av| 亚洲av电影在线进入| 丁香六月欧美| 国产精品九九99| 亚洲色图综合在线观看| 长腿黑丝高跟| xxxhd国产人妻xxx| 国产精品九九99| 啦啦啦在线免费观看视频4| 男女床上黄色一级片免费看| 国产成人av激情在线播放| 亚洲av美国av| 一级毛片女人18水好多| 日本黄色日本黄色录像| 欧美最黄视频在线播放免费 | 伦理电影免费视频| 欧美老熟妇乱子伦牲交| 亚洲精品国产色婷婷电影| 在线永久观看黄色视频| 高清在线国产一区| 亚洲,欧美精品.| 人妻久久中文字幕网| 女人被躁到高潮嗷嗷叫费观| 欧美激情高清一区二区三区| 自拍欧美九色日韩亚洲蝌蚪91| 亚洲 国产 在线| 午夜免费激情av| 亚洲国产精品合色在线| 90打野战视频偷拍视频| 亚洲男人的天堂狠狠| 一进一出抽搐gif免费好疼 | 欧美性长视频在线观看| 亚洲熟妇中文字幕五十中出 | 搡老岳熟女国产| 欧美人与性动交α欧美精品济南到| 激情在线观看视频在线高清| 美女高潮到喷水免费观看| 亚洲精品国产色婷婷电影| 国产野战对白在线观看| 制服诱惑二区| www日本在线高清视频| 啦啦啦 在线观看视频| √禁漫天堂资源中文www| 女人高潮潮喷娇喘18禁视频| 中文欧美无线码| 欧美不卡视频在线免费观看 | 亚洲人成电影免费在线| 在线观看66精品国产| 757午夜福利合集在线观看| 国产精品久久久人人做人人爽| 一区在线观看完整版| 亚洲自偷自拍图片 自拍| 黄色视频不卡| 黑人猛操日本美女一级片| 波多野结衣高清无吗| 1024视频免费在线观看| 热re99久久国产66热| 亚洲精品一二三| 久久草成人影院| 欧美亚洲日本最大视频资源| 夜夜爽天天搞| 亚洲av成人一区二区三| 男女床上黄色一级片免费看| 亚洲欧美精品综合久久99| 亚洲 国产 在线| 成人手机av| a级毛片黄视频| 黑丝袜美女国产一区| 久久国产精品人妻蜜桃| 欧美在线黄色| 亚洲欧美激情综合另类| 国产无遮挡羞羞视频在线观看| a级毛片在线看网站| 亚洲一区二区三区不卡视频| 欧美日本中文国产一区发布| 多毛熟女@视频| av视频免费观看在线观看| 成人18禁高潮啪啪吃奶动态图| 一二三四社区在线视频社区8| 窝窝影院91人妻| 嫩草影院精品99| 两性午夜刺激爽爽歪歪视频在线观看 | 久久天躁狠狠躁夜夜2o2o| 日本黄色视频三级网站网址| 99热国产这里只有精品6| 婷婷精品国产亚洲av在线| 中出人妻视频一区二区| 国产一卡二卡三卡精品| 日日爽夜夜爽网站| 久久中文字幕人妻熟女| 国产精品98久久久久久宅男小说| 后天国语完整版免费观看| 欧美+亚洲+日韩+国产| 国产成人欧美在线观看| 少妇被粗大的猛进出69影院| av国产精品久久久久影院| 成在线人永久免费视频| 亚洲一区中文字幕在线| 欧美日韩福利视频一区二区| 老司机靠b影院| 极品人妻少妇av视频| 无遮挡黄片免费观看| 欧美中文综合在线视频| 免费高清视频大片| 国产伦一二天堂av在线观看| 免费看十八禁软件| 999久久久国产精品视频| 成人国语在线视频| 日韩欧美一区二区三区在线观看| 可以在线观看毛片的网站| 亚洲狠狠婷婷综合久久图片| 色老头精品视频在线观看| 桃红色精品国产亚洲av| 神马国产精品三级电影在线观看 | 99精品欧美一区二区三区四区| 窝窝影院91人妻| 91av网站免费观看| 国产亚洲av高清不卡| 久久久国产成人免费| 国产亚洲精品第一综合不卡| 黄色丝袜av网址大全| 国产黄a三级三级三级人| 好看av亚洲va欧美ⅴa在| 亚洲国产欧美一区二区综合| 国产高清视频在线播放一区| 精品久久蜜臀av无| 国产一卡二卡三卡精品| 丝袜美足系列| av网站免费在线观看视频| 久久精品91蜜桃| 很黄的视频免费| 一区福利在线观看| 国产精品电影一区二区三区| 久久精品国产亚洲av高清一级| 亚洲人成网站在线播放欧美日韩| 国产精品美女特级片免费视频播放器 | 午夜a级毛片| 我的亚洲天堂| 香蕉丝袜av| 一级黄色大片毛片| 国产成人一区二区三区免费视频网站| 国产精品香港三级国产av潘金莲| 我的亚洲天堂| 国产亚洲精品久久久久5区| 侵犯人妻中文字幕一二三四区| 在线观看免费午夜福利视频| 国产真人三级小视频在线观看| 成人影院久久| 黑丝袜美女国产一区| av免费在线观看网站| 午夜精品久久久久久毛片777| 欧美av亚洲av综合av国产av| 久久午夜综合久久蜜桃| 天天添夜夜摸| 亚洲欧美日韩另类电影网站| bbb黄色大片| 男女下面进入的视频免费午夜 | 久99久视频精品免费| 国产又爽黄色视频| 人人澡人人妻人| 99精国产麻豆久久婷婷| 欧美成人午夜精品| 两人在一起打扑克的视频| 精品国产美女av久久久久小说| 成人精品一区二区免费| 国产精品 国内视频| 亚洲专区中文字幕在线| 人妻久久中文字幕网| 国产欧美日韩精品亚洲av| 两性午夜刺激爽爽歪歪视频在线观看 | 欧美国产精品va在线观看不卡| 丝袜人妻中文字幕| 国产精品亚洲av一区麻豆| 国产野战对白在线观看| 国产日韩一区二区三区精品不卡| 丝袜美腿诱惑在线| 成人特级黄色片久久久久久久| 97超级碰碰碰精品色视频在线观看| 另类亚洲欧美激情| 黑人操中国人逼视频| 色精品久久人妻99蜜桃| 神马国产精品三级电影在线观看 | 长腿黑丝高跟| 亚洲国产精品合色在线| 欧美日韩一级在线毛片| 精品一品国产午夜福利视频| 一级毛片高清免费大全| 夜夜爽天天搞| 国产深夜福利视频在线观看| www.熟女人妻精品国产| 成在线人永久免费视频| 天堂俺去俺来也www色官网| 十分钟在线观看高清视频www| 欧美午夜高清在线| 国产伦一二天堂av在线观看| 午夜精品在线福利| 日韩 欧美 亚洲 中文字幕| 可以在线观看毛片的网站| 交换朋友夫妻互换小说| 欧美+亚洲+日韩+国产| 国产av一区在线观看免费| 露出奶头的视频| 国产视频一区二区在线看| 女人精品久久久久毛片| 欧美黑人欧美精品刺激| 热99国产精品久久久久久7| 一区在线观看完整版| 日韩 欧美 亚洲 中文字幕| 日日爽夜夜爽网站| 中亚洲国语对白在线视频| 99国产极品粉嫩在线观看| 久久影院123| 国产伦人伦偷精品视频| 成人av一区二区三区在线看| 日韩欧美在线二视频| 国产精品日韩av在线免费观看 | 久久中文看片网| 国产伦一二天堂av在线观看| 成人黄色视频免费在线看| 国产精品香港三级国产av潘金莲| 麻豆一二三区av精品| 一边摸一边抽搐一进一小说| 国产男靠女视频免费网站| 国产在线精品亚洲第一网站| 高清黄色对白视频在线免费看| 亚洲全国av大片| 亚洲欧洲精品一区二区精品久久久| 久久中文字幕人妻熟女| 999精品在线视频| 欧美另类亚洲清纯唯美| 淫秽高清视频在线观看| 丰满饥渴人妻一区二区三| 99久久综合精品五月天人人| 国产亚洲欧美在线一区二区| 一二三四在线观看免费中文在| 亚洲成a人片在线一区二区| 亚洲久久久国产精品| www日本在线高清视频| 黄色片一级片一级黄色片| 在线永久观看黄色视频| 亚洲专区字幕在线| 一级作爱视频免费观看| 丰满的人妻完整版| 国产亚洲精品一区二区www| 欧美色视频一区免费| 精品人妻在线不人妻| 国产亚洲精品一区二区www| 欧美色视频一区免费| 婷婷六月久久综合丁香| 国产伦一二天堂av在线观看| 99香蕉大伊视频| 精品人妻在线不人妻| 成人永久免费在线观看视频| 中文字幕人妻熟女乱码| 久久天堂一区二区三区四区| 99国产精品一区二区三区| 99久久国产精品久久久| 欧美黄色片欧美黄色片| 色老头精品视频在线观看| 性少妇av在线| 老汉色av国产亚洲站长工具| 久热爱精品视频在线9| 十分钟在线观看高清视频www| 日韩三级视频一区二区三区| 国产亚洲av高清不卡|