天池大坑-阿里音樂嘗試(1)

簡單嘗試一下阿里音樂,最多做到baseline吧,主要是想熟悉一下流程和工具
so,第一步將數據導入SQL中,百萬級有Mysql就可以了,還是習慣windows下的XAMPP+NaviCat,簡單好用。
http://www.site-digger.com/html/articles/20120525/34.html

導入數據到MySQL出現了小問題,104萬的數據導入後變成了522萬,初步估計是分隔符出現了問題。只好放棄導入嚮導,自定義sql語句:

load data infile 'D:\\alimusic\\mars_tianchi_user_actions.csv' 
into table `mars_tianchi_user_actions` 
fields terminated by ',' optionally enclosed by '"' escaped by '"' 
lines terminated by '\n'; 

結果居然是566萬。。。再導出來看,發現“數據表長度超過工作表外,會丟失部分有效數據。。。”原來真的是500萬

用python讀入:5652232

考慮用8月份數據做驗證集:共1016225條數據

SELECT
mars_tianchi_songs.song_id,
mars_tianchi_songs.artist_id,
mars_tianchi_user_actions.user_id,
mars_tianchi_user_actions.song_id,
mars_tianchi_user_actions.Ds,
mars_tianchi_user_actions.action_type
FROM
mars_tianchi_songs ,
mars_tianchi_user_actions
WHERE
mars_tianchi_songs.song_id = mars_tianchi_user_actions.song_id AND
mars_tianchi_user_actions.Ds < 20150800

統計成提交結果:

SELECT
`0801(1016625)`.artist_id,
`0801(1016625)`.Ds,
count(*) AS plays
FROM
`0801(1016625)`
WHERE
`0801(1016625)`.action_type = 1
GROUP BY
`0801(1016625)`.artist_id,
`0801(1016625)`.Ds

這裏先只統計action_type = 1的,文件名test_08_1(1500).csv

考慮自己的聽歌習慣:1、每天打開“我喜歡”或者某個收藏的列表,任由其播放;2、如果某天有時間,可能會查看推薦歌單,或直接查找某一類型歌曲;3、如果觀看了電視劇或電影覺得曲目不錯會查找,聽說某個喜歡的歌手出了一首新歌會查找,網絡空降神曲會查找。

相信大部分的人習慣與我類似,(音樂發燒友的數據於統計無太大意義,暫不考慮)所以每個用戶的每天可能有穩定的“播放”曲目,可以認爲會一直播放,需要優先作出處理。之後是對個性化數據提取特徵再建立模型求解,迴歸模型可能會好些。師兄說先建立分類模型,再嘗試迴歸效果會好些。

對第一個用戶進行分析,發現思路應該沒錯,但是該用戶沒有4月份之後的記錄,所以要對這類突然“消失”的用戶做出處理,第二個用戶居然只有三條記錄。。。
必須分析一下每個用戶的記錄數了:

SELECT
mars_tianchi_user_actions.user_id,
mars_tianchi_user_actions.song_id,
mars_tianchi_user_actions.gmt_create,
mars_tianchi_user_actions.action_type,
mars_tianchi_user_actions.Ds,
count(*) AS nums
FROM
mars_tianchi_user_actions
GROUP BY
mars_tianchi_user_actions.user_id
ORDER BY
nums DESC

本着不用也要先存下的原則設計”複雜“結構如下

用戶字典:userdict 嵌套字典
{“user1”:{“ltime”:”最後記錄時間”,”stime”:”最先記錄時間”,”songl”:”歌曲列表”,”typel”:”用戶行爲列表”,”numl”:”歌曲播放計數列表”,”altimel”:”歌曲播放時間列表”,”sondict”:”常用歌曲字典”}}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章