首頁>Club>
網易雲音樂經常會根據使用者所聽過且喜歡的歌曲進行相關推薦,多數時候推薦的會比較對胃口,這是根據哪些要素推薦的?曲風,歌手,專輯等等,感覺僅僅根據這些因素把音樂進行歸類就很龐大,而且裡面是根據什麼演算法來進行推薦的嗎?會不會考慮到使用者聽某首所停留的時長以及搜尋記錄之類。
8
回覆列表
  • 1 # RainWeb

    作為一個正在學習機器學習的大學生來說,這個問題正是我們所研究的,本人是在一家做PHP開發的公司裡實習,但最近老師要做一個語音識別導航的課題,要用Python和perl去實現,所以我就研究了一下Python和機器學習,作為練習,老師還讓我們一起做阿里天池賽,其中就有使用阿里星球裡6個月內五百萬條使用者使用記錄,和一萬條歌手記錄,基於大資料去分析未來幾個月會比較火熱的歌手,可能有同學說Java也可以做大資料,我開始也是一直做Java的,覺得Java很棒,但在接觸了Python以後,真的覺得使用Python處理資料特別簡單,給人感覺很舒服,沒有Java那麼多的套路,更沒有c++那麼繁瑣,作為一個程式設計師還是很推薦大家學一學的,當然,扯遠了,我們先用Python對資料對所有資料進行處理,在打點分析,根據評估函式做出分析,當然還有好多,懶得打了,如果回答沒被摺疊就再補充吧

  • 2 # Mystic

    這個問題分為兩個步驟,需要三個演算法模組

    第一個步驟叫做召回 - recall,第二個步驟叫做排序 - ranking

    三個演算法模組分別為1 使用者畫像模組 2 歌曲(歌單)畫像模組 3 推薦演算法模組

    兩個步驟指什麼含義?

    召回,就是指從海量的音樂(比如1000w首歌)中篩選出一個比實際推薦的歌單略大的音樂集合。比如每日推薦推薦20首歌,那麼我可能需要召回1000首歌。

    怎麼召回呢? 這就涉及到第一個和第二個演算法模組。

    使用者畫像描述了你的屬性,比如年齡、性別、喜好語言、喜好音樂風格、不同時間的聽歌喜好、最近一個月的聽歌喜好。

    這個模組主要是機器學習演算法,透過一系列你填過的資料和實際的行為資料來做的預測。

    歌曲畫像描述了歌的性質,比如在哪些歌單裡、歌的標籤、歌的內容、歌詞、風格、長度、甚至是節奏人聲等資訊。

    有了這兩個模組,我們怎麼召回呢?召回策略其實有很多,舉幾個例子,大家可以自己發散

    1 根據使用者最近聽過的10首歌曲,找出資料庫最相似的500首歌曲

    2 根據使用者聽歌的時間、地理位置、天氣,召回使用者可能最喜歡聽的歌曲

    3 根據使用者的風格喜好,召回這個風格最熱門的歌曲

    4 直接召回音樂排行榜排名最高的歌曲

    這樣透過許多的召回策略,我們就可以得到使用者可能喜歡的歌曲候選集合了!yeah!

    但是還沒完,我們使用者可能只能聽其中的3-5首歌曲,我們的歌單裡只放得下20首歌曲,

    如何精準命中使用者的喜好??如何從1000首曲子中選5首?

    這就涉及到第二個步驟,以及全部的演算法模組。

    這裡有很多的模型和數學知識可以應用,展開來講可以講10節課。但是推薦排序有三個核心思路是總體不會變的。

    1、基於內容的推薦(content-based filtering)。學術上一般content-based是特指音訊內容本身的,比如透過CNN提取出音樂的節奏、人聲特點。針對使用者對這些音訊特徵的喜好直接進行推薦。

    2、基於協同過濾推薦(collaboration filtering)。這個就是利用他人對歌曲的行為資訊,來判斷你有多可能喜歡這首歌曲。比如你手機裡的歌都是你舍友推薦給你的,你也愛聽,那麼如果有一天你舍友覺得一首新歌不錯,被網易雲音樂知道了,那網易雲音樂會給這首歌比較高的推薦值。

    3、社會化推薦(social recommendation)。基於社交資訊的推薦,物以類聚,可能你所在的這個音樂小群體最近都很喜歡一首新歌,那麼推薦演算法會認為你很有可能也喜歡這首歌。

    經過複雜的推薦模型,其實我們還有一個邏輯環節需要判斷!就是某些歌你是不是會比較討厭?比如夜深人靜的時候我不想聽動次打次的歌,那麼演算法就要透過規則把這些你會討厭的歌過濾掉。

    最後我們就得到了熱乎乎的網易雲音樂日推歌單~~~~贊一個~~~

  • 中秋節和大豐收的關聯?
  • 有多少對生活有追求的女人是被婚姻和現實打敗的?