爬取簡書百萬頁面 分析簡書用戶畫像

關注天善智能,走好數據之路↑↑↑

歡迎關注天善智能,我們是專注於商業智能BI,大數據,數據分析領域的垂直社區,學習,問答、求職一站式搞定!

爬取簡書百萬頁面 分析簡書用戶畫像

爬取簡書百萬頁面 分析簡書用戶畫像

在本文中我會嘗試如何從0數據開始到獲取百萬頁面,進行用戶數據分析、建模,再數據信息化、可視化,生成用戶畫像分析用戶特徵。

緣起:幾個月前正式進駐簡書平臺,不由的想了解下在這個平臺上聚集的都是些什麼人,有哪些人跟我 臭味相投 品味相似。作為技術人,首先想到是用一些技術手段來分析,看到簡書上有不少爬蟲、數據分析技術文章,不由的技癢,於是便有了自造輪子的想法。

本文會談及以下內容:

  • 數據採集

  • 數據清洗

  • 數據分析

  • 簡書粉絲排行榜

  • 簡書用戶常用詞排行榜

  • 簡書用戶愛好排行榜

  • 簡書用戶喜愛書籍排行榜

  • 數據可視化

  • 用戶關鍵詞雲圖

  • 用戶畫像

  • 機器學習

  • 用戶性別預測

  • 用戶愛好分析

  • 用戶推薦


大綱

  • 用戶畫像概述(是什麼,有什麼用,怎麼做)

  • 獲取抽樣用戶數據

    • 需要什麼樣的抽樣數據

  • 獲取用戶發表內容,提取用戶關鍵詞

    • 難點:文章列表獲取;正文提取;提取關鍵詞

  • 性別分析

    • 性別數據獲取

    • 難點:數據樣本少;新浪反爬

    • 機器學習分類

  • 愛好分析

    • 愛好和興趣的區別

    • 構建愛好分類

  • 關鍵興趣分析

    • 什麼是關鍵興趣

    • 獲取書籍數據

    • 獲取電影數據(未完成)

  • 結果分析

    • 典型男性用戶例子及分析

    • 簡書整體用戶群體畫像

    • 簡書男性群體用戶畫像

    • 簡書女性群體用戶畫像

    • 構建網站群體用戶畫像

    • 網站個體用戶畫像

  • 用戶推薦

    • 目的:增加用戶粘性;提高內容爆光率;營銷活動推廣

    • 做法:千人千面的個性化推薦

    • 使用什麼推薦算法:個性化標籤;協同過濾(UserCF/ItermCF)

    • 例子:典型男性用戶例子及分析相似用戶

  • 存在問題

  • 涉及工具


用戶畫像概述(是什麼,有什麼用,怎麼做)

用戶畫像是根據用戶基本屬性、社會屬性、生活習慣和消費行為等信息而抽象出的一個標籤化的用戶模型。構建用戶畫像的核心工作即是給用戶貼“標籤”,而標籤是通過對用戶信息分析而來的高度精煉的特徵標識。

用途

用戶畫像的作用

  • 精準營銷,分析產品潛在用戶,針對特定群體利用短信、郵件等方式進行營銷;

  • 用戶統計,比如購買某類書籍人數 TOP10;

  • 數據挖掘,構建智能、個性化推薦系統,利用關聯規則計算,喜歡讀書的人通常喜歡什麼商品品牌,利用聚類算法分析,喜歡讀書的人年齡段分佈情況;

  • 進行效果評估,完善產品運營,提升服務質量,其實這也就相當於市場調研、用戶調研,迅速下定位服務群體,提供高水平的服務;

  • 對服務或產品進行私人定製,精準到某一類甚至每一位客戶提供個性化服務

  • 業務經營分析以及競爭分析,影響企業發展戰略

用戶畫像的基本構成

構建用戶畫像的可以通過四組屬性,它們是:用戶靜態屬性、用戶動態屬性、用戶消費屬性、用戶心理屬性

用戶靜態屬性

用戶靜態屬性,是指一些較穩定不會頻繁變化的屬性,靜態屬性是用戶畫像建立的基礎,最基本的用戶信息記錄。如性別、年齡、學歷、角色、收入、地域、婚姻狀態等。

用戶動態屬性

用戶動態屬性,動態屬性指具有可變性,如用戶的興趣愛好、在互聯網上的活動行為特徵。

