日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

文章召回-基于ALS的协同过滤算法实践及评估

發(fā)布時(shí)間:2024/3/24 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 文章召回-基于ALS的协同过滤算法实践及评估 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章召回-基于ALS的協(xié)同過(guò)濾算法

本項(xiàng)目完整源碼地址:https://github.com/angeliababy/ALS_col

項(xiàng)目博客地址: https://blog.csdn.net/qq_29153321/article/details/104007318

原理

ALS算法屬于User-Item CF,也叫做混合CF。它同時(shí)考慮了User和Item兩個(gè)方面。

用戶和商品的關(guān)系,可以抽象為如下的三元組:<User,Item,Rating>。其中,Rating是用戶對(duì)商品的評(píng)分,表征用戶對(duì)該商品的喜好程度。

一個(gè)用戶也不可能給所有商品評(píng)分,因此,R矩陣注定是個(gè)稀疏矩陣。

針對(duì)這樣的特點(diǎn),我們可以假設(shè)用戶和商品之間存在若干關(guān)聯(lián)維度(比如用戶年齡、性別、受教育程度和商品的外觀、價(jià)格等),我們只需要將R矩陣投射到這些維度上即可。

我們并不需要顯式的定義這些關(guān)聯(lián)維度,而只需要假定它們存在即可。一般情況下,k的值遠(yuǎn)小于n和m的值,從而達(dá)到了數(shù)據(jù)降維的目的。k的典型取值一般是20~200。

計(jì)算出來(lái)用戶對(duì)未知物品的得分,同時(shí),矩陣X和Y,還可以用于比較不同的User(或Item)之間的相似度。

優(yōu)缺點(diǎn):
首先,協(xié)同過(guò)濾不是全局推薦。詳細(xì)如下:

實(shí)踐部分

數(shù)據(jù)準(zhǔn)備
用戶資訊得分?jǐn)?shù)據(jù),也可用網(wǎng)上的電影數(shù)據(jù)集

用戶資訊得分方案: 1. 如果不是有效閱讀(閱讀時(shí)長(zhǎng)<2秒),得分為0 2. 閱讀,直接2分*閱讀占比 3. 點(diǎn)贊,直接3分 4. 評(píng)論,直接4分 5. 收藏或者分享,直接5分 6. 不喜歡,直接-1分

依據(jù)下面表格式構(gòu)造訓(xùn)練數(shù)據(jù),只需構(gòu)建代碼中用到的字段即可

CREATE TABLE `news_read` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',`user_id` int(11) NOT NULL DEFAULT '0',`member_id` int(11) NOT NULL DEFAULT '0',`channel_id` int(11) DEFAULT NULL COMMENT '頻道編號(hào)',`news_id` int(11) DEFAULT NULL COMMENT '文章編號(hào)',`entry_datetime` datetime DEFAULT NULL COMMENT '進(jìn)入時(shí)間',`leave_datetime` datetime DEFAULT NULL COMMENT '離開(kāi)時(shí)間',`readed_percent` int(11) DEFAULT NULL COMMENT '閱讀進(jìn)度',`is_try_share` bit(1) DEFAULT b'0' COMMENT '是否嘗試分享',`review_count` int(11) DEFAULT '0' COMMENT '評(píng)論數(shù)量',`is_review` bit(1) DEFAULT b'0' COMMENT '是否評(píng)論',`is_collect` bit(1) DEFAULT NULL COMMENT '是否收藏',`is_praise` bit(1) DEFAULT NULL COMMENT '是否點(diǎn)贊',`is_tread` bit(1) DEFAULT b'0' COMMENT '是否踩',`lang` int(11) DEFAULT '-1' COMMENT '1:中文、2:柬文、3:英文',`platform` int(11) DEFAULT '-1' COMMENT '1:安卓,2:蘋(píng)果',`batch_no` varchar(64) NOT NULL DEFAULT '' COMMENT '批次號(hào)',`source` tinyint(4) NOT NULL DEFAULT '99' COMMENT '資訊閱讀入口(1、歷史 2、收藏 3、頻道(遺棄) 4、相關(guān)推薦 5、搜索 6、用戶動(dòng)態(tài) 7、資訊模塊 8、視頻模塊 9、小視頻模塊 99、其它)',`news_type` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '資訊類型(1、圖文,2、圖集,3、視頻,4、小說(shuō)、6、廣告推廣 8、小視頻)',`add_datetime` datetime DEFAULT NULL COMMENT '添加時(shí)間',`app_version` varchar(128) DEFAULT '' COMMENT 'APP版本',`ip` varchar(255) DEFAULT '' COMMENT '客戶端IP',`device_id` varchar(255) DEFAULT '' COMMENT '設(shè)備ID',`country` varchar(255) DEFAULT NULL,`province` varchar(255) DEFAULT NULL,`city` varchar(255) DEFAULT NULL,`uuid` varchar(128) DEFAULT '' COMMENT '客戶端全局唯一id',`log_id` varchar(64) NOT NULL DEFAULT '' COMMENT '日志Id',`relation_news_ids` varchar(255) NOT NULL DEFAULT '' COMMENT '延展閱讀曝光的資訊',PRIMARY KEY (`id`),KEY `news_id` (`news_id`,`channel_id`,`member_id`) USING BTREE,KEY `channel_id` (`channel_id`,`news_id`,`member_id`),KEY `add_datetime` (`add_datetime`),KEY `channelId_memberId_time` (`channel_id`,`member_id`,`add_datetime`),KEY `member_id` (`member_id`,`add_datetime`,`channel_id`) USING BTREE,KEY `user_id` (`user_id`,`add_datetime`,`channel_id`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=53485290 DEFAULT CHARSET=utf8mb4 COMMENT='資訊閱讀行為表' news_read = news_read.select(news_read.user_id,news_read.member_id,news_read.news_id,news_read.readed_percent,news_read.is_try_share,news_read.is_collect,news_read.is_review,news_read.is_praise,news_read.entry_datetime,news_read.leave_datetime,news_read.news_type,news_read.add_datetime,news_read.id)

