影視作品項目思路的零碎吐槽與實現 隨筆

想到什麼寫什麼吧 項目做了一年多了 逐漸取得好的效果,但是一直沒有記錄心得,可能遲早要寫,畢業論文、項目什麼的 都要寫

從最開始選取研究對象參數的特徵 到特徵整合、數據收集、建模的嘗試、模型選擇與實現,讓我對數據建模的實踐有一個緩慢但逐漸熟悉的認識

特徵決定了模型表現的上限,這個選擇真的好難,之前加入的特徵效果不好,然後特徵工程處理了也補救不了多少,之前影響最大的感覺還是模型的調參,可以增長5個點的效果提升;

後來通過加入特徵,對特徵進行特徵工程的處理和特徵的選擇,我感覺真的還是特徵影響更大。。

然後對於理解預測效果的好壞影響(基於已有經驗的個人感受)主要是:特徵選擇>算法選擇>模型調參

之前師兄用的cnn做的預測模型,老師對模型的效果不太滿意;所以讓我考慮使用別的辦法進行重新建模。

剛來到中科院學習,然後老師就給我佈置了任務,讓我自己通過獲取數據構建一個基於豆瓣評分的影視評分預測模型,還有過一陣子要實現ai選角;最開始實驗室的研究員給我指引的方向是使用隨機森林進行研究,最開始我就選用了隨機森林算法,入門理解大概看了一週……(好抽象)這個東西還是有點厲害的,我覺得光集成學習這個思路就很清奇!但是最開始做的模型效果並不太好,一開始我單純使用了電影的基礎特徵,在驗證集的擬合優度只有0.68,考慮是不是加入的特徵不夠好?也可能是數據不夠乾淨的問題,但是當時沒有考慮到剔除異常點,我不知道怎麼去制定或者發現一個基準(如果有看了這篇隨筆有建議的希望可以告訴我)去判斷異常的點,因爲我還沒想好怎麼找異常點,最近才知道原來隨機森林受異常點影響蠻大的。一開始入門做得比較粗糙,而且還是覺得搭建一個評分預測的模型對我而言好抽象,於是就考慮換點別的方法來做。電影評分的預測模型網上看到的成型項目少之又少,怎麼搜索文獻找好論文也好難,一開始搜頂會的文章,但是描述電影評分預測的模型真的太少了,於是我開始看別的同解決預測模型問題的文章和各種項目博客;然後看了一個什麼基於kaggle競賽的房價預測,說是使用的xgboost算法,於是我就先仿照那個項目進行了實驗,也算是熟悉了一遍根據xgboost算法實現預測模型搭建的流程。

對比了隨機森林的算法和xgboost算法,感覺還是xgboost算法比較合適用於做迴歸,更加符合數據的效果,隨機森林好像在迴歸上表現得不太理想,所以最終決定選用xgboost作爲預測模型構建的算法模型。