用戶心理屬性

用戶心理屬性,心理屬性指用戶在環境、社會或者交際、感情過程中的心理反應,或者心理活動

用戶消費屬性

消費屬性指用戶的消費意向、消費意識、消費心理、消費嗜好等,對用戶的消費有個全面的數據記錄,對用戶的消費能力、消費意向、消費等級進行很好的管理。

用戶畫像類型

用戶畫像可分為群體用戶畫像和個體用戶畫像,前者是抽象的族群代表,表示某一類人的特徵,用於分析群體特徵;後者是具體到某個個體用戶上,表示該用戶的特徵,用於做個性化分析。

怎麼做

  • 數據收集 - 根據數據來源可分為內部數據庫、ETL、外部網站數據採集

  • 數據建模 - 根據所獲取到的數據建立模型,注入數據調整模型參數

  • 數據分析及預測 - 數據可視化、輸出報表、趨勢預測

說到數據挖掘,是把散亂數據轉換成「有價值」信息的過程,數據是可以是數字或者文本內容甚至圖像,而信息是有語義的、人腦可理解的報告、圖表。

數據挖掘的過程是:獲取數據(內部數據庫查詢、外部網站抓取、購買接口)-> 數據清洗(數據結構化)-> 數據分析(建模、應用算法公式)-> 數據信息化(報表結論、數據可視化)

更具體怎麼做,下面我會以簡書的真實用戶數據為例子展示下。


構建簡書用戶畫像

簡書用戶數據收集

獲取抽樣用戶數據

作為簡書的外部普通用戶,也只有通過“數據採集”(網頁爬蟲)這個途徑來獲取數據,而據說簡書用戶上千萬,日活過百萬,顯然全部抓取下來不知何年月,因此進行抽樣分析是比較合理的做法。

需要什麼樣的抽樣數據?

顯然活躍用戶是我們需要的關注。在簡書上,活躍用戶有2種,一種是大V(粉絲數量多),另外一種是發帖多的,這裡我選擇了粉絲數量多的這類用戶。為什麼不選發帖最多的?一個網站的人氣一般都是靠大V用戶群帶動的,這群人產生的內容介於PGC(專業編輯)和UGC(普通用戶貢獻)之間,他們產生的內容會比較有影響力。而發帖多不代表有影響力,在背後發帖的說不定還可能是腳本程序。

為了使用方便,我使用Ruby 開發了自己的爬蟲(簡書上有很多介紹Scrapy這個優秀的爬蟲框架的使用教程,工具使用自己熟悉的就好),鏈接規則設置為允許網站首頁、用戶主頁、文章內容頁(為了獲取評論用戶鏈接)、粉絲列表(followers)、關注列表(following),如圖↓

爬取簡書百萬頁面 分析簡書用戶畫像

爬蟲鏈接規則設置.png

爬蟲啟動後會自動抓取符合這些規則的頁面,並自動解析頁面內鏈接,保存符合配置規則的鏈接再進行抓取。

〖Tips:說易行難,為了提高爬蟲效率一般我們都會使用多線程,這裡面要涉及到併發編程、master-worker調度的工作模式,總而言之,寫爬蟲不難,但開發一個高效爬蟲框架不輕鬆,建議初學者先掌握使用流行工具框架再去造輪〗

最後爬蟲抓取了約31萬個頁面,其中有11萬個用戶主頁,感覺也夠用了,如圖

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶頁面抓取結果.png

增加一個ExtractUserPipeline(Pipeline是我用於在爬蟲框架中處理獲取頁面內容的自定義類,可參考Scrapy的Pipeline概念)來解析提取用戶的信息,可使用css selector、正則表達式處理頁面內容,得到一個包含用戶名稱、性別、粉絲數、文章數等基礎用戶信息的json結構的數據,例如:

爬取簡書百萬頁面 分析簡書用戶畫像

用戶提取數據example.png

在爬蟲框架上運行這個Pipeline,獲取到11萬份格式好的用戶數據樣本,作為抽樣沒有必要使用全部數據,因此我只選取了排行榜上的前10000個數據,按照關鍵值“followers_count”來排序,最後得到了一份“簡書Top 10000 粉絲排行榜” ,如圖

爬取簡書百萬頁面 分析簡書用戶畫像

簡書Top 10000 粉絲排行榜.png