修改程序中讀取數(shù)據(jù)部分
運(yùn)行程序,修改路徑

spark-submit --master local --jars /home/spider/code/reconmmend_test/Trunk/news_recommed_reckon_java/action_reckon/searchword/lib/mysql-connector-java-5.1.38.jar --conf spark.pyspark.python=/usr/local/bin/python3 --conf spark.pyspark.driver.python=/usr/local/bin/python3 offline/user_news_score_t.py

ALS評(píng)估
上步中生成的news_score樣例數(shù)據(jù)如下:
user_id,member_id,item,score,log_time
51778098,898036,8644098,1.04,2020-01-06 10:39:21

1.訓(xùn)練數(shù)據(jù)

from pyspark.mllib.recommendation import Rating, ALS # 1.訓(xùn)練數(shù)據(jù)(用戶序號(hào),item,rating) ratings = user_data_join.map(lambda x: Rating(int(x[0]), int(x[1]), float(x[2])))

2.訓(xùn)練

model = ALS.train(ratings,50,10,0.01)

3.給單個(gè)用戶推薦物品

user = 3 topKRecs = model.recommendProducts(user, 10) for i in topKRecs:print(i)

4.測(cè)試數(shù)據(jù)
7天當(dāng)作訓(xùn)練數(shù)據(jù),1天當(dāng)作測(cè)試

# 處理數(shù)據(jù),用戶序號(hào),資訊,得分 user_data_join, user_label = get_data(datas, user_label)

5.預(yù)測(cè)數(shù)據(jù)

userProducts = ratings.map(lambda rating:(rating.user,rating.product)) print('實(shí)際的評(píng)分電影:',userProducts.take(5)) # print (model.predictAll(userProducts).collect()[0]) predictions = model.predictAll(userProducts)

6.評(píng)估

predictions = model.predictAll(userProducts).map(lambda rating:((rating.user,rating.product), rating.rating)) print('預(yù)測(cè)的評(píng)分:',predictions.take(5))ratingsAndPredictions = ratings.map(lambda rating:((rating.user,rating.product),rating.rating)).join(predictions) print('組合預(yù)測(cè)的評(píng)分和實(shí)際的評(píng)分:',ratingsAndPredictions.take(5)) # 組合預(yù)測(cè)的評(píng)分和實(shí)際的評(píng)分: [((1730, 8904080), (1.52, 1.5183552691178965)), ((2634, 8903648), (1.08, 1.109481704984579)), ((412, 8824284), (1.94, 1.9368518512651538)), ((759, 8841175), (2.0, 1.9916580018716354)),((846, 8825136), (5.0, 4.987908502485232))]from pyspark.mllib.evaluation import RegressionMetrics from pyspark.mllib.evaluation import RankingMetrics #((196, 242), (3.0, 3.089619902353484)) predictedAndTrue = ratingsAndPredictions.map(lambda x:x[1][0:2]) print (predictedAndTrue.take(5)) regressionMetrics = RegressionMetrics(predictedAndTrue) print ("均方誤差 = %f"%regressionMetrics.meanSquaredError) print ("均方根誤差 = %f"% regressionMetrics.rootMeanSquaredError)