最開始使用的訓練參數有:電影的上映年份、電影類別、電影名稱、電影的評分、導演編劇歷史評分、主演(選擇了前3位)的歷史評分、一開始還有他們的id啊、還有打分比例(這個我最開始並沒有用到,因爲我覺得預測的時候我們並不能知道一部電影的打分比例)等等特徵項目;實現的過程就是常規地做一個特徵工程處理,然後構建一個影視作品的特徵向量(由電影本身特徵+參與創作人員的特徵)後放到機器學習模型中擬合和輸出;使用的模型評估參數是擬合優度,最開始是0.67好像,然後通過調參和訓練數據的清洗與進一步的特徵工程的處理,第一個版本交到老師那裏的時候是0.71的擬合優度;老師拿去預測五一期間上映的電影也覺得初步的模型效果還可以,能給出一個比較正確的分類,於是就讓我先去把專利給寫了說實驗室要用;哦對,五六月的時候在寫會議小論文,雖然說會議小論文沒啥含金量,但是第一次把自己設計和開發的模型寫成一篇英文的論文真的感覺很不錯!老師看完我的論文說我introduction寫得太爛了讓我重寫(他說他發了覺得丟人),但是當時我被說的是自己並不感覺丟人,哈哈可能因爲是自己寫的而且第一次寫,並不知道自己有多菜(

後來又認真看了頂會的文章 發現自己真的好像確實好爛!語法和語言組織什麼的改了又改,反正最後收到錄用的時候感覺好開心啊

都是外話,後來8月找工作,面了兩三家,不是手撕代碼寫不出來就是算法細節沒說清楚,認識到自身能力真的有待提高啊TvT雖然沒信心但是有勇氣,相信以後我會有信心的(自欺欺人)

上週四又面了一家,讓寫數據庫語句沒寫出來,讓寫df的又磨蹭半天,然後自告奮勇要寫算法題,笑死了,又是太緊張沒寫出來;然後就問了一些風險控制的實際模型預測時可能需要用到哪些特徵,巴拉巴拉就結束了

感覺又涼了,正好研究員跑來跟我說希望模型項目再優化優化;鬱悶,那先不做面試還是來做點開心的模型優化吧!那天下午,之前我就考慮如何把獲取的數據裏那個評分分佈的這一項特徵加進去,這次終於想明白了,我把他根據分佈先排序,54321星打分比例映射到SABCD級,然後根據評分分佈的比例分爲S+(54321)、S-(53421)、A+(45321)、A-(43521)……以此類推,加入了這個評分特徵以後,模型擬合優度居然第一次跑到了0.9,給我興奮得一晚睡不着;換了幾個隨機參數還是91左右的擬合優度。。。深刻體會到什麼叫特徵決定了模型結果的上界,之前從沒跑過這麼高的數據(不過我的數據量不是很大,還需要不斷擴充電影的基本數據量去進行模型的優化)

那麼在實際預測時,

噢我得先做一個分析,看看電影的實際分佈與導演、編劇的歷史作品分佈,哪個更接近!

還有藝人的;

考慮:實際預測的時候,就選取更接近的程度,根據分析的結果選取分佈累加(類似softmax層那種)選取最多的爲電影的主題預測分佈,來代替這個待預測的電影的分佈(撓頭,這裏是不是也可以根據藝人、導演、編劇的分佈與電影的最終分佈關係構建一個簡單的分類模型…)

最近還要考慮做ai推薦;

主要考慮的藝人畫像包含以下幾個因素:人口特徵、演出特徵、互聯網人氣、角色評價標籤、歷史出演作品標籤;具體設計如下圖:

 

已經實現了根據獲取的互聯網新聞對藝人進行個性化打tag;

在中期開題答辯的時候老師提出到我拿什麼判斷藝人更加合適某些電影,於是我根據歷史電影庫的數據通過建立hash表的形式統計一個藝人擅長的電影(>6分就算還過得去),根據這個辦法統計出來的藝人感覺標籤確實能反應出藝人的擅長影視作品類別的特徵!

接下來的任務就是需要構造一個綜合的藝人特徵向量來實現召回與篩選;

推薦系統的基礎流程主要是 : 數據收集》特徵處理》召回》排序》topk列表》反饋

我覺得反饋可以設定 如果對方覺得不合適,填一下理由,不合適的理由?長得醜 或者怎麼樣怎麼樣的,然後根據大家的反饋在考慮召回輪次的排序

主要是難點在於沒有實際的這個挑選的最好的演員,沒有明確的指標;在上面談及到評分預測的時候,我做過特徵重要程度分析,實際上決定一部電影評價的好壞更重要的因素是導演與編劇的發揮(特別是編劇),演員演技的好壞只是使得電影變得錦上添花;但是能否篩選出與電影主題更相符合的演員一定程度上還是影響着大衆觀影的期待的。因此,在匹配上我覺得可以加上關於給的tag和藝人擅長標籤之間的匹配程度(選擇構造一個向量距離來衡量),最後構建topk名單;

這個topk名單可以根據使用者指定的傾向維度(熱度、或者是演技(這裏設計爲藝人的歷史作品均分+分佈,我覺得我可以設計一個更爲具象的評價指標,這裏我要看看別人的論文有沒有類似的參考))進行不同的權重的疊加實現排名的構造,予以推薦

目前就想了這麼多,後面想到再接着補充;不斷完善吧

之前導師找了幾篇論文讓我看還沒研讀,這兩天認真讀讀,然後要安排寫畢業論文了

 

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