本篇文章主要介紹如何分析 Facebook 粉絲專業,從如何爬資料到視覺化圖表分析,再輸出成excel 報表,最後用機器學習的方法去預測發文可以得到的讚數,此篇 blog 會把程式碼獨立出來透過 jupyter notebook 來一步步實作,程式為 Python3,本文分析以擁有 200 多萬粉絲的蘋果日報為例。
文章中每篇都是大略說明和附幾張圖帶過,真正內容還是在Github 以Jupyter notebook一步步實做其連結如下 :
- Facebook粉絲頁分析三部曲-爬取篇(posts)
- Facebook粉絲頁分析三部曲-爬取篇(comments)
- Facebook粉絲頁分析三部曲-分析和輸出報表篇
- Facebook粉絲頁分析三部曲-預測篇
一 Facebook粉絲頁爬取篇(post,comment)
要爬取基本上是透過 Facebook Graph API 去取得粉絲頁的資料,但是使用 Facebook Graph API 還需要取得權限,有兩種方法 :
第一種是取得 Access Token
第二種是建立 Facebook App 的應用程式,用該應用程式的帳號,密碼當作權限
兩者的差別在於第一種會有時效限制,必須每隔一段時間去更新 Access Token,才能使用
Access Token
本文是採用第二種方法
要先取得應用程式的帳號,密碼 app_id, app_secret
其內容實作 : Facebook粉絲頁分析三部曲-爬取篇(posts)
其結果為5234篇post共花了20分鐘,存為csv截圖如下:
其內容實作 : Facebook粉絲頁分析三部曲-爬取篇(comments)
總共跑完有690628筆,106Mb,要花十幾個小時,存為csv截圖如下:
二 Facebook粉絲頁分析篇
使用套件
pandas : 在做資料分析的時候,通常都會把資料轉成pandas中DataFrame,因為可以快速有效地處理這些資料(統計,過濾,分組...)
matplotlib : python中最著名的繪圖套件,可以很輕易地畫出各種分析統計圖表
seaborn : 在matplotlib更強大方便的繪圖套件,提供更高階的API(用matplotlib要設定比較多,自由度較高,seaborn自由度沒那麼高,但比較易用)
按讚,留言,分享隨時間變化趨勢圖
星期幾發文數目統計長條圖
發文種類數目統計長條圖
Pearson Correlation of Features HeatMap
發文字頻文字雲
最後存為的分析報表
其內容實作 : Facebook粉絲頁分析三部曲-分析和輸出報表篇
三 Facebook粉絲頁預測篇
當我們爬完和分析完資料後,可不可以做更進一步的應用呢?
sure! 接下來就要來預測某篇post的按讚程度,假設我們知道post內容,發文類型,發文時間點,
我們能不能預測這篇post能得到多少讚呢? 若要預測得到多少讚的話,這就是一個regression problem
但我們先簡單一點,把它當成一個classification problem,
要如何作到這一點呢?
我們把reaction高於中位數的label成1,低於的label成0,去預測某篇post是0或是1就行了
預測結果 :
其內容實作 : Facebook粉絲頁分析三部曲-預測篇
結語
其中在預測的部份還有蠻多地方要改進的,原本我是把預測讚數當作 regression problem ,但是我用 ML 中 GBRT(Gradient Boost Regression Tree) 或是 time series forecasting 的 ARIMA model 做出來的效果都奇差無比,而且就算是當作 binary classification 做出來的準確度還是不高,猜測可能是 feature ngineering 要多加油或是還要找新的 feature 加入才行。