〖Tips:一開始我是使用1000條數據,數據量時少方便調整模型和算法參數,跑一次最多幾十分鐘,到最後要出結論報表時才使用10000用戶數據,會涉及近70萬文章頁面,這時每跑一次分析運算都是按小時算的了〗

獲取用戶發表內容,提取用戶關鍵詞

觀其“言行舉止”是瞭解一個人的辦法,在簡書上,用戶“發聲”的自然就是其發佈的文章,因此需要獲取用戶發表過的文章內容是收集下一個特徵數據的基礎。

  • 文章列表

簡書給出了第一個“難題”:用戶的文章列表使用AJAX翻頁,普通爬蟲無法直接獲取分頁列表。這種問題一般有兩種解決:一是查看Network請求,通過編程拼接出所請求的url;二是使用headless browser(如 PhantomJS/Selenium/SlimerJS/Chrome headless)。使用headless browser比較通用但運行效率低,而簡書的分頁規則也只是最簡的分頁數+1,所以我的解決辦法是添加一個Pipeline,在獲取到一個列表頁時執行分析拼接出下一頁的鏈接加入待抓取頁面列表。

開啟爬蟲服務對這1萬個用戶鏈接進行爬取,跑完能得到約60萬個內容頁、7萬個列表分頁,再加上前面的抓取的31萬,多達到100萬個頁面,為家裡的網絡帶寬心疼一下下。

爬取簡書百萬頁面 分析簡書用戶畫像

簡書內容頁面抓取結果-數量.png

另外,從爬蟲框架對簡書的抓取結果的分析報告中,發現簡書的網頁響應都很快,平均每個頁面300ms,97%的頁面都能秒開,只有15%的頁面打開在300ms以上,而超過3秒以上的幾乎是0%,贊!

爬取簡書百萬頁面 分析簡書用戶畫像

簡書內容頁面抓取結果-分析.png

〖Tips:有少量用戶約50個在抓取時返回404,可能被簡書關閉了帳號,所以下面出現分析報表中並不是完整的10000整數〗

  • 提取正文

一篇內容頁中除了正文,還有很多重複的“裝飾”語,如簡書每個內容頁面都有“讚賞支持”、“關注”、“登錄” 等詞,如果都無差別收錄顯然會是出現最高頻次、卻是對文章表述毫無意義的詞,因此需要先提取出正文內容,再對正文進行分詞才合理。最簡單的做法是使用正則、css selector提取即可。我使用了密度算法,不需要編寫正則,把密度高部分作為正文對待,這樣無論是什麼類型的內容頁、網頁改版頁面結構變更了都能處理了。

  • 提取關鍵詞

中文NLP(自然語言處理)中第一步就是中文分詞,從最簡單的機械分詞(各種MM算法)到複雜的神經網絡分詞算法,需要處理歧義識別、新詞發現;另外再好的分詞算法也需要有2份詞典,一個是專用詞典,一個是停用詞典。有時會感嘆英文國家的NLP技術發展那麼快是因為英文分詞門檻低嗎?好在現在開源分詞庫也不少,效果各有特點,選則自己熟悉的即可。

從每篇文章提取出20個詞頻出現最高的詞作為文章關鍵詞,效果如下圖

爬取簡書百萬頁面 分析簡書用戶畫像

內容頁分詞.png

在二十幾篇文章中,只有一篇出現了“關注”這個詞,說明這個作者真的有在求關注。

對每個用戶,再合併其所有文章內容中的關鍵詞,並統計重複次數作為詞頻,按詞頻高低取前100個,這份數據作為該用戶的“常用詞”。

〖Tips:這是很重要的一份特徵數據,對後面的用戶性別、興趣愛好分析都要使用到〗

現在我們先看一下 簡書CEO 簡叔 的常用詞的詞雲 是什麼樣:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書CEO 簡叔 詞雲.png

詞雲顯示他喜歡聊“祕密”,關注“簡書”,“創業”、“團隊”、“產品”、“寫作”,“平臺”、“互聯網”,“作者”。

我會猜他有很多“想法”,平時喜歡去“咖啡廳”找“創作”的“靈感”,要在“上海”或“北京“找個”辦公室“ 組建一個“團隊” “創業”,做一個基於“互聯網”的“文章” “寫作” “內容” “平臺”,“產品”叫“簡書”或“jianshu”,會招攬很多“作者” 並保護他們的“著作權”,提供“手機”“app”的“下載”,得了“蘋果” 的“優秀” “設計” “推薦”,求“群友”多“交流”多“關注”,求“打賞”求“評論”。

