人工智慧推薦算法庫- 推薦電影

2021-02-14 ITFactory

基線(Baseline)

在計算機術語中,基線(Baseline)是軟體文檔或源碼(或其它產出物)的一個穩定版本,它是進一步開發的基礎。

關於基線可以從以下兩個方面來理解:

1)代表多個原始碼文件的一組穩定版本。比如有三個文件,aaa.c、bbb.c和ccc.h。可以對這三個文件做一個基線,取aaa.c的版本1.1,取bbb.c的版本1.3,取ccc.h的版本1.0。(1.1,1.3,1.0)就是一個基線。

2)代表文檔的一個穩定狀態。比如有一個項目設計文檔,當設計基本完成,開發即將開始的時候,需要把這個文檔固定下來,內容不能再頻繁改變,否則開發人員就無所適從了,可能導致每個人所參照的文檔並不是同一個文檔。一個文檔如果經過討論被通過了,被固定了,就可以說這個文檔被「基線化」了,然後所有人就可以在這個「基線」的基礎上工作。

基線是項目儲存庫中每個工件版本在特定時期的一個「快照」。它提供一個正式標準,隨後的工作基於此標準,並且只有經過授權後才能變更這個標準。建立一個初始基線後,以後每次對其進行的變更都將記錄為一個差值,直到建成下一個基線。

KNNBaseline的官方說明

class surprise.prediction_algorithms.knns.KNNBaseline

KNNBaseline算法在電影推薦的應用例子

from __future__ import (absolute_import, division, print_function, unicode_literals)
import os
import io
from surprise import KNNBaseline
from surprise import Dataset,Reader

import logging

logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S')

def getSimModle():
# Load the movielens‐100k dataset
file_path = os.path.expanduser('./u.data')
# 告訴文本閱讀器,文本的格式是怎麼樣的
#定義一個Reader對象來解析文件或數據框
reader = Reader(line_format='user item rating timestamp', sep='\t')
#從用戶文件加載數據文件
data = Dataset.load_from_file(file_path, reader)
#獲取訓練集,這裡取數據集全部數據
trainset = data.build_full_trainset()
#使用pearson_baseline方式計算相似度 False以item為基準計算相似度 本例為電影之間的相似度
# Surprise中基於近鄰的方法(協同過濾)可以設定不同的度量準則。具體如下:
# 1:cosine 用戶(items)之間的cosine相似度
# 2:msd 用戶(items)之間的均方差誤差
# 3:pearson 用戶(items)之間的皮爾遜相關係數
# 4:pearson_baseline 計算用戶(item)之間的(縮小的)皮爾遜相關係數,使用基準值進行居中而不是平均值。
sim_options = {'name': 'pearson_baseline', 'user_based': False}
bsl_options = {'method': 'als', #sgd 隨機梯度下降法 #als交替最小二乘法
'n_epochs': 20,
}
#使用KNNBaseline算法
#一種基本的協同過濾算法
# k(int):要考慮的(最大)鄰居數聚合。默認為40個
# min_k(int):他要考慮的鄰居的最少數量聚合,如果沒有足夠的鄰居聚合,設置為零(因此預測結果相當於基線)。默認值為「1」。
# sim_options:相似性度量的選項字典
# bsl_options:基線估計的選項字典計算
algo = KNNBaseline(40,1,sim_options=sim_options,bsl_options=bsl_options)
#訓練模型
algo.fit(trainset)
return algo

# 獲取id到name的互相映射 步驟:2
def read_item_names():
"""
獲取電影名到電影id 和 電影id到電影名的映射
"""
#os.path.expanduser(path) 把path中包含的"~"和"~user"轉換成用戶目錄
file_name = (os.path.expanduser('.') +'/u.item')
rid_to_name = {}
name_to_rid = {}
with io.open(file_name, 'r', encoding='ISO-8859-1') as f:
for line in f:
line = line.split('|')
rid_to_name[line[0]] = line[1]
name_to_rid[line[1]] = line[0]
return rid_to_name, name_to_rid

