OAG-WhoIsWho 賽道二比賽總結

第一次完整地打完一次數據競賽膜廊,雖然成績一般,但還是學習到了一些東西夭禽,特此總結一下城菊。文章主要內容如下:

  1. 賽題介紹
  2. 我的做法
  3. 打代碼過程中學到的一些知識
  4. 不足之處與總結

1. 賽題介紹

比賽鏈接 https://www.biendata.com/competition/aminer2019_2/
簡單來說就是同名作者消歧。一篇論文包含的信息有 title,abstract顶考,keywords, venue, year, authors, organizations赁还。最終的提交結果就是,給定你一篇論文的信息還有其中的一個作者名驹沿,讓你把這篇論文分配給正確的作者 ID艘策。

2. 我的做法

一開始是想把每篇論文作為一個樣本,把論文作者 ID 作為樣本類別渊季,這樣的話朋蔫,有兩萬多類,而且每一類的樣本數極度不平衡——有些類別只有一兩個樣本却汉,有些則有 1000 多個樣本斑举,所以效果很差。

后面參考了 baseline 的做法病涨,轉化成二分類的問題。每個作者 ID 都有自己的論文庫信息(包含論文列表璧坟,及每篇論文的 title既穆、author、organization 等)雀鹃。將每一篇論文分別跟候選作者 ID 配對幻工,如果是正確的 ID 那么就是正樣本僻孝。那么對于配對的一篇論文和一個論文庫微宝,如何提取出特征就成了重中之重。這里畏妖,我參考了參賽人員提供的兩個 baseline (十分感謝參賽大佬的無私分享):(https://www.biendata.com/models/category/3188/L_notebook/
https://www.biendata.com/models/category/2998/L_notebook/)傅瞻。Baseline 里主要用到了 author踢代, org, year 衍生出來的特征嗅骄。比如說胳挎,當前論文發(fā)表的年份,是否在論文庫的年份區(qū)間里溺森;當前論文的 co-author 跟論文庫 co-author 的重疊數慕爬;當前論文的 co-org 跟論文庫的 co-org 的重疊數。這里要指出一點屏积,我構建了兩個跟作者org 有關的特征(注意:是 org 不是 co-org)医窿,線下效果有明顯提升,但是線上效果卻下降很多炊林。我猜測原因是因為 org 缺失特征有點多姥卢。除了這些統(tǒng)計特征,我另外構建了跟文本相關的特征铛铁,比如隔显,通過對詞向量進行平均却妨,得到文本的詞向量,然后計算論文的詞向量跟論文庫詞向量之間的相似度括眠。分類器使用的是 catboost彪标。xgboost 和 lightgbm 也有試過,但這里效果不如 catboost掷豺。

最后列一下最后自己使用的特征:
co-author 相關特征 6 個(來源于 baseline):
?? author_interset_num
?? author_interset_num/paper_ids_len
?? author_interset_num/paper_authors_len
?? author_interset_num/aid_authors_set
?? author_interset_num_repeat
?? author_interset_num_repeat/aid_authors_len
注:author_interset_num 表示當前論文的 co-author 跟論文庫 co-author 的重疊數捞烟,repeat 表示當前論文的 co-author 在論文庫中的 co-author 出現的次數(可重復)。paper_ids_len 表示論文庫的論文數当船,paper_authors_len 表示當前論文的作者數题画。aid_author_set 表示論文庫中 co-author 的數,aid_authors_len 表示論文庫中德频,co-author 的總次數(可重復)苍息。

co-org 相關特征 6 個
?? org_interset_num
?? org_interset_num/paper_ids_len
?? org_interset_num/paper_orgs_len
?? org_interset_num/aid_orgs_set
?? org_interset_num_repeat
?? org_interset_num_repeat/aid_orgs_len
注:各特征的含義可參考 author。

year 相關特征 10 個(來源于 baseline)
?? year_b_min
?? year_b_max
?? year_b_mean
?? year_b_std
?? year_b_mm2 = (year_b_min + year_b_max) / 2
?? year_b_min-year_a
?? year_b_max-year_a
?? year_b_mean-year_a
?? year_b_mm2-year_a
?? year_inside_range
注:year_a 表示當前論文年份壹置, year_b 表示論文庫所有論文年份列表

venue 相關特征 2 個:
?? venue_count
?? venue_count_vlen
注:venue_count 表示當前論文 venue 在論文庫中的 venue_list 出現的總次數竞思,venue_count_vlen 表示總次數除以論文庫列表 venue_list 的長度

文本相關特征 12 個:
?? title_tfidf_tsvd_cos
?? title_tfidf_tsvd_cosmax
?? title_emb_cos
?? title_emb_cosmax
?? abstract_tfidf_tsvd_cos
?? abstract_tfidf_tsvd_cosmax
?? abstract_emb_cos
?? abstract_emb_cosmax
?? paper_text_tfidf_tsvd_cosmax
?? paper_text_tfidf_tsvd_cos
?? paper_text_emb_cos
?? paper_text_emb_cosmax
注:這里的 paper_text 指的是將論文的 title、abstract钞护、keyword 拼接起來得到的文本盖喷。因為 title、abstract 和 keywords 特征缺失值不少难咕,單純利用 title 等衍生出來的特征可能信息量可能不夠课梳。所以拼接起來作為 paper_text,作為新的特征余佃。emb_cos 后綴表示當前論文文本(title or abstract or paper_text)的詞向量跟論文庫的平均詞向量之間的余弦相似度暮刃。emb_cosmax 表示跟論文庫中所有論文文本的最大余弦相似度。tfidf_tsvd 指的是文本的 tfidf 特征經過 TruncatedSVD 降維后得到的向量爆土。(文本的 tfidf 特征太高維沾歪,計算相似度耗時久,所以先用 TSVD 降一下維度雾消。)

最后 b 榜成績?yōu)?93.04(18名)灾搏。(其實原本的成績是 92.93,我先用這個模型預測測試樣本立润,并打上標簽狂窑,然后合并訓練集和測試集一起訓練。最后線上提高了一個千分點桑腮。當然泉哈,這種做法有點玄學,有時效果反而會下降

3. 打代碼過程中學到的一些知識

  • pandas 相關用法。經過這次比賽丛晦,感覺用 pandas 處理表格數據太方便了奕纫!特別是其中的 merge 函數和 apply 函數,簡潔又好用烫沙。
  • pandas apply 進度條匹层。有時候數據較多,或者計算比較復雜的時候锌蓄,apply 運行比較久升筏,而且也不知道什么時候可以運行完。代碼如下:
import tqdm
# 添加下面這行代碼瘸爽,把 apply 改成 progress_apply 就行了
tqdm.tqdm.pandas(desc='apply')
data_stat['author_interset_num'] = data_stat.progress_apply(author_interset, axis=1)
  • 如何計算文本的加權詞向量(根據詞的 tf-idf 權重進行加權)您访。(雖然嘗試了加權詞向量后,效果并沒有提升剪决。)

4. 不足之處與總結

  • 線下驗證集的構建灵汪。感覺構建得不夠合理,線下有 99柑潦,但是線上只有 70 多(A榜)识虚,93(B 榜)
  • 沒有做 EDA,沒有分析數據的分布妒茬,特征的分布。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蔚晨,一起剝皮案震驚了整個濱河市乍钻,隨后出現的幾起案子,更是在濱河造成了極大的恐慌铭腕,老刑警劉巖银择,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異累舷,居然都是意外死亡浩考,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門被盈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來析孽,“玉大人,你說我怎么就攤上這事只怎⊥嗨玻” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵身堡,是天一觀的道長邓尤。 經常有香客問我,道長,這世上最難降的妖魔是什么汞扎? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任季稳,我火速辦了婚禮,結果婚禮上澈魄,老公的妹妹穿的比我還像新娘景鼠。我一直安慰自己,他們只是感情好一忱,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布莲蜘。 她就那樣靜靜地躺著,像睡著了一般帘营。 火紅的嫁衣襯著肌膚如雪票渠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天芬迄,我揣著相機與錄音问顷,去河邊找鬼。 笑死禀梳,一個胖子當著我的面吹牛杜窄,可吹牛的內容都是我干的。 我是一名探鬼主播算途,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼塞耕,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了嘴瓤?” 一聲冷哼從身側響起扫外,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎廓脆,沒想到半個月后筛谚,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡停忿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年驾讲,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片席赂。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡吮铭,死狀恐怖,靈堂內的尸體忽然破棺而出颅停,到底是詐尸還是另有隱情沐兵,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布便监,位于F島的核電站扎谎,受9級特大地震影響碳想,放射性物質發(fā)生泄漏。R本人自食惡果不足惜毁靶,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一胧奔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧预吆,春花似錦龙填、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至凤瘦,卻和暖如春宿礁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔬芥。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工梆靖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笔诵。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓返吻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親乎婿。 傳聞我的和親對象是個殘疾皇子测僵,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容