(哈哈 以上完全瞎猜,我對“簡叔”的認識只有這2個字)

最後再統計下所有用戶的關鍵詞使用的比率,得到 “簡書用戶常用詞 Top 100排行榜”

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶常用詞 Top 100排行榜.png

現在簡單分析下前20個詞,可以發現簡書上的用戶每書寫100個詞時,就有2次提及“作者”、“簡書”,關心“著作權”,表明寫作意願很強烈,也關注平臺自身,符合簡書打造寫作平臺本身的定位;常談論“生活”、“工作”,常說“選擇”,很在意“時間”,說明在職人士應該是主要用戶;喜歡談“喜歡”什麼、談“感覺”、常會說“故事”,文藝味很濃;做事講究“方法”,有大堆的“世界”觀、“人生”觀,說明大部分用戶教育程度比較高(大學);有“孩子”、喜歡晒“圖片”的用戶估計佔比也很高,繼而可以推測主要的用戶年齡段在24-36(23大學畢業,36以上是中年)之間;喜歡討論“app”,符合移動互聯網的時代特徵;關注“學習”,在這個社區推“知識付費”學習課程準是一呼百應。

以上純粹直觀印象不算結論。

另外,為了能搭上這裡“文藝”的氛圍,特意獻上一份 “簡書用戶常用詞 Top 100詞雲圖.png”,大家看看 “感覺”是否“喜歡”:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶常用詞 Top 100詞雲圖.png

下面再繼續看看如何獲取其他的用戶屬性特徵。

性別分析

性別是用戶最基礎的靜態屬性之一,作為人類自然體上最大基因差異特徵,對用戶言行舉止、思想決策有莫大的影響,因此性別分析幾乎是所有領域都需要研究分析的。

但簡書這裡留了第二個“難題”:性別是選填,大部分用戶留空。

看下現在的用戶性別比率統計:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶性別比率-預測前.png

在這10000人中,75%是未知的,剩下已知的男女各佔一半。感覺玩不下去了 。

幸好現在是機器學習時代,可以使用機器學習,對用戶的特徵行為進行學習,從而對用戶進行性別預測。

前面說了人類性別對其言行有莫大影響,因此我使用“用戶常用詞”作為輸入特徵,來預測用戶性別。

性別分類是典型的二分類問題,可以使用樸素貝葉斯、決策樹、SVM等有監督學習的分類算法,我選擇了樸素貝葉斯,NBC模型所需的參數很少,對缺失數據不太敏感,算法也比較簡單,結果還挺有效。

機器學習過程有4步:1,特徵工程;2,訓練;3,測試及評估;4,預測;

  • 特徵工程

一開始使用1000個用戶數量進行練習時,得到的性別數量很少,不足夠訓練出一個可信任的分類模型。

經簡書上的Python爬蟲大師 @向右奔跑 提醒,簡書用戶公開信息上會有新浪微博的鏈接,而新浪微博上有用戶性別信息。

嘗試了一輪,發現只有部分用戶會有新浪微博鏈接,而新浪微博卻有個業界知名的反爬系統,必需降頻率抓取,成效不是很高。最後使用10000個用戶數據時感覺訓練數據量已經足夠。

  • 訓練

訓練集準備好後,就可以構建分類器,把已知性別和對應用戶的常用詞,作為標籤和特徵值,進行訓練,如圖:

爬取簡書百萬頁面 分析簡書用戶畫像

用戶性別預測-訓練.png

  • 測試及評估

分類器訓練完後,要對訓練好的模型進行準確率評估,意思是看看預測結果靠不靠譜。

我在這裡使用了“F1 Score”,簡單科普下:

F1分數(F1 Score),是統計學中用來衡量二分類模型精確度的一種指標。它同時兼顧了分類模型的準確率和召回率。F1分數可以看作是模型準確率和召回率的一種加權平均,它的最大值是1,最小值是0。

簡單來說,F1分數是個加權平均值,越接近1表示預測結果越準確。

測試的結果如下:

爬取簡書百萬頁面 分析簡書用戶畫像

用戶性別預測-結果評估1.png