7.評(píng)估結(jié)果
1)訓(xùn)練數(shù)據(jù)擬合的準(zhǔn)確性(7天當(dāng)作訓(xùn)練數(shù)據(jù),預(yù)測(cè)數(shù)據(jù)也來(lái)自訓(xùn)練集):
均方誤差 = 0.000245
均方根誤差 = 0.015641
2)測(cè)試數(shù)據(jù)的準(zhǔn)確性(7天當(dāng)作訓(xùn)練數(shù)據(jù),另1天當(dāng)作測(cè)試):
均方誤差 = 1.663446
均方根誤差 = 1.289746

參考博客:
https://blog.csdn.net/buptdavid/article/details/78970906
https://www.zybuluo.com/xtccc/note/200979

總結(jié)

以上是生活随笔為你收集整理的文章召回-基于ALS的协同过滤算法实践及评估的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妻视频一区二区三区 | 玖玖爱这里只有精品 | 97在线观看免费视频 | 黄频在线观看 | 中国一级特黄毛片大片 | 久久久久人妻一区精品色 | www.欧美视频 | 成人精品一区二区三区电影黑人 | 日韩va中文 | 亚洲乱码一区 | 国产三级av片| 91精品国产一区二区三区蜜臀 | 免费在线观看黄色av | 草草草在线 | 怒海潜沙秦岭神树 | 精品无码av一区二区三区 | 夜夜草天天草 | 人人妻人人澡人人爽精品日本 | 日韩成人高清视频在线观看 | 中文字幕色图 | 最好看的2019年中文在线观看 | 懂色一区二区三区免费观看 | 久久久美女视频 | 少女与动物高清版在线观看 | 一区二区三区四区中文字幕 | 视频三区在线 | 国产精品久久777777毛茸茸 | www国产无套内射com | 伊人院 | 天天天天射 | 少妇高潮av久久久久久 | 亚洲国产欧美另类 | 无码人妻精品一区二区三区不卡 | 在线观看精品 | 欧美亚韩一区二区三区 | 色婷婷综合久久久久中文字幕 | 午夜婷婷在线观看 | 韩国一级一片高清免费观看 | 视频在线日韩 | 精品一区二区三区四区五区六区 | 亚洲欧美中文日韩在线观看 | 91黄色入口 | 国产一区二区欧美日韩 | 97se亚洲国产综合在线 | 国产白袜脚足j棉袜在线观看 | 夜夜躁狠狠躁日日躁 | 香蕉色视频 | 久久99精品久久久久久 | 奇米影视第四色首页 | 欧美日韩国产一区二区三区 | 日韩av无码一区二区三区不卡 | 中文字幕18页| 国产熟女一区二区三区五月婷 | 亚洲理论片在线观看 | 亚洲精品久久久久久久久久吃药 | 日韩精品成人在线 | 欧美性生交片4 | 国产伦精品一区二区三区视频痴汉 | 日韩在线视频免费观看 | 国产真实乱人偷精品 | 国产av无码专区亚洲a∨毛片 | 日韩精品一区不卡 | 欧美日日夜夜 | 亚洲免费三区 | 成人在线综合网 | 日韩有码av | 国产免费内射又粗又爽密桃视频 | 久久发布国产伦子伦精品 | 白丝动漫美女 | 亚洲狠狠婷婷综合久久久久图片 | 亚洲精品久久久久久久久久 | 欧美激情在线播放 | www.日本黄| 欧美色图30p | 黄色小说网站在线观看 | 熟妇女人妻丰满少妇中文字幕 | 美女扒开屁股让男人捅 | 日韩黄色网页 | 男生女生搞鸡视频 | 日韩精品在线观看AV | 国产永久精品大片wwwapp | 超碰在线观看91 | 五月婷婷激情 | av黄色在线看 | 成av人片一区二区三区久久 | www.99在线 | 欧美成人xxx | 国产suv精品一区二区69 | 欧美午夜精品一区二区三区 | 亚洲综合视频在线 | 国产一区二区片 | 在线免费看av网站 | 亚洲综合精品一区 | www.99av| 这里只有精品视频在线观看 | a级在线观看视频 | 中文精品无码中文字幕无码专区 | 肉性天堂 | 97色综合 |