機器學習12推薦系統

推薦系統(Recommender Systems)?

推薦系統根據瀏覽用戶過去買過什么書,或過去評價過什么電影來判斷并推薦新產品給用戶。

這些系統會為像亞馬遜和網飛這樣的公司帶來很大一部分收入。

因此,對推薦系統性能的改善,將對這些企業的有實質性和直接的影響。


對機器學習來說,特征是很重要的,你所選擇的特征,將對你學習算法的性能有很大的影響。因此,在機器學習中有一種大思想,它針對一些問題,可能并不是所有的問題,而是一些問題,有算法可以為你自動學習一套好的特征。推薦系統就是一個例子。


例子:?我們有 5 部電影和 4 個用戶, 我們要求用戶為電影打分。 ?




基于內容的推薦系統(Content Based Recommendations)

在一個基于內容的推薦系統算法中,假設對于希望推薦的東西有一些數據,這些數據是有關這些東西的特征。

在例子中,假設每部電影都有兩個特征,如 x1代表浪漫程度,x2?代表動作程度。


下面我們要基于這些特征來構建一個推薦系統算法。?

假設我們采用線性回歸模型,可以針對每一個用戶都訓練一個線性回歸模型。



代價函數:



上面的代價函數只是針對一個用戶的, 為了學習所有用戶, 我們將所有用戶的代價函數求和



如果要用梯度下降法來求解最優解,我們計算代價函數的偏導數后得到梯度下降的更新公式為:




在之前的基于內容的推薦系統中,對于每一部電影,我們都掌握了可用的特征,使用這些特征訓練出了每一個用戶的參數。

相反地,如果我們擁有用戶的參數,我們可以學習得出電影的特征。


首先,用戶要對擁有特征的電影進行評分,此時就可以學習出用戶的偏好參數。

之后,上線新電影時,用戶對其觀看并打分,此時針對這個新電影,就可以根據用戶的偏好參數來自動學習出電影的特征。

—————————————————————————————————————————————————————————


協同過濾(Collaborative Filtering)

但是如果我們既沒有用戶的參數,也沒有電影的特征,這兩種方法都不可行了。

協同過濾算法可以同時學習這兩者。

優化目標改為同時針對 x 和 θ 進行:


對代價函數求偏導數的結果如下:


注:在協同過濾從算法中,我們通常不使用bias項,如果需要的話,算法會自動學得。 ?


協同過濾算法使用步驟如下:



對于電影 x(i)和另一電影 x(j),依據兩部電影特征向量之間的距離 ||x(i)-x(j)|| 的大小,可以判斷它們是否為同一類電影。


小結:



—————————————————————————————————————————————————————————


舉例子: ?

1.當給出一件產品時,你能否找到與之相關的其它產品。?

2.一位用戶最近看上一件產品,有沒有其它相關的產品,你可以推薦給他。?


我將要做的是:實現一種選擇的方法,寫出協同過濾算法的預測情況。
?

我們有關于五部電影的數據集,我將要做的是,將這些用戶的電影評分,進行分組并存到一個矩陣中。?

我們有五部電影,以及四位用戶,那么這個矩陣 Y 就是一個 5 行 4 列的矩陣,它將這些電影的用戶評分數據都存在矩陣里:


推出評分:


找到相關影片:



現在既然你已經對特征參數向量進行了學習,那么我們就會有一個很方便的方法來度量兩部電影之間的相似性。

例如說:電影 i 有一個特征向量 x(i),你是否能找到一部不同的電影?j,保證兩部電影的特征向量之間的距離 x(i)和 x(j)很小,那就能很有力地表明電影 i 和電影 j?在某種程度上有相似,至少在某種意義上,某些人喜歡電影 i,或許更有可能也對電影 j 感興趣。?

總結一下, 當用戶在看某部電影 i 的時候,如果你想找 5 部與電影非常相似的電影,為了能給用戶推薦 5 部新電影,你需要做的是找出電影 j,在這些不同的電影中與我們要找的電影 i 的距離最小,這樣你就能給你的用戶推薦幾部不同的電影了。?

通過這個方法, 希望你能知道, 如何進行一個向量化的計算來對所有的用戶和所有的電影進行評分計算。 同時希望你也能掌握, 通過學習特征參數, 來找到相關電影和產品的方法。



實現細節:均值歸一(Implementational Detail_ Mean Normalization)



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387244.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Apriori進行關聯分析(二)

使用Apriori進行關聯分析(二)書接上文(使用Apriori進行關聯分析(一)),介紹如何挖掘關聯規則。發現關聯規則我們的目標是通過頻繁項集挖掘到隱藏的關聯規則。所謂關聯規則,指通過某個…

Apache Tomcat 7 Configuration BIO NIO AIO APR ThreadPool

Apache Tomcat 7 Configuration Reference (7.0.93) - The Executor (thread pool)https://tomcat.apache.org/tomcat-7.0-doc/config/executor.html Tomat組件研究之ThreadPool - 老碼農的專欄 - CSDN博客https://blog.csdn.net/chen77716/article/details/344764 Tomcat中的線…

數學筆記3——導數3(隱函數的導數)

數學筆記3——導數3(隱函數的導數)冪函數的擴展形式f(x) xn的導數:f’(x) nxn-1,n是整數,該公式對f(x) xm/n, m,n 是整數同樣適用。推導過程:什么是隱函數引自知乎:“如果方程F(x,y)0能確定y…