分數略低,經過一番調整參數重新訓練後,得到

爬取簡書百萬頁面 分析簡書用戶畫像

用戶性別預測-結果評估2.png

現在的F1 分數 為 “0.864”,實際測試有 87.6% 的準確率,感覺分類模型已經可用了。

做下抽樣檢查,看到對程序員的性別識別還是比較準確性

爬取簡書百萬頁面 分析簡書用戶畫像

用戶性別預測-結果抽樣.png

  • 預測

使用訓練好的模型,嘗試對所有未知用戶性別進行預測:

爬取簡書百萬頁面 分析簡書用戶畫像

用戶性別預測-預測未知性別結果.png

應用預測結果,並查看最終的性別比率圖表:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶性別比率-預測後.png

以10000個簡書用戶為樣本的抽樣調查中,女性佔58.1% 男性佔 41.9%。

原來簡書女性用戶那麼多的嗎,真是萬萬沒想到,第一次來到一個女性用戶比男性高的社區,有點小緊張,怎麼裝做經常來的樣子 。

愛好分析

有了一份靜態屬性的特徵數據,我們繼續看看動態屬性中的“興趣愛好”要如何提取分析。

  • 愛好和興趣的區別

在這裡我給“愛好”和“興趣”做了細分定義,興趣跟愛好的區別:愛好是固定分類,興趣是動態詞條,例如可以是熱門頭條話題;愛好不會輕易消亡,興趣會隨時間降低關注熱情;愛好是“做什麼”、“某一類事物”,例如“讀書”,“文學”;興趣是“某個具體事物”,如某本書、某個明星人物;愛好是頻繁是去做的事情,興趣可能只是一時的心血來潮偶爾接觸一次。

一個人如果對某個事物喜愛,便會經常提及;如果只是某天一時感興趣了,可能會某一篇文章裡會反覆提及此事物,但不會出現頻繁在其他文章中提及。

基於這個理論,我們可以把用戶的所有文章的常用詞中出現的一些關鍵詞定性,例如他的大部分文章出現了“跑步”這個詞,那麼這個用戶應該是很在意“減肥”這個事;如果他只是在某1、2篇文章裡提及“減肥”,這個詞甚至都有可能不會出現在他的常用詞榜內。

  • 構建愛好分類

愛好作為分類信息,需要構建一個愛好詞典,再使用用戶常用詞進行匹配,最後給用戶打上所匹配的分類標籤。

我整理了一個600多個分類的愛好詞典,常見的愛好都應該包含了:

爬取簡書百萬頁面 分析簡書用戶畫像

愛好詞典-example.png

〖Tips:亮點自找〗

  • 群體用戶愛好分析

對每個用戶進行愛好分類,可以得到一個用戶愛好排行榜:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶愛好 Top 100排行榜.png

簡單分析下:

“學習”在所有愛好中有15%,在用戶中佔55.6%,也就說簡書大部分用戶都是愛“學習”,學習氛圍濃厚,簡書可以組織一些學習為主題的交流活動,至少一半用戶會馬上感興趣,至少可優先發郵件通知下;

有27%的用戶愛好“寫作”,符合”二八”定律分佈,一個內容平臺總得有大量讀者型的用戶來圍觀點贊、打賞,寫作型的用戶才有動力繼續寫作;

“閱讀”、“讀書”、“電影”、都佔了20%以上,這個感覺是要跟豆瓣的目標用戶重疊的節奏了,所以要從同樣以讀書、電影(影評)為核心的豆瓣上搶用戶,簡書運營者要花不少力氣。

  • 個體用戶愛好分析

現在可以使用愛好標籤來聚合用戶了,比如有什麼電影節活動時,可以打了“愛好:電影” 這樣標籤的用戶發個早鳥票什麼的,用戶會感覺怎麼我昨天才看到電影海報的文章今天就收到預售票通知,其他用戶還沒有,好智能、好貼心、好嗨森。

但只如果是做為簡單的分類標籤,聚合的粒度會比較粗糙,比如說有4個用戶:

  • “用戶A”喜歡讀書、寫作、作畫,

  • “用戶B”和“用戶C”也喜歡讀書、寫作,

  • “用戶D”喜歡讀書、看電影

