用機(jī)器學(xué)習(xí)分析完YouTube網(wǎng)紅視頻后,我發(fā)現(xiàn)了播放量暴漲的秘密
本文轉(zhuǎn)自雷鋒網(wǎng),如需轉(zhuǎn)載請至雷鋒網(wǎng)官網(wǎng)申請授權(quán)。
在視頻成為重要媒介,vlog、視頻博主也成為一種職業(yè)的當(dāng)下,如何提高自己視頻的播放量,是廣大內(nèi)容生產(chǎn)者最頭禿的問題之一。網(wǎng)絡(luò)上當(dāng)然有許多內(nèi)容制作、熱點跟蹤、剪輯技巧的分享,但你可能不知道,機(jī)器學(xué)習(xí)也可以在其中發(fā)揮大作用。
join into data上兩位作者 Lianne 和 Justin 做了一個硬核的技術(shù)分析。他們的分析對象是 YouTube 一個新近崛起的健身博主 Sydney Cummings 。
Sydney 擁有美國國家運動醫(yī)學(xué)會(NASM)的私人教練證,同時也是一位跳高運動員。她的賬號注冊于 2016 年 5 月 17 日,累計播放量 27,031,566,目前擁有 21 萬粉絲,每天都穩(wěn)定更新,很有研究意義。請注意,以下研究都將通過 Python 實現(xiàn)。
Sydney Cummings 的標(biāo)題都有一定套路,比如最近一個標(biāo)題是《30 分鐘手臂和強(qiáng)壯臀肌鍛煉!燃燒 310 卡路里!》,通常涵蓋時間、身體部位、消耗的卡路里以及其他關(guān)于鍛煉的描述性詞匯。觀眾點擊這段視頻之前,就會知道幾個信息:
-
30 分鐘——我將在 30 分鐘內(nèi)完成整個訓(xùn)練;
-
鍛煉手臂和臀肌——我將致力于手臂和臀肌,專注于力量;
-
燃燒 310 卡路里——我會燃燒相當(dāng)多的卡路里。
掌握以上關(guān)鍵信息是預(yù)先的準(zhǔn)備,接下來還有六個步驟:觀察數(shù)據(jù)、用自然語言處理技術(shù)對視頻進(jìn)行分類、選擇特征、創(chuàng)建目標(biāo)、構(gòu)建決策樹、閱讀決策樹。接下來就和雷鋒網(wǎng)一起看看作者究竟是怎么一步一步展開研究的。
事前準(zhǔn)備:抓取數(shù)據(jù)
其實有很多不同的方法來抓取 YouTube 數(shù)據(jù)。由于這只是個一次性項目,所以作者選擇了一個只需要手工操作,不依賴額外工具的簡單方法。
以下是分步步驟:
選中所有視頻;
右鍵單擊最新的視頻并選擇“Inspect“;
將光標(biāo)懸停在每一行上,找到高亮顯示了所有視頻的最低級別的 HTML 代碼/元素級別;
例如,如果使用 Chrome 瀏覽器,它看起來就像這樣:
【 圖片來源:Sydney’s YouTube Video page所有者:Sydney 】
右鍵單擊元素并選擇“復(fù)制”,然后選擇“復(fù)制元素”;
將復(fù)制的元素粘貼到文本文件中并保存,這里使用 JupyterLab 文本文件并將其保存為 sydney.txt;
使用 Python 提取信息并清理數(shù)據(jù)。
接下來就是有趣的部分了,他們將從這個數(shù)據(jù)中集中提取特征,并研究是哪些因素影響著播放量。
步驟 1:觀察數(shù)據(jù)
將數(shù)據(jù)導(dǎo)入到 Python 中是在最后一節(jié)中完成的,以下是數(shù)據(jù)集 df_videos,一共有 837 個視頻。
df_videos 有 8 個特征來描述每個視頻細(xì)節(jié),包括:標(biāo)題、多久前發(fā)布的、視頻長度、播放量、地址、卡路里、發(fā)布具體日期、發(fā)布至今的天數(shù)。
此外,他們注意到數(shù)據(jù)有重疊,因為博主曾經(jīng)多次上傳同一個視頻,在接下來的分析中將會忽略這部分不大的樣本。
步驟 2:用 NLP 對視頻進(jìn)行分類
在這一步中,他們根據(jù)標(biāo)題中的關(guān)鍵詞對視頻進(jìn)行分類。
分組標(biāo)準(zhǔn)是:
-
這個視頻針對的是身體哪個部位?
-
這個視頻的目的是增肌還是減肥?
-
或者還有什么其他關(guān)鍵詞?
作者使用了自然語言工具包(NLTK),Python 中一個常用的開源 NLP 庫,來處理標(biāo)題。
生成關(guān)鍵詞列表
首先,標(biāo)記化視頻的標(biāo)題。此過程使用分隔符(如空格(" ")將標(biāo)題文本字符串拆分為不同的標(biāo)記(單詞)。這樣,計算機(jī)程序就可以更好地理解文本。
這些標(biāo)題中有 538 個不同的單詞,以下列出了使用頻率最高的標(biāo)記/單詞??梢园l(fā)現(xiàn),頻繁使用的就是那幾個詞,這也再次證明博主確實喜歡起標(biāo)準(zhǔn)格式的視頻標(biāo)題。
基于高頻詞列表,作者創(chuàng)建了 3 個關(guān)鍵字列表,可用于接下來環(huán)節(jié)對視頻進(jìn)行分類。
-
body_keywords(正文—關(guān)鍵詞)——這標(biāo)識了視頻針對的身體部位,如“完整”身體、“腹肌”、“腿”。
-
workout_type_keywords(健身—類型關(guān)鍵字)——區(qū)分鍛煉類型,如“有氧”、“伸展”、“力量”。
-
其他關(guān)鍵字——這包括常用但難以歸類的關(guān)鍵詞,如“訓(xùn)練營”、“精疲力竭”、“纖體”(toning)。
詞干關(guān)鍵詞列表
在形成這些關(guān)鍵字列表后,作者還提取了詞干。這是為了確保計算機(jī)能夠識別近義詞。例如,ABS 是 Abdominal Exercise(腹部鍛煉)的簡寫,單詞“abs”和“ab”有相同的詞干“ab”。
YouTube 標(biāo)題的標(biāo)記和詞干
除了關(guān)鍵詞,作者還需要標(biāo)記和提取標(biāo)題詞干。這些過程可為進(jìn)一步匹配關(guān)鍵字和標(biāo)題列表做準(zhǔn)備。
步驟 3:特征工程
經(jīng)過頭腦風(fēng)暴,他們選擇了兩種特征——基于關(guān)鍵詞和基于時間。
基于關(guān)鍵詞的特征
Indicator Features
由于前一步的工作,現(xiàn)在有 3 個關(guān)鍵詞列表和精簡的標(biāo)題,可以匹配它們來對視頻進(jìn)行分類。
按照 body_keywords 和 workout_type_keywords 分類,一個視頻中有許多關(guān)鍵詞。所以在匹配之前,作者還創(chuàng)建了 2 個特征:area 區(qū)域和 workout_type 健身類型。這些特征將一個視頻的所有身體部位和鍛煉類型連接成一個字符串。
例如,一個健身視頻可以同時做“腹肌”和“腿”,或者同時做“有氧”和“力量”。該視頻的特征區(qū)域為“腹肌+腿”,健身類型為“有氧+力量”。
同時,作者也識別出了相似的關(guān)鍵字,如“總共”和“完全”、“核心”和“腹肌”,將它們歸在一組。
最后,他們創(chuàng)建了三種不同類型的虛擬特征(dummy features):
-
is _ { } _區(qū)域,識別視頻是否包含特定身體部位;
-
is_ { } _健身,確定健身類型;
-
title_contains_{},查看標(biāo)題是否包含其他關(guān)鍵詞。
為了清楚起見,視頻標(biāo)題“腿部力量消耗訓(xùn)練”應(yīng)該是 _leg_area = True, is_strength_workout = True, title_contains_burnout = True,而所有其他都為 False。
Frequency Features
除以上特征外,作者還創(chuàng)建了三個特征:num_body_areas, num_workout_types,和 num_other_keyword,用來計算一個視頻標(biāo)題中提到的關(guān)鍵詞的數(shù)量。
舉個例子,一個標(biāo)題是“腹肌和腿部有氧力量訓(xùn)練”的 num_body_areas 和 num_workout_types 都是 2。
這些特征有助于確定視頻中應(yīng)包含的身體部位或鍛煉類型的最佳數(shù)量。
Rate Features
最后同樣重要的是,作者創(chuàng)建了一個特征:calories_per_min(每分鐘卡路里數(shù))看看卡路里的燃燒速度。畢竟,觀眾都想要一些明確的(可量化的)鍛煉目標(biāo)。
當(dāng)然整個過程中也難免存在一些被錯誤分類的視頻,作者也在轉(zhuǎn)向時間特征前進(jìn)行了手動修復(fù),這里不再贅述。
基于時間序列的特征
有了上述基于關(guān)鍵詞的特征,作者已經(jīng)發(fā)現(xiàn)受歡迎視頻的類型。但這是否意味著博主應(yīng)該一直發(fā)相同類型的視頻?
為了回答這個問題,他們還創(chuàng)建了一些基于時間序列的特征:
-
num_same_area,過去 30 天內(nèi)發(fā)布的針對同一區(qū)域的視頻(包括當(dāng)前視頻)數(shù)量。例如,特征= 6,說明除了當(dāng)前視頻針對上半身時,過去 30 天中還有 5 個上身健身視頻。
-
num_same_workout ,該特征類似 num_same_area,只是統(tǒng)計的是健身類型。例如,特征= 3,說明除了當(dāng)前視頻 HIIT 健身,在過去 30 天內(nèi)還有 2 個 HIIT 健身視頻。
-
last_same_area,距離上一個針對同一塊身體部位視頻過去的天數(shù)。例如,該特征= 10,說明針對腹肌的上一個視頻,發(fā)布在 10 天前。
-
last_same_workout,同 last_same_area,只是針對健身類型。
-
num_unique_areas,過去 30 天內(nèi)鍛煉了幾塊不同的身體部位。
-
num _ unique _workouts,過去30天發(fā)布的不同健身類型視頻的數(shù)量。
這些特征將幫助了解觀眾是喜歡相同的還是不同類型的視頻。
需要說明的是,博主偶爾會發(fā)布與健身無關(guān)的視頻,播放數(shù)差距很大,所以作者未將這些列入分析。另外他們也過濾掉了前 30 天的視頻,因為它們?nèi)狈ψ銐虻臍v史數(shù)據(jù)。
接下來請看下面特征工程的具體過程。
多重共線性檢驗Test for Multicollinearity
什么是多重共線性檢驗,維基百科的解釋是,多重共線性(也稱共線性)是一種現(xiàn)象,其中多元回歸模型中的一個預(yù)測變量可以以相當(dāng)高的準(zhǔn)確度從其他預(yù)測變量中線性預(yù)測。多重共線性不會降低模型整體的預(yù)測能力或可靠性,至少在樣本數(shù)據(jù)集中是如此;它只影響單個預(yù)測因子的計算。
為什么這很重要?
假設(shè)博主只在周一發(fā)布力量訓(xùn)練,而且她的視頻在周一的播放量總是更高。那么分析播放量時,應(yīng)該歸因它們發(fā)布在周一,還是因為它們是力量訓(xùn)練呢?為了獲得真實的答案,作者必須確保特征之間沒有強(qiáng)共線性。
成對相關(guān)( pairwise correlations)是常用的方法,但當(dāng)出現(xiàn)多個特征(多于一對)時,可能會同時存在共線性。
因此,作者使用了一種更復(fù)雜的方法——k折交叉驗證( K-fold cross-validation)來達(dá)到目的。
詳細(xì)過程如下:
-
根據(jù)判斷,選擇一組關(guān)鍵特征來測試共線性。
作者選擇了對于YouTube視頻播放量至關(guān)重要的特征,同時還添加了三個由隨機(jī)數(shù)組成的特征:rand0,rand1, rand2。當(dāng)比較特征之間的關(guān)系時,它們充當(dāng)anchor。如果一個特征與這些隨機(jī)特征相比不太重要或不太相似時,那么它就不是目標(biāo)特征的重要自變量。
-
為k折交叉驗證準(zhǔn)備這些特征。
在此過程中,他們轉(zhuǎn)換分類特征(categorical features):area和workout_type。這種轉(zhuǎn)換確保每個類別級別至少有K個值。
-
使用其中一個特征作為目標(biāo),其余特征作為自變量,來訓(xùn)練預(yù)測模型。
接下來,作者遍歷每個特征,并使用其他特征擬合一個模型來預(yù)測它,他們用了一個簡單的梯度提升模型(Gradient Boosting Model ,GBM)和K折驗證,并且根據(jù)目標(biāo)特征是數(shù)字的還是分類的,應(yīng)用不同的模型和分?jǐn)?shù)(模型預(yù)測能力評估指標(biāo))。
當(dāng)目標(biāo)特征是數(shù)字時,作者使用Gradient Boosting Regressor模型和均方根誤差(RMSE);當(dāng)目標(biāo)特征是分類特征時,則使用Gradient Boosting Classifier 模型和Accuracy(精度)。
對于每個目標(biāo),他們打印出K折驗證分?jǐn)?shù)(平均分)和最重要的5個自變量。
-
研究得分和每個目標(biāo)特征的重要自變量。
作者試圖研究每個目標(biāo)特征及其與自變量的關(guān)系。當(dāng)然本文不會列舉整個過程,將舉兩個例子。
作者發(fā)現(xiàn)length(視頻長度)和 calories特征是相關(guān)的。這個發(fā)現(xiàn)很直觀,因為健身的時間越長,消耗的卡路里就越多。
這種關(guān)系不難理解。
length和 calories之間存在正相關(guān),但這種強(qiáng)度還不足以將它們直接歸到一塊。因為40-45分鐘的視頻消耗的熱量與30-35分鐘、50-55分鐘,甚至與60多分鐘的視頻,都有重疊部分。因此,兩個特征都保留。
此外,作者發(fā)現(xiàn)num_same_area和area_full,兩個特征也是相關(guān)的,這個發(fā)現(xiàn)有點令人驚訝,接下來開始解密。
下圖顯示了num_same_area和area之間的關(guān)系。
num_same_area特征,統(tǒng)計的是在過去30天內(nèi)發(fā)布的針對于同一部位視頻(包括當(dāng)前視頻)的數(shù)量。area_ful代表全身鍛煉,這是Sydney視頻中最常見的類型。因此,當(dāng)num_same_area很大時,那么這些視頻就是針對全身的鍛煉。
假設(shè)我們發(fā)現(xiàn)更高的 num_same_area(>=10) 確實會導(dǎo)致更高的YouTube瀏覽量,但我們無法知道這是因為area_full 還是因為 num_same_area。因此,作者放棄了 num_same_area特征,也因為相同的邏輯放棄相num_same_workouts特征。
步驟 4:創(chuàng)建目標(biāo)
你可能還記得,這個研究的目標(biāo)是增加YouTube的播放量。是不是說明,我們可以直接拿播放量作為目標(biāo)呢?
但請注意!播放量呈偏態(tài)分布。播放量中值是27,641次,而最高的視頻達(dá)到130萬。這種不平衡會給模型的解釋性帶來問題。
因此,作者創(chuàng)建了特征views_quartile,以它作為目標(biāo)。
他們將視頻分為兩類——高播放視頻(“high”)和低播放視頻(“low”)。“high”占總播放量的75%,也就是播放數(shù)35578及以上的視頻,剩下的都?xì)w到“low”。
通過這種方式,作者使用預(yù)測模型來找到播放量最高的25%的視頻的特征組合。
步驟 5:構(gòu)建決策樹
準(zhǔn)備好了一切工作,我們根據(jù)目標(biāo)views_quartile建立一個決策樹模型啦!
為了避免過度擬合,作者將一個葉子節(jié)點的最小樣本設(shè)置為10。為了讓我們更容易理解,作者將樹的最大深度設(shè)置為8層。
步驟 6:閱讀決策樹
在最后一步中,作者將研究并總結(jié)導(dǎo)致高或者低播放量的“分支”。他們到底發(fā)現(xiàn)了什么呢?
發(fā)現(xiàn) 1:calories_per_min是最重要的特征
沒錯,calories_per_min是最重要的特征。人們似乎不太關(guān)心健身類型或身體部位。
每分鐘消耗的卡路里≥ 12.025屬于高消耗,60%(51/(34+51) )的視頻都有較高的觀看率。
每分鐘燃燒的卡路里少于(≤ 9.846)的視頻則遠(yuǎn)沒有受歡迎,只有 7.2%(12/(154+12) =)有較高的播放。
而每分鐘消耗卡路里在9.846到12.025之間的視頻,其他因素也會產(chǎn)生較大作用。
發(fā)現(xiàn) 2:不同部位、多種方式鍛煉并不能提高播放量
這個發(fā)現(xiàn)超乎作者想象,難道不是各種各樣的鍛煉更好嗎?
當(dāng)過去一個月,身體不同部位的鍛煉數(shù)量(num_unique_area)很高,≥ 10時,視頻的觀看傾向低。即使每分鐘燃燒的卡路里很高,這種情況依然成立。
結(jié)合前兩個觀點,78%(42/(12+42) )的視頻在以下情況下獲得了更多的播放:
-
每分鐘燃燒的熱量很高(≥ 12.025)
-
過去一個月中身體不同部位的鍛煉數(shù)量較少 (
發(fā)現(xiàn) 3:臀部健身很受歡迎
當(dāng)一段視頻消耗的卡路里較少(calories_per_min ≤ 9.846)時,但只要是臀部鍛煉,33%(5/(10+5) )仍能獲得高播放;不然,只有4.6%(7/(144+7) )視頻擁有較高播放。
建議:如何提高播放
綜上,作者給Sydney提出了三條建議:
建議 1:燃燒卡路里
正如我們所見,每分鐘消耗的卡路里是最重要的特征,12.025是個魔法數(shù)字。
下表是不同時長的視頻應(yīng)該燃燒多少卡路里的節(jié)點:
-
30分鐘健身:361卡路里
-
40分鐘健身:481卡路里
-
50分鐘健身:601卡路里
-
60分鐘健身:722卡路里
作者還提出了一個猜想:數(shù)字(時長和卡路里)對人的刺激只是心理上,大家可能就是喜歡看到卡路里的前兩位數(shù)比時長大得多,這說明可以用更短的時間,消耗更多的卡路里。
建議 2:少用不同的身體部位關(guān)鍵詞
Sometimes less is more.
人們不喜歡健身標(biāo)題中有太多不同的身體部位。根據(jù)模型,在一個月內(nèi)針對少于10個身體部位的組合更好。
作者注意到Sydney在她最近的視頻中使用了更少的身體部位關(guān)鍵詞。最明顯的一點是,她一直在使用“手臂”或“上身”,而不是像“二頭肌”或“背部”這樣的詞。
建議 3:多多發(fā)布臀部健身
Sydney的訂閱者可能更多是女士,她們傾向于“臀部”塑性,而不是增加手臂肌肉。人們愿意犧牲燃燒更少的卡路里來獲得更健美的臀部。也許Sydney應(yīng)該一直為燃燒更少卡路里的視頻加入一些臀部運動。
建議 4:未經(jīng)驗證的想法
比如說在月初發(fā)起新的活動。 月初發(fā)布的視頻更有可能獲得更高的瀏覽量。也許人們喜歡設(shè)定新的目標(biāo)來開始新的一個月。第二,避免在5天內(nèi)發(fā)布相同類型的鍛煉。
最后作者也表示,這個研究也有一些限制:
-
這些建議是基于過去的表現(xiàn)。而 YouTubers經(jīng)常會打破過去套路,嘗試新想法。鑒于此,我們可以將機(jī)器學(xué)習(xí)應(yīng)用到他們的競爭對手身上。
-
只集中分析了標(biāo)題,還有一些其他信息,比如訂閱者人數(shù)、性別、區(qū)域的統(tǒng)計,其中可能蘊藏著更多的特征、更準(zhǔn)確的發(fā)現(xiàn)和解釋。