機器學習13大規模數據集

大型數據集的學習(Learning With Large Datasets) 如果我們有一個低方差的模型, 增加數據集的規模可以幫助你獲得更好的結果。 我們應該怎樣應對一個有 100 萬條記錄的訓練集? 以線性回歸模型為例,每一次梯度下降…

svn認證失敗,解決方案

在svnserve.conf:文件中去掉authz-db authz前面的#號,會出現的認證失敗。 造成此原因的主要問題就是authz文件中權限沒有配置好。 例如: 創建prj1庫 svnadmin create prj1 修改配置文件 svnserve.conf: [general] anon-access read auth-access write…

Python機器學習庫sklearn的安裝

Python機器學習庫sklearn的安裝 scikit-learn是Python的一個開源機器學習模塊,它建立在NumPy,SciPy和matplotlib模塊之上能夠為用戶提供各種機器學習算法接口,可以讓用戶簡單、高效地進行數據挖掘和數據分析。 Ubuntu14.04系統上安裝 安裝num…

Java07多線程

14 多線程 操作系統的多任務(multitasking):在同一時刻運行多個程序的能力。 多線程在較低的層次上擴展了多任務的概念:一個程序同時執行多個任務。 通常,每一個任務稱為一個線程(tread)&…

MySQL字段拼接Concat

有時候,從數據庫中拿出的數據并不是我們想要的格式,比如,有以下的vendors表 如果,想以 name (location)的格式展現出來,那么就要用到MySQL的Concat了。 Concat()拼接串,即把多個串連接起來形成一個較長的串…

使用pycharm調用模塊后字體變灰 是什么原因呢?

使用pycharm調用模塊后字體變灰 是什么原因呢?點擊小燈泡提示出現以下內容:This inspection detects names that should resolve but dont. Due to dynamic dispatch and duck typing, this is possible in a limited but useful number of cases. Top-l…

操作系統01概述

第一章 概論 《Operating System Internals and Design Principles》 《Applied Operating System Concepts》 操作系統——裸機上的第一層軟件,它是對硬件系統功能的首次擴充,填補人與機器之間的鴻溝。 1.1 操作系統與計算機同在 1.2 對操作系統的…

CNN訓練模型 花卉

一、CNN訓練模型 模型尺寸分析:卷積層全都采用了補0,所以經過卷積層長和寬不變,只有深度加深。池化層全都沒有補0,所以經過池化層長和寬均減小,深度不變。http://download.tensorflow.org/example_images/flower_photo…

Linux re

正則表達式并不是一個工具程序,而是一個字符串處理的標準依據,如果想要以正則表達式的方式處理字符串,就得使用支持正則表達式的工具,例如grep、vi、sed、asw等。 注意:ls不支持正則表達式。 grep 正則表達式: 注意gr…

操作系統02進程管理Process_Description_and_Control

作業的基本概念:用戶再一次計算過程中或一次事務處理過程中,要求計算機系統所做的工作的集合。 包含多個程序、多個數據、作業控制說明書 系統調用時操作系統提供給編程人員的唯一接口。 1、文件操作類; 2、進程控制類; 3、資…

藍橋杯 方格填數(全排列+圖形補齊)

方格填數 如下的10個格子 填入0~9的數字,同一數字不能重復填。要求:連續的兩個數字不能相鄰。(左右、上下、對角都算相鄰) 一共有多少種可能的填數方案? 請填寫表示方案數目的整數。注意:你提交的應該是一個…

操作系統03進程管理Process_Scheduling

2 Process Scheduling >Type of scheduling >Scheduling Criteria (準則) >Scheduling Algorithm >Real-Time Scheduling (嵌入式系統) 2.1 Learning Objectives By the end of this lecture you should be able to Explain what is Response Time 響應時間-…

花卉分類CNN

tensorflow升級到1.0之后,增加了一些高級模塊: 如tf.layers, tf.metrics, 和tf.losses,使得代碼稍微有些簡化。 任務:花卉分類 版本:tensorflow 1.3 數據:http://download.tensorflow.org/example_images/f…

【模板】可持久化線段樹

可持久化線段樹/主席樹: 顧名思義,該數據結構是可以訪問歷史版本的線段樹。用于解決需要查詢歷史信息的區間問題。 在功能與時間復雜度上與開n棵線段樹無異,然而空間復雜度從$O(n\times nlogn)$降到了$O(nlogn)$。 實現方法: 每次…

skimage庫需要依賴 numpy+mkl 和scipy

skimage庫需要依賴 numpymkl 和scipy1、打開運行,輸入cmd回車,輸入python回車,查看python版本2、在https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 中,根據自己python版本下載需要的包 (因為我的是python 2.7.13 …

操作系統04進程同步與通信

4.1 進程間的相互作用 4.1.1 進程間的聯系資源共享關系相互合作關系臨界資源應互斥訪問。臨界區:不論是硬件臨界資源,還是軟件臨界資源,多個進程必須互斥地對它們進行訪問。把在每個進程中訪問臨界資源的那段代碼稱為臨界資源區。顯然&#x…

oracle遷移到greenplum的方案

oracle數據庫是一種關系型數據庫管理系統,在數據庫領域一直處于領先的地位,適合于大型項目的開發;銀行、電信、電商、金融等各領域都大量使用Oracle數據庫。 greenplum是一款開源的分布式數據庫存儲解決方案,主要關注數據倉庫和BI…