顯然對於A,他跟用戶B、C的愛好相似度(有2項目重合)會大於 用戶D(只有一項重合),但實際上A、B、C三個人的對讀書的喜愛程度是不一樣,那麼對於A,他跟B、C之間,誰的愛好相似會更接近呢?系統要給A推薦時B和C時,首先要推薦哪個?

為了解決這個問題,我引入一個“愛好喜好指數”(Hobbies Favor Index)的概念,可以給用戶的每個愛好打分,分值範圍是1-10分,10分表示“十分熱愛”,1分表示“一般般”,計算時使用用戶常用詞的詞頻作為輸入,跟他所用的其他詞根據詞頻做排位進行比較得到分位值再除以10收斂,得到1到10分,結果使用雷達圖表做數據呈現,得到一個“用戶愛好雷達圖”,如圖:

爬取簡書百萬頁面 分析簡書用戶畫像

用戶愛好雷達圖-example.png

通過雷達圖我們可以很直觀的瞭解這個用戶的愛好分佈,以及每一項愛好的喜好程度,再與其他用戶做比較也有了基礎:重疊面積越多的越表示愛好越相近,被推薦的排名則越靠前,如圖:

爬取簡書百萬頁面 分析簡書用戶畫像

用戶愛好相似推薦-example.png

終於可以知道簡書上誰跟我最 臭味相投 品味相近了!

至此,我得到了第三份簡書用戶特徵數據-愛好分類。

關鍵興趣分析

  • 什麼是關鍵興趣

用戶興趣會很廣泛,要分析每一項興趣十分耗時耗力,特別作為運營平臺,不大可能也不值得花太多時間精力分析一些跟平臺運營方向無關的數據(所以這就是我們要有針對性建模的原因),對於簡書來說,讀書、寫作顯然是最需要關注的點,因此什麼用戶的食物口味、喜歡看什麼漫畫類型這些非核心、關鍵的特徵,沒有太多必要去做收集和分析。所以,我們要做的是【關鍵〗興趣分析,“簡書”裡也有個“書”字,我就以“書籍”作為關鍵興趣,嘗試進行分析。

  • 獲取書籍數據

書籍數據收集,最簡單,但卻不容易。

“簡單”是說數據提取可直接用正則匹配文章正文中用書名號《》包含的內容,但事實上從最初提取到的數據上發現書名號內的不止是書名,還有電影名、電視節目、文章標題、app名稱等,甚至有人喜歡用《簡書》這樣來引用簡書,因此需要進行數據清洗;有些書名中會包含問號?感嘆號!,寫正則匹配處理也比較麻煩;最保守的做法是使用專用詞典,但詞典的創建和更新也是有些工作量,不夠“智能”。

另外,還有些人喜歡使用“不合法”的標點符號來引用書籍名稱,例如【】、「」、『』、〖〗,我覺得很有必要呼應響應《標點符號用法 - 中華人民共和國教育部》這個規範:

爬取簡書百萬頁面 分析簡書用戶畫像

標點符號用法 - 中華人民共和國教育部.png

使用雙書名的正確姿勢應該是:

書刊電影名:

為了解決干擾詞問題,我創建了一個書籍專用停用詞庫,內容類似 :

簡書
  • 興趣點數

生活中每個人對某個事物的喜好程度是不一樣的,為了能做量化和計算比較,我定義了一個“興趣點數”概念,跟之前“愛好喜好指數”相似,也是1到10分(參考豆瓣的10分制,但10分制有精度問題,在最後的問題章節裡有說明),10分就表示“十分喜愛”,使用書籍名出現的頻率作為輸入值進行換算,這樣能得到每個用戶的“喜愛書籍排行榜”,方便最後做用戶個性化推薦分析。

  • 簡書用戶喜愛書籍 Top 100 排行榜

添加一個Pipeline用於收集用戶文章中出現的書名,運行Pipeline後,得到每個用戶的書籍列表,把興趣點數用5星條顯示,便可以很直觀的看出用戶對書籍的喜愛程度,如圖:

爬取簡書百萬頁面 分析簡書用戶畫像

興趣點數-example.png

在數據分析框架上能自動將所有用戶的書籍彙總統計比率,便得到了“簡書用戶喜愛書籍 Top 100 排行榜”:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書用戶喜愛書籍 Top 100 排行榜.png

榜首是《紅樓夢》,15%的用戶比率,說明每10個簡書用戶裡就有1個人喜歡《紅樓夢》,遇到心儀的女性用戶沒有話題時,說些紅學關鍵詞說不定就能引起共鳴;