# 基於之前訓練的模型 進行相關電影的推薦 步驟:3
def showSimilarMovies(algo, rid_to_name, name_to_rid):
# 獲得電影Toy Story (1995)的raw_id
toy_story_raw_id = name_to_rid['Beauty and the Beast (1991)'] #Beauty and the Beast(1991) 或 Toy Story (1995)
logging.debug('raw_id=' + toy_story_raw_id)
#把電影的raw_id轉換為模型的內部id
toy_story_inner_id = algo.trainset.to_inner_iid(toy_story_raw_id)
#將信息列印到控制臺上
logging.debug('inner_id=' + str(toy_story_inner_id))
#通過模型獲取推薦電影 這裡設置的是10部
toy_story_neighbors = algo.get_neighbors(toy_story_inner_id, 10)
logging.debug('neighbors_ids=' + str(toy_story_neighbors))
#模型內部id轉換為實際電影id
#列表表達式
neighbors_raw_ids = [algo.trainset.to_raw_iid(inner_id) for inner_id in toy_story_neighbors]
#通過電影id列表 或得電影推薦列表
neighbors_movies = [rid_to_name[raw_id] for raw_id in neighbors_raw_ids]
print('The 10 nearest neighbors of Toy Story are:')
for movie in neighbors_movies:
print(movie)
if __name__=="__main__":
# 獲取id到name的互相映射
rid_to_name, name_to_rid = read_item_names()

# 訓練推薦模型
algo = getSimModle()

##顯示相關電影
showSimilarMovies(algo, rid_to_name, name_to_rid)

運行結果:

Estimating biases using als...
Computing the pearson_baseline similarity matrix...
Done computing similarity matrix.
The 10 nearest neighbors of Toy Story are:
Lion King, The (1994)
Toy Story (1995)
Cinderella (1950)
Hunchback of Notre Dame, The (1996)
Sound of Music, The (1965)
Clueless (1995)
Aladdin (1992)
E.T. the Extra-Terrestrial (1982)
Winnie the Pooh and the Blustery Day (1968)
Ghost (1990)




  關注公眾號,轉粉兒不迷路

      在看點這裡好文分享給更多人↓↓

相關焦點

  • 算法左右歌曲推薦,而不是用戶喜好?
    編輯導語:如今,不少的音樂類軟體比如:QQ音樂、網易雲音樂,甚至短視頻類的抖音,都會向用戶推薦可能喜歡的歌曲/背景音樂。在這個大數據時代,算法支配著受眾,因此歌曲的推薦也基於算法先行,這就導致了用戶聽到的歌曲和喜好偏離,用戶聽到的都是同質化的、略顯「枯燥」的音樂。
  • 算法告訴你,如何推薦一部電影
    ' + str(n_movie))用戶數量:671,電影數量:9066用戶—評分矩陣本文只進行基於用戶的協同過濾算法的演示,所以,這裡需要創建一個以用戶為行,電影評分為列的二維矩陣。若是基於電影的協同過濾算法,則將矩陣進行轉置即可。同時,需要將數據集分為訓練集和測試集。
  • 反思Youtube 算法:個性化內容推薦能毀掉你的人格
    人工智慧算法驅動下的推薦系統世界上有15億的YouTube用戶,遠遠超過了擁有電視的家庭數量。他們觀看的視頻是由算法塑造的,這個算法掃描並排列了數十億的視頻,來確定用戶「接下來」的20個視頻片段,這些視頻都與之前的視頻有關聯,從統計數據上來看,也極有可能是為了讓人著迷。Youtube公司的內部人士告訴我,該算法是YouTube增長的最重要的引擎。
  • 算法推薦讓信息傳播更個性化 但也出現了亂象-中國法院網
    因為算法推薦,網際網路平臺越來越能抓住用戶的心,幫助人們更加方便、精準地獲取信息,也牢牢吸引了用戶的注意力。據不完全統計,當前基於算法的個性化內容推送已佔整個網際網路信息內容分發的70%左右。算法推薦逐漸成為各平臺「基本操作」的同時,諸如低俗劣質信息精準推送、「大數據殺熟」等亂象也凸顯出來。  作為數字經濟的重要推動力,算法如何實現更高質量發展?
  • 人工智慧的本質是一串算法?美國「愛奇藝」優化AI算法多賺10億!
    AI的基礎是「算法」,即計算機遵循的一組規則或指令。機器學習(ML)可以定義為「無需依賴基於規則的編程即可從數據中進行學習的算法」。網際網路基於算法運行,所有在線搜索均通過算法完成。藉助算法,電子郵件知道發去哪裡。
  • 人工智慧還是人工智障?——大型算法翻車現場
    2.2017年,矽谷的一位工程師想去Reddit工作,他思路清奇——首先寫了一篇水平很高的、關於如何改進Reddit推薦算法的文章,接著他通Reddit網站CEO霍夫曼在Facebook公開帳號、尋找到一些獨特的廣告定向,比如霍夫曼的性別、年齡、居住地、關注了哪些主頁等等,然後他通過Facebook的廣告系統、使用這些定向算法把自己寫的文章投放給了
  • 靠算法解決不了審核問題,YouTube 將全人工推薦孩子看什麼
    製作者們依靠逐漸摸索出 YouTube 平臺自動推薦的算法機制,悄無聲息地讓很多兒童觀看類似的視頻。隨後事件發酵,多家廣告商凍結了 YouTube 上投放的廣告,YouTube 表示會加強算法推薦審查並且會增加人工審查視頻內容,確保不會造成更壞的結果。但從最新的消息來看,YouTube 顯然無力依靠算法來徹底解決這個問題了。
  • 算法已經能繪畫,能作曲,能寫詩,真正的人工智慧還有多遠?
    人工智慧、深度學習、算法是近幾年高新科技領域的熱門話題。前幾年,阿爾法狗和李世石的人機大戰給人留下了深刻印象。圍棋世界冠軍李世石以1:4的比分敗給機器人阿爾法狗,讓人們直觀地看到了人工智慧的強大能力,並對其應用前景滿懷熱望。我們難免好奇,現在的人工智慧有哪些更強大的功能?它們是如何實現的?
  • YouTube視頻機器學習推薦算法探測
    YouTube的推薦系統利用機器學習算法來決定自動播放哪些視頻或"up next"會播放那些視頻(推薦系統)。然而,它使用的確切公式是保密的。整體數據揭示了其推薦算會偏重推廣哪些視頻,或者個人視頻從"up next"的推薦中收到了多少次觀看,這些數據也不對外公開。
  • 愛奇藝打造的人工智慧——卡通人臉識別算法iCartoonFace
    #國產動漫#題記:我的天吶,以後還有什麼是「人工智慧三維卡通可以被識別出來雖然沒見過豬遊泳,但還是見過豬在泥裡打滾兒的,對於圖像識別技術,小編微微知道一點的,也參與過一點點開發(不過呢,也僅是調用一下API而已,其底層實現並不知曉),但就小編那點見識來說呢,也多是基於「基於OpenCV」的圖像識別,有一次用到了真正的人臉識別,是AS3裡的一個人臉識別庫(
  • 人工智慧已經成為企業轉型的關鍵技術力量
    人工智慧API、人工智慧平臺、人工智慧開源社區等,也成為了產業發展的熱詞。 今年10月23日,2020年科大訊飛全球1024開發者節以「A.I.煥新•更美好」為主題,在合肥啟幕。在大會的上半場,科大訊飛高級副總裁、消費者事業群總裁發布了全新1024計劃4.0,同時,還公布了訊飛開發平臺聯合艾瑞諮詢發布的《2020中國人工智慧API經濟白皮書》。
  • 抖音、QQ音樂、網易雲音樂們,算法左右歌曲推薦,而不是用戶喜好?
    「像我很喜歡看電影推薦類的短視頻,以前這些視頻的配樂還比較多樣,現在卻非常一致,都是那些節奏相似的洗腦旋律,聽多了真的頭疼。」筱佳有點無奈。從芒種、野狼disco到鏡花水月、踏山河,這些不斷重複出現的配樂讓筱佳被迫單曲循環,對歌曲本身的看法也從一開始的無感到後來一聽見片段就十分厭煩,甚至影響了筱佳觀看視頻的興致。
  • 機器學習算法工程師必讀經典暢銷書推薦
    打開APP 機器學習算法工程師必讀經典暢銷書推薦 深度學習自然語言 發表於 2020-12-26 09:38:23 【導讀】今天給大家推薦一本機器學習算法工程師必讀經典暢銷書!
  • 人臉識別測溫機方案淺析:產品原理與免費算法推薦
    針對這一情況,本文將從技術原理、免費算法推薦、人臉識別硬體選型三大方面,幫助有需要的開發者進一步了解人臉測溫機一體機的產品及研發方案。人臉識別算法推薦:免費、離線SDK人臉識別算法是傳統紅外測溫一體機脫胎換骨的關鍵,因此選擇合適算法也就非常重要。當前人臉識別市場規模不斷擴大,算法廣泛應用於人臉閘機、社區門禁、醫療建檔、商場客群分析等場景中。
  • 論文解讀|微信看一看實時Look-alike推薦算法
    作者丨gongyouliu編輯丨lily來源 | 授權轉載自大數據與人工智慧(ID:ai-big-data)微信看一看的精選文章推薦(見下面圖1)大家應該都用過,微信團隊在今年發表了一篇文章來專門介紹精選推薦的算法實現細節(Real-time Attention based Look-alike Model,簡稱RALM算法),這就是我們這篇文章要講解的內容
  • 網易雲音樂的歌單推薦算法是怎樣的?
    網易雲音樂推薦的歌單幾乎次次驚豔,那麼網易雲音樂的歌單推薦是網音項目團隊精心挑選製作的,還是眾多音樂達人的推薦?即:歌單是網音官方提供,還是UGC?才有如此對口味的歌單推薦? 事實上「商品推薦」系統的算法( Collaborative filtering )分兩大類,第一類,以人為本,先找到與你相似的人,然後看看他們買了什麼你沒有買的東西。
  • 全網電影電視劇資源大全【高清推薦】
    全網電影電視劇資源大全【高清推薦】熱門電影電視劇免費看,最新VIP影視大全滑到底部點擊閱讀原文 全網影視免費看
  • 剛買完手機,下一秒系統就推薦了耳機,為什麼?
    我們可以通過一組數據了解推薦系統的價值:Netflix:2/3被觀看的電影來自推薦Google新聞:38%的點擊量來自推薦Amazon:35%的銷量來自推薦當你看到這些數字,推薦系統的價值就不言而喻了吧?Where to apply?
  • 超詳細丨推薦系統架構與算法流程詳解
    推薦算法的理解  如果說網際網路的目標就是連接一切,那麼推薦系統的作用就是建立更加有效率的連接,推薦系統可以更有效率的連接用戶與內容和服務,節約了大量的時間和成本。  如果把推薦系統簡單拆開來看,推薦系統主要是由數據、算法、架構三個方面組成。    數據提供了信息。
  • 算法推薦雙刃劍效應凸顯 如何把好人工智慧方向盤
    算法推薦這把雙刃劍如何因勢利導,趨利避害,值得思考。   算法推薦 「越用越懂你」   近年來,一些平臺開始使用「算法推薦」模型進行精確推薦。這一點在內容媒體平臺上尤為突出。   在今日頭條帶動下,目前,很多客戶端都加載了算法推薦功能。