第2位是《西遊記》,這個我相信用戶看的更多是電視劇,國產少有精品;

第3的《歡樂頌》雖說也有書籍(豆瓣上6.7分),但出現在這個排名絕對是因為作為同名電視劇而被用戶提及;

排名4、5、6的《論語》、《聖經》、《詩經》,也有10%的用戶比率,讓我不得不確認簡書是文青聚集地,國學當道;

四大名著除了《水滸傳》其他三本都進了前10;

而我所喜歡的《三體》也進入了前20比較欣慰,硬科幻終於火一把了;

結合用戶性別,還可以到得出2份報表:

  • “簡書男性用戶喜愛書籍 Top 100 排行榜”(在這個榜裡《三體》進入了前10!)

  • “簡書女性用戶喜愛書籍 Top 100 排行榜”

〖Tips:榜單不一一貼出了,但這2份數據在後面的構建網站群體用戶畫像時會用到〗

  • 獲取電影數據(未完成)

影評也是寫作的好素材,也容易產生話題效應,因此也可以作為簡書用戶的關鍵興趣之一,再說我也很喜歡看電影 。

已經使用爬蟲抓取到一些流行電影數據(如圖),以後再做分析。

爬取簡書百萬頁面 分析簡書用戶畫像

電影數據-example.png

「重點來了」簡書用戶數據分析及預測 - 數據可視化、輸出報表、趨勢預測

構建網站群體用戶畫像

  • 簡書整體用戶群體畫像

網站的群體用戶畫像,可以用來表示這個網站的大部分用戶的共同屬性特徵、行為特徵,對於網站運營者可以直觀的瞭解自己的用戶群體概括。

使用前面步驟得到的“簡書用戶常用詞 Top 100排行榜”以及“簡書用戶喜愛書籍 Top 100 排行榜” 2份數據,在分析系統裡中創建一個虛擬用戶進行分析,下面是見證奇蹟的時刻:

爬取簡書百萬頁面 分析簡書用戶畫像

分析簡書整體用戶群體畫像.gif

得到“簡書整體用戶群體畫像”:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書整體用戶群體畫像.png

從得到的畫像上看,預測的性別是女性,說明用戶中女性佔多,這個跟前面用戶性別比率分析中女性佔多這個結果是一致的;

大部分人的愛好是:閱讀、電影、讀書、寫作、學習,因此還可以從這幾個愛好進行更細緻的建模,採集更多的用戶特徵數據;

用戶最喜愛的書籍是:《西遊記》、《小王子》、《紅樓夢》、《歡樂頌》、《論語》、《平凡的世界》等,可以圍繞些做話題活動;

下面再根據性別特徵來細分出2個用戶群體:男性和女性群體用戶畫像。

  • 簡書男性群體用戶畫像:使用 “簡書男性用戶常用詞 Top 100排行榜”,“簡書男性用戶喜愛書籍 Top 100 排行榜”:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書男性群體用戶畫像.png

  • 簡書女性群體用戶畫像::使用 “簡書女性用戶常用詞 Top 100排行榜”,“簡書女性用戶喜愛書籍 Top 100 排行榜”:

爬取簡書百萬頁面 分析簡書用戶畫像

簡書女性群體用戶畫像.png

當然還可以按其他屬性如年齡、某類愛好、區域等,這些都需要建模並收集獲取到輔助分析的特徵數據。

〖Tips:分析系統在彙總男、女性用戶的關鍵詞、書籍數據時,會自動忽略每個用戶的詞頻數據,相當於一人一票機制,每個人都對關鍵詞投票,但一個詞只投一票,這樣得到的詞頻和排名才合理〗

網站個體用戶畫像

對整體用戶群體有了印象,現在來看看個體用戶畫像。以簡書上的男性大V用戶“彭小六” 作為例子,看下他的用戶畫像:

爬取簡書百萬頁面 分析簡書用戶畫像

典型男性用戶例子及分析 彭小六.png

他的愛好是:書籍、讀書、寫作、閱讀、學習;文章提及過500多本書籍,其中比較喜歡的書籍是:《如何閱讀一本書》、《讓未來現在就來》、《影響力》、《這樣讀書就夠了》、《顛覆平庸》

用戶推薦

為了增加用戶粘性,提高內容爆光率,進行營銷活動推廣,網站可以使用一些推薦系統,可針對群組推薦,更好的做法是千人千面的個性化推薦,細緻到可針對每一個用戶的喜好、關注點進行推薦。

推薦系統可以使用一些推薦算法如:個性化標籤;協同過濾(UserCF/ItermCF)等。這裡我簡單的使用個性化標籤和基於用戶推薦的理念來演示下可以如何做個性化推薦。

在協同推薦理論中,要給用戶推薦他感興趣的內容,可以從跟他愛好相近的用戶入手。

通過愛好標籤的聚合運算,跟“彭小六”愛好最相近的用戶有這些,如圖中右側列表:

爬取簡書百萬頁面 分析簡書用戶畫像

典型男性用戶例子及分析-相似用戶列表.png

看下分析系統推薦的第一個用戶“用時間釀酒”跟他的愛好會有多相近:

爬取簡書百萬頁面 分析簡書用戶畫像

典型男性用戶例子及分析-相似用戶雷達圖.png

看得出他們都愛好 書籍、讀書、寫作、閱讀、學習,而且各項愛好的喜好程度也相近(愛好雷達圖的重疊面積大)。

再看下這個被推薦出來的用戶的自身的用戶畫像:

爬取簡書百萬頁面 分析簡書用戶畫像

典型男性用戶例子及分析-相似用戶首推.png

可以看到兩個人的感興趣的書籍也非常接近。

那麼推薦系統在做個性化推薦時,就可以把用戶“用時間釀酒” 比較喜歡的書籍(例如Top1的《哪有沒時間這回事》),推薦給用戶“彭小六”。基於同樣的原理,可以把這個用戶收藏的文章、打賞過的文章,推薦給“彭小六”。

至此,我們從0數據開始,通過百萬頁面抓取,到獲取了10000個抽樣用戶數據,生成了一些用戶特徵屬性,構建了群體和個體的用戶畫像,大概瞭解到了簡書整體用戶群體特徵,能知道某個具體用戶的興趣愛好特徵,也知道要應該如何給用戶推薦個性化內容。

存在問題

在整個數據挖掘過程中,發現一些問題還有待完善:

  • 性別預測中發現,存在非自然人帳號,背後實際是多個運營者在發佈文章,產生的內容會包含兩性特徵,使得到數據會影響預測準確性;性別分類器沒有進行交叉測試,測試評估有過擬合可能

  • 發現 用戶喜愛書籍 的興趣指數使用10分制度精度不夠,使得原本應該排第一位的書籍會因為第二位一樣得分(可想象成10.9跟10.1的差距),並因此可能因為相同得分而隨機變成了第二位;豆瓣的得分分數實際應該算是100分制(只是表現出的結果是除以10,例如《三體》的得分是8.8,在一百分制裡就是88分)

  • 有些用戶沒有顯性的愛好、興趣怎麼辦?可使用機器學習,對用戶的興趣愛好進行預測

  • 如何發掘用戶隱性愛好,例如大部分人都喜歡看電影,但不會特意發文章說“我是電影愛好者”,一般的行為是會經常性發表對某些電影的看法,發表的內容多了,顯然這個用戶是愛好看電影的,這種可以通過電影詞庫來訓練分類器學習和預測

涉及工具

  • 題圖中用到的詞雲圖使用:wordart.com

  • 其他:所有截圖均為我使用 Ruby 語言獨立開發的網頁抓取、數據分析框架

  • 開發語言:Ruby(I Love Ruby!)

下期預告

  • 創建人物角色模型,人物角色模型是對設計目標人群形象、需求和價值觀的一種概括化、視覺化的呈現 ,社會角色,如大學生,工薪族,高收入人群;職業角色如 程序員,設計師,產品經理;家庭角色,如全職家庭婦女;人物角色模型不是一個真實的用戶,而是一類用戶代表。例如要組織讀書會,如何把喜歡《把時間當作朋友》等幾本書的用戶篩選出來,可以創建一個“自我管理型”的角色,愛好特徵標籤是“讀書”,興趣特徵標籤是“book:《把時間當作朋友》”……

  • 用戶性格分析,用戶性格會影響決策行為、消費行為,美國心理學家阿波特根據人的價值觀念傾向對性格作了六種分類……

轉自簡書,作者:hirainchen

相關推薦

推薦中...