د SNA هیکاتون 2019

د فبروري - مارچ 2019 کې، د ټولنیز شبکې فیډ درجه بندي کولو لپاره سیالي ترسره شوه د SNA هیکاتون 2019په کوم کې چې زموږ ټیم لومړی مقام خپل کړ. په مقاله کې به زه د سیالۍ تنظیم کولو په اړه وغږیږم، هغه میتودونه چې موږ یې هڅه کړې، او د لوی معلوماتو روزنې لپاره د کیټ بوسټ ترتیبات.

د SNA هیکاتون 2019

SNA هیکاتون

دا دریم ځل دی چې تر دې نوم لاندې هیکاتون ترسره کیږي. دا د ټولنیز شبکې ok.ru لخوا تنظیم شوی، په ترتیب سره، دنده او ډاټا په مستقیم ډول د دې ټولنیز شبکې سره تړاو لري.
په دې حالت کې SNA (د ټولنیزو شبکو تحلیل) په سمه توګه د ټولنیز ګراف د تحلیل په توګه نه، بلکې د ټولنیزې شبکې د تحلیل په توګه پیژندل کیږي.

  • په 2014 کې، دنده دا وه چې د پوسټ د لایکونو شمیر اټکل کړي.
  • په 2016 کې - د VVZ دنده (شاید تاسو پیژنئ)، د ټولنیز ګراف تحلیل ته نږدې.
  • په 2019 کې، د کارونکي فیډ درجه بندي د احتمال پراساس چې کاروونکي به پوسټ خوښ کړي.

زه د 2014 په اړه نشم ویلای، مګر په 2016 او 2019 کې، د ډیټا تحلیلي وړتیاو سربیره، د لوی ډیټا سره کار کولو مهارتونه هم اړین وو. زه فکر کوم چې دا د ماشین زده کړې او لوی ډیټا پروسس کولو ستونزو ترکیب و چې ما دې سیالیو ته راجلب کړ ، او پدې برخو کې زما تجربې زما سره مرسته وکړه چې وګټم.

mlbootcamp

په 2019 کې، سیالۍ په پلیټ فارم کې تنظیم شوې https://mlbootcamp.ru.

سیالۍ د فبروري په 7 آنلاین پیل شوې او 3 دندې پکې شاملې وې. هرڅوک کولی شي په سایټ کې راجستر شي، ډاونلوډ کړئ لومړنۍ کرښه او خپل موټر د څو ساعتونو لپاره بار کړئ. د مارچ په 15 د آنلاین مرحلې په پای کې، د هرې نندارې د کود کولو پیښې 15 غوره کسان د آفلاین مرحلې لپاره د Mail.ru دفتر ته بلنه ورکړل شوي، کوم چې د مارچ له 30 څخه تر اپریل 1 پورې ترسره شوی.

موخه

د سرچینې ډاټا د کارونکي IDs (userId) او پوسټ IDs (objectId) چمتو کوي. که چیرې کارونکي یو پوسټ وښودل شي، نو بیا ډاټا یو کرښه لري چې د UserId، ObjectId، د دې پوسټ په اړه د کاروونکي غبرګونونه (فیډبیک) او د مختلفو ځانګړتیاو یا انځورونو او متنونو لینکونو سیټ لري.

کارن نوم اعتراض ID مالک ID فیډبک انځورونه
3555 22 5677 [ خوښ شوی، کلیک شوی] [hash1]
12842 55 32144 [ناخوښه] [hash2,hash3]
13145 35 5677 [کلک شوی، شریک شوی] [hash2]

د ازموینې ډاټا سیټ ورته جوړښت لري، مګر د فیډبیک ساحه ورکه ده. دنده دا ده چې د فیډبیک په ساحه کې د 'خوښ شوي' عکس العمل شتون وړاندوینه وکړي.
د سپارلو فایل لاندې جوړښت لري:

کارن نوم ترتیب شوی لیست
123 78,13,54,22
128 35,61,55
131 35,68,129,11

میټریک د کاروونکو لپاره اوسط ROC AUC دی.

د معلوماتو نور تفصیلي توضیحات په کې موندل کیدی شي د شورا ویب پاڼه. تاسو کولی شئ هلته ډیټا ډاونلوډ کړئ ، پشمول د ازموینې او عکسونو.

آنلاین مرحله

په آنلاین مرحله کې، دنده په 3 برخو ویشل شوې وه

  • د همکارۍ سیسټم - د انځورونو او متنونو پرته ټولې ځانګړتیاوې شاملې دي؛
  • انځورونه - یوازې د انځورونو په اړه معلومات شامل دي؛
  • متنونه - یوازې د متنونو په اړه معلومات شامل دي.

آف لائن مرحله

په آفلاین مرحله کې، ډاټا ټول ځانګړتیاوې شاملې وې، پداسې حال کې چې متنونه او انځورونه لږ وو. په ډیټاسیټ کې 1,5 ځله ډیر قطارونه وو، چې له دې څخه دمخه ډیر شتون درلود.

د ستونزې د حل لاره

څرنګه چې زه په کار کې CV کوم، ما په دې سیالۍ کې خپل سفر د "انځورونو" دندې سره پیل کړ. هغه معلومات چې چمتو شوي وو د UserId، ObjectId، مالک ID (هغه ګروپ چې پوسټ خپور شوی و)، د پوسټ جوړولو او ښودلو لپاره مهال ویش، او البته، د دې پوست لپاره عکس.
د ټایم سټیمپونو پراساس د ډیری ځانګړتیاو رامینځته کولو وروسته ، بله نظریه دا وه چې په امیجنټ کې دمخه روزل شوي د نیورون پای پایلیټ پرت واخلئ او دا سرایتونه وده کولو ته ولیږئ.

د SNA هیکاتون 2019

پایلې اغېزمنې نه وې. د امیجنټ نیورون څخه سرایت کول غیر اړونده دي، ما فکر کاوه، زه اړتیا لرم چې خپل اتوماتیک کوډر جوړ کړم.

د SNA هیکاتون 2019

دا ډیر وخت واخیست او پایله یې ښه نه شوه.

د فیچر نسل

د انځورونو سره کار کول ډیر وخت نیسي، نو ما پریکړه وکړه چې یو څه ساده کار وکړم.
لکه څنګه چې تاسو سمدلاسه لیدلی شئ ، په ډیټاسیټ کې ډیری کټګوري ب featuresې شتون لري ، او د دې لپاره چې ډیر زیان ونه رسوي ، ما یوازې کیټ بوسټ اخیستی. حل خورا ښه و ، پرته له کوم تنظیماتو زه سمدلاسه د لیډربورډ لومړۍ کرښې ته ورسیدم.

دلته خورا ډیر معلومات شتون لري او دا د پارکیټ فارمیټ کې ایښودل شوي ، نو پرته له دې چې دوه ځله فکر وکړم ، ما سکالا واخیست او هرڅه یې په سپک لیکل پیل کړل.

ترټولو ساده ځانګړتیاوې چې د عکس ایډیډینګونو څخه ډیر وده ورکوي:

  • په ډاټا کې څو ځله objectId، userId او مالک آیډ ښکاره شوي (باید د شهرت سره تړاو ولري)؛
  • څومره پوسټونه UserId د مالک آیډ څخه لیدلي (باید په ګروپ کې د کارونکي ګټو سره تړاو ولري)؛
  • د مالک آیډ څخه څومره ځانګړي UserIds پوسټونه لیدلي (د ګروپ د لیدونکو اندازه منعکس کوي).

د مهال ویشونو څخه دا ممکنه وه چې د ورځې وخت ترلاسه کړئ په کوم کې چې کارونکي فیډ لیدلی (سهار / ماسپښین / ماښام / شپه). د دې کټګوریو په یوځای کولو سره، تاسو کولی شئ د ځانګړتیاوو تولید ته دوام ورکړئ:

  • په ماښام کې څو ځله یوزر آی ډي لاګ ان شوی؛
  • په کوم وخت کې دا پوسټ اکثرا ښودل کیږي (objectId) او داسې نور.

دا ټول په تدریجي ډول میټریکونه ښه کړي. مګر د روزنې ډیټاسیټ اندازه د 20M ریکارډونو په اړه ده، نو د ځانګړتیاوو اضافه کول د روزنې خورا سست کړي.

ما د ډیټا کارولو لپاره زما چلند له سره غور کړی. که څه هم ډاټا په وخت پورې تړلې ده، ما په "راتلونکي کې" د معلوماتو کوم ښکاره لیک نه دی لیدلی، په هرصورت، یوازې په هغه صورت کې چې ما دا په لاندې ډول مات کړ:

د SNA هیکاتون 2019

موږ ته چمتو شوی روزنیز سیټ (فبروري او د مارچ 2 اونۍ) په 2 برخو ویشل شوی و.
ماډل د تیرو N ورځو معلوماتو په اړه روزل شوی و. پورته ذکر شوي ټولیزونه د ازموینې په ګډون په ټولو معلوماتو کې رامینځته شوي. په ورته وخت کې، معلومات ښکاره شوي چې د هدف متغیر مختلف کوډونه رامینځته کول ممکن دي. ترټولو ساده طریقه د کوډ بیا کارول دي چې دمخه یې نوي ځانګړتیاوې رامینځته کوي، او په ساده ډول هغه معلومات تغذیه کوي چې دا به روزل نشي او هدف = 1.

په دې توګه، موږ ورته ځانګړتیاوې ترلاسه کړې:

  • یوزر آیډ څو ځله د ګروپ مالک آیډ کې پوسټ لیدلی دی؛
  • د ګروپ مالک آیډ کې څو ځله یوزر آیډ پوسټ خوښ کړ؛
  • د پوسټونو سلنه چې د کارونکي آی ډي د مالک آیډ څخه خوښوي.

یعنی دا معلومه شوه د هدف کوډ کولو معنی د کټګوري ځانګړتیاو مختلف ترکیبونو لپاره د ډیټاسیټ برخه کې. په اصولو کې ، کیټ بوسټ د هدف کوډ کول هم رامینځته کوي او له دې نظره هیڅ ګټه نلري ، مګر د مثال په توګه ، دا ممکنه شوه چې د ځانګړي کاروونکو شمیر شمیرل شي چې پدې ګروپ کې پوسټونه خوښوي. په ورته وخت کې، اصلي هدف ترلاسه شو - زما ډیټاسیټ څو ځله کم شوی، او دا ممکنه وه چې د ځانګړتیاوو تولید ته دوام ورکړي.

پداسې حال کې چې کیټ بوسټ کولی شي یوازې د خوښ شوي عکس العمل پراساس کوډ کول رامینځته کړي ، فیډبیک نور عکس العملونه لري: بیا شریک شوی ، نا خوښ شوی ، نه خوښ شوی ، کلیک شوی ، له پامه غورځول شوی ، کوډونه چې په لاسي ډول ترسره کیدی شي. ما ټول ډوله مجموعې بیا محاسبه کړې او د ټیټ اهمیت سره ځانګړتیاوې له مینځه وړي ترڅو د ډیټاسیټ انفلاسیون ونه کړي.

په هغه وخت کې زه په پراخه کچه په لومړي ځای کې وم. یوازینی شی چې مغشوش وو دا و چې د عکس سرایت نږدې وده نه وه ښودلې. مفکوره راغله چې هر څه بلیبوسټ ته ورکړي. موږ د Kmeans انځورونه کلستر کوو او یو نوی کټګوري ځانګړتیا imageCat ترلاسه کوو.

دلته د لاسي فلټر کولو او د KMeans څخه ترلاسه شوي کلسترونو یوځای کولو وروسته ځینې ټولګي دي.

د SNA هیکاتون 2019

د imageCat پر بنسټ موږ تولید کوو:

  • نوې کټګوري ځانګړتیاوې:
    • کوم عکس کیټ اکثرا د یوزر آی ډي لخوا لیدل شوی؛
    • کوم عکس کیټ اکثرا د مالک ID ښیې؛
    • کوم عکس کیټ د یوزر آی ډي لخوا ډیر ځله خوښ شوی و؛
  • مختلف شمیرونکي:
    • څومره بې ساري ImageCat د UserId ته کتل؛
    • شاوخوا 15 ورته ځانګړتیاوې او د هدف کوډ کول لکه څنګه چې پورته تشریح شوي.

متنونه

د عکس سیالۍ پایلې زما سره مناسبې وې او ما پریکړه وکړه چې په متنونو کې خپل لاس هڅه وکړم. ما دمخه د متنونو سره ډیر کار نه دی کړی او په احمقانه توګه ما ورځ په tf-idf او svd کې وژلې. بیا ما د doc2vec سره بیس لاین ولید، کوم چې هغه څه کوي چې زه ورته اړتیا لرم. د doc2vec پیرامیټونو یو څه تنظیم کولو سره ، ما د متن سرایتونه ترلاسه کړل.

او بیا ما په ساده ډول د عکسونو لپاره کوډ بیا وکاراوه ، په کوم کې چې ما د عکس ایمبیډینګونه د متن سرایتونو سره ځای په ځای کړل. د پایلې په توګه، ما د متن سیالۍ کې دویم ځای خپل کړ.

د همکارۍ سیسټم

دلته یوه سیالي پاتې وه چې ما لاهم د لرګي سره "پوک" نه و کړی ، او په لیډربورډ کې د AUC لخوا قضاوت کول ، د دې ځانګړي سیالۍ پایلې باید په آفلاین مرحله کې خورا لوی تاثیر ولري.
ما ټول هغه ځانګړتیاوې واخیستې چې د سرچینې ډیټا کې وې، کټګوري یې غوره کړې او د عکسونو په څیر ورته مجموعې محاسبه کړې، پرته له دې چې پخپله د انځورونو پر بنسټ ځانګړتیاوې ولري. یوازې دا په کیټ بوسټ کې ایښودل زه دوهم ځای ته ورسیدم.

د کیټ بوسټ اصلاح کولو لومړی ګامونه

یو لومړی او دوه دویم ځایونه ما خوښ کړل، مګر داسې پوهه وه چې ما هیڅ ځانګړي ندي کړي، پدې معنی چې زه د پوستونو له لاسه ورکولو تمه کولی شم.

د سیالۍ هدف د کارونکي دننه پوسټونو درجه بندي کول دي ، او دا ټول وخت زه د طبقه بندي ستونزه حل کوم ، دا د غلط میټریک اصلاح کول دي.

اجازه راکړئ یو ساده مثال درکړم:

کارن نوم اعتراض ID وړاندوينه ځمکنی حقیقت
1 10 0.9 1
1 11 0.8 1
1 12 0.7 1
1 13 0.6 1
1 14 0.5 0
2 15 0.4 0
2 16 0.3 1

راځئ چې یو کوچنی بیا تنظیم کړو

کارن نوم اعتراض ID وړاندوينه ځمکنی حقیقت
1 10 0.9 1
1 11 0.8 1
1 12 0.7 1
1 13 0.6 0
2 16 0.5 1
2 15 0.4 0
1 14 0.3 1

موږ لاندې پایلې ترلاسه کوو:

ماډل AUC کارن 1 AUC کارن 2 AUC مطلب AUC
اختیار 1 0,8 1,0 0,0 0,5
اختیار 2 0,7 0,75 1,0 0,875

لکه څنګه چې تاسو لیدلی شئ، د AUC ټولیز میټریک ښه کول پدې معنی ندي چې په یو کاروونکي کې د اوسط AUC میټریک ښه کول.

Catboost پوهیږي چې څنګه د درجه بندي میټریکونو اصلاح کول له بکس څخه ما د درجه بندي میټریکونو په اړه لوستل، د بریالیتوب کیسې کله چې کیټ بوسټ وکاروئ او د شپې د روزنې لپاره YetiRankPairwise تنظیم کړئ. پایله اغیزمنه نه وه. پریکړه کول چې زه روزل شوی وم، ما د تېروتنې فعالیت QueryRMSE ته بدل کړ، کوم چې د کیټ بوسټ اسنادو په واسطه قضاوت کوي، ګړندی بدلیږي. په پای کې، ما ورته پایلې ترلاسه کړې کله چې د ډلبندۍ لپاره روزنه وه، مګر د دې دوو ماډلونو مجموعو ښه زیاتوالی راکړ، کوم چې ما په ټولو دریو سیالیو کې لومړی مقام ته راوړو.

د "همکاري سیسټمونو" سیالۍ د آنلاین مرحلې له پای ته رسیدو څخه 5 دقیقې دمخه ، سرګي شالنوف زه دوهم ځای ته راوړم. موږ په ګډه بله لاره روانه کړه.

د آفلاین مرحلې لپاره چمتووالی

موږ په آنلاین مرحله کې د RTX 2080 TI ویډیو کارت سره بریا تضمین کړې وه، مګر د 300 روبلو اصلي جایزه او په احتمال سره، حتی وروستی لومړی ځای موږ دې ته اړ کړل چې د دې 000 اونیو لپاره کار وکړو.

لکه څنګه چې دا معلومه شوه، سرګي هم کیټ بوسټ کارولی. موږ نظرونه او ځانګړتیاوې تبادله کړې، او ما په اړه زده کړه وکړه د انا ویرونیکا ډوروګوش لخوا راپور کوم چې زما د ډیرو پوښتنو ځوابونه لري، او حتی هغه څه چې ما تر هغه وخته پورې نه درلودل.

د راپور لیدل زه دې نظر ته اړ کړم چې موږ اړتیا لرو ټول پیرامیټرې ډیفالټ ارزښت ته راستون کړو ، او تنظیمات په خورا احتیاط سره ترسره کړو او یوازې د ځانګړتیاو سیټ تنظیم کولو وروسته. اوس یو روزنې شاوخوا 15 ساعته وخت نیولی، مګر یو ماډل توانیدلی چې د درجه بندي سره په ډله کې ترلاسه شوي سرعت څخه ښه سرعت ترلاسه کړي.

د فیچر نسل

د همکارۍ سیسټمونو سیالۍ کې، ډیری ځانګړتیاوې د ماډل لپاره مهم ګڼل کیږي. د مثال په ډول، auditweights_spark_svd - ترټولو مهم نښه، مګر د دې معنی په اړه هیڅ معلومات نشته. ما فکر کاوه چې دا به د ارزښت وړ وي چې د مهمو ځانګړتیاو پراساس مختلف مجموعې حساب کړئ. د مثال په توګه، د اوسط پلټنې وزنونه_spark_svd د کارونکي لخوا، د ګروپ لخوا، د اعتراض لخوا. ورته د معلوماتو په کارولو سره محاسبه کیدی شي په کوم کې چې هیڅ روزنه نه ده ترسره شوې او هدف = 1، دا اوسط دی auditweights_spark_svd د کارونکي لخوا د هغه شیانو لخوا چې هغه یې خوښوي. سربیره پردې مهمې نښې auditweights_spark_svd، څو تنه وو. دلته ځینې یې دي:

  • auditweightsCtrGender
  • د پلټنې وزنCtrHigh
  • userOwnerCounterCreateLikes

د مثال په توګه، اوسط auditweightsCtrGender د UserId په وینا دا یو مهم خصوصیت وګرځید، لکه د اوسط ارزښت په څیر userOwnerCounterCreateLikes د userId+ownerId لخوا. دا باید تاسو دمخه فکر وکړي چې تاسو اړتیا لرئ د ساحو په معنی پوه شئ.

هم مهمې ځانګړتیاوې وې د پلټنې وزنونه د خوښیو شمیره и د پلټنې وزن د ښودلو شمیره. د یو بل لخوا ویشل، حتی خورا مهم ځانګړتیا ترلاسه شوه.

د معلوماتو لیک

سیالي او د تولید ماډلینګ خورا مختلف دندې دي. کله چې د معلوماتو چمتو کول، دا خورا ستونزمن کار دی چې ټول توضیحات په پام کې ونیسو او په ازموینه کې د هدف متغیر په اړه ځینې غیر معمولي معلومات وړاندې نه کړئ. که موږ د تولید حل رامینځته کوو ، نو موږ به هڅه وکړو چې د ماډل روزنې پرمهال د ډیټا لیک کارولو څخه مخنیوی وکړو. مګر که موږ غواړو سیالي وګټو ، نو د معلوماتو لیک ترټولو غوره ځانګړتیاوې دي.

د معلوماتو مطالعه کولو سره، تاسو کولی شئ دا د اعتراض ID ارزښتونو سره سم وګورئ د پلټنې وزنونه د خوښیو شمیره и د پلټنې وزن د ښودلو شمیره بدلون، پدې معنی چې د دې ځانګړتیاوو د اعظمي ارزښتونو تناسب به د ښودلو په وخت کې د تناسب په پرتله د پوسټ تبادله خورا ښه منعکس کړي.

لومړی لیک چې موږ وموندل شو auditweightsLikesCountMax/auditweightsShowsCountMax.
مګر څه که موږ ډاټا ته ډیر نږدې وګورو؟ راځئ چې د نندارې نیټې له مخې ترتیب کړو او ترلاسه یې کړو:

اعتراض ID کارن نوم د پلټنې وزن د ښودلو شمیره د پلټنې وزنونه د خوښیو شمیره هدف (خوښه شوی)
1 1 12 3 احتمالا چې نه
1 2 15 3 ښايي هو
1 3 16 4

دا حیرانتیا وه کله چې ما دا ډول لومړی مثال وموند او دا معلومه شوه چې زما وړاندوینه سمه نه وه. مګر، د دې حقیقت په پام کې نیولو سره چې په اعتراض کې د دې ځانګړتیاوو اعظمي ارزښتونو زیاتوالی موندلی، موږ سست نه یو او پریکړه یې وکړه چې ومومئ د پلټنې وزنونه د ښودلو شمېره и auditweightsLikesCountNext، دا دی، ارزښتونه په راتلونکې وخت کې. د فیچر اضافه کولو سره
(د پلټنو وزنونه دښارونو شمېره بل-د پلټنې وزنونه ښودلو شمېر) موږ په چټکۍ سره یو تیز کود وکړ.
ورته لیکونه د لاندې ارزښتونو په موندلو سره کارول کیدی شي userOwnerCounterCreateLikes د userId+ownerId دننه او د مثال په توګه، auditweightsCtrGender د ObjectId+userGender دننه. موږ د لیک سره 6 ورته ساحې وموندلې او د امکان تر حده یې له دوی څخه ډیر معلومات راوباسي.

تر هغه وخته، موږ د همکاری ځانګړتیاوو څخه د امکان تر حده ډیر معلومات راټول کړل، مګر د عکس او متن سیالیو ته بیرته راستانه نشو. ما یو ښه نظر درلود چې وګورئ: څومره ځانګړتیاوې په مستقیم ډول د انځورونو یا متنونو پر بنسټ په اړونده سیالیو کې ورکوي؟

د عکس او متن سیالیو کې هیڅ لیک نه و ، مګر پدې وخت کې ما د ډیفالټ کیټ بوسټ پیرامیټرې بیرته راګرځولې ، کوډ یې پاک کړی او یو څو ب featuresې یې اضافه کړې. مجموعه دا وه:

پریکړه ژر
د انځورونو سره اعظمي 0.6411
اعظمي نه انځورونه 0.6297
د دوهم مقام پایله 0.6295

پریکړه ژر
د متنونو سره اعظمي 0.666
پرته له متنونو اعظمي 0.660
د دوهم مقام پایله 0.656

پریکړه ژر
په همکارۍ کې اعظمي 0.745
د دوهم مقام پایله 0.723

دا څرګنده شوه چې موږ د متنونو او عکسونو څخه د ډیر څه د راټولولو امکان نه درلود، او د یو څو خورا زړه پورې نظرونو هڅه کولو وروسته، موږ د دوی سره کار بند کړ.

په همکاری سیسټمونو کې د ځانګړتیاوو نور نسل زیاتوالی ندی ورکړی، او موږ درجه بندي پیل کړه. په آنلاین مرحله کې، طبقه بندي او درجه بندي ماته یو کوچنی زیاتوالی راکړ، لکه څنګه چې دا معلومه شوه ځکه چې ما طبقه بندي زده کړې. هیڅ د تېروتنې افعال، په شمول د YetiRanlPairwise، د پایلې سره نږدې هرچیرې تولید شوي چې LogLoss ترسره کړي (0,745 vs. 0,725). د QueryCrossEntropy لپاره لاهم امید شتون درلود ، کوم چې پیل نشي.

آف لائن مرحله

په آفلاین مرحله کې، د معلوماتو جوړښت ورته پاتې شو، مګر لږ بدلونونه شتون درلود:

  • د پیژندونکي UserId، ObjectId، مالک ID بیا تصادفي شوي؛
  • ډیری نښې لیرې شوې او ډیری نومونه بدل شوي؛
  • معلومات نږدې 1,5 ځله زیات شوي دي.

د لیست شویو ستونزو سربیره، یو لوی پلس شتون درلود: ټیم ته د RTX 2080TI سره لوی سرور تخصیص شوی و. ما د اوږدې مودې لپاره htop څخه خوند اخیستی.
د SNA هیکاتون 2019

یوازې یو نظر شتون درلود - په ساده ډول د هغه څه بیا تولید لپاره چې دمخه شتون لري. په سرور کې د چاپیریال په ترتیب کولو کې د څو ساعتونو مصرف کولو وروسته، موږ په تدریجي ډول تایید کول پیل کړل چې پایلې د بیا تولید وړ وې. اصلي ستونزه چې موږ ورسره مخ یو د معلوماتو حجم زیاتوالی دی. موږ پریکړه وکړه چې بار یو څه کم کړو او د کیټ بوسټ پیرامیټر ctr_complexity = 1 تنظیم کړو. دا یو څه سرعت کموي، مګر زما ماډل کار پیل کړ، پایله یې ښه وه - 0,733. سرګي، زما برعکس، ډاټا په 2 برخو ویشلې نه وه او په ټولو ډیټاونو کې روزل شوي، که څه هم دا په آنلاین مرحله کې غوره پایلې ورکړې، په آفلاین مرحله کې ډیری ستونزې وې. که موږ ټول هغه ځانګړتیاوې واخلو چې موږ یې تولید کړي او هڅه یې کړې چې دوی په کیټبوسټ کې وغورځوو، نو بیا به په آنلاین مرحله کې هیڅ کار ونه کړي. سرګي د ټایپ اصلاح کول، د بیلګې په توګه، د float64 ډولونه په float32 بدلول. په دغه لیکنه، تاسو کولی شئ په پانډا کې د حافظې اصلاح کولو په اړه معلومات ومومئ. د پایلې په توګه، سرګي د ټولو معلوماتو په کارولو سره په CPU کې روزل او شاوخوا 0,735 یې ترلاسه کړل.

دا پایلې د ګټلو لپاره کافي وې ، مګر موږ خپل ریښتیني سرعت پټ کړ او ډاډه نه شو چې نور ټیمونه ورته کار نه کوي.

تر اخره پورې مبارزه وکړئ

د Catboost ټوننګ

زموږ حل په بشپړ ډول بیا تولید شوی و، موږ د متن ډیټا او عکسونو ځانګړتیاوې اضافه کړې، نو ټول هغه څه چې پاتې دي د کیټ بوسټ پیرامیټرو سره سمون کول دي. سرګي په CPU کې د لږ شمیر تکرارونو سره روزل شوي، او ما د ctr_complexity=1 سره په یوه کې روزل. یوه ورځ پاتې وه، او که تاسو یوازې تکرارونه اضافه کړئ یا د ctr_complexity زیاتوالی ومومي، نو د سهار لخوا تاسو کولی شئ حتی ښه سرعت ترلاسه کړئ او ټوله ورځ حرکت وکړئ.

په آفلاین مرحله کې، سرعت په ساده ډول په سایټ کې د غوره حل نه غوره کولو سره په اسانۍ سره پټ کیدی شي. موږ په وروستي دقیقو کې په لیډربورډ کې د سختو بدلونونو تمه درلوده مخکې لدې چې سپارنې بندې شي او پریکړه یې ونه کړه چې ودریږي.

د انا ویډیو څخه، ما زده کړل چې د ماډل کیفیت ښه کولو لپاره، دا غوره ده چې لاندې پیرامیټونه غوره کړئ:

  • د زده کړې کچه - ډیفالټ ارزښت د ډیټاسیټ اندازې پراساس محاسبه کیږي. د زده کړې_ شرح زیاتول د تکرار شمیر زیاتولو ته اړتیا لري.
  • l2_leaf_reg - د منظم کولو کوفینټ، ډیفالټ ارزښت 3، په غوره توګه له 2 څخه تر 30 پورې غوره کړئ.
  • بسته بندي_حرارت - په نمونه کې د شیانو وزنونو ته تصادفي اضافه کوي. ډیفالټ ارزښت 1 دی، چیرې چې وزنونه د توزیع شوي توزیع څخه اخیستل کیږي. د ارزښت کمول د اضافي فټ زیاتوالي لامل کیږي.
  • تصادفي_ځواک - په یو ځانګړي تکرار کې د ویشلو انتخاب اغیزه کوي. څومره چې د تصادفي ځواک لوړ وي، د ټیټ اهمیت د ویشلو چانس لوړ دی. په هر راتلونکی تکرار کې، تصادفي کمیږي. د ارزښت کمول د اضافي فټ زیاتوالي لامل کیږي.

نور پیرامیټونه په وروستي پایله کې خورا کوچني تاثیر لري ، نو ما د دوی غوره کولو هڅه نه ده کړې. زما د GPU ډیټاسیټ کې د روزنې یو تکرار د ctr_complexity=1 سره 20 دقیقې وخت نیولی ، او په کم شوي ډیټاسیټ کې ټاکل شوي پیرامیټرې په بشپړ ډیټاسیټ کې د مطلوبو څخه یو څه توپیر درلود. په پای کې، ما د 30٪ ډیټا په اړه شاوخوا 10 تکرارونه ترسره کړل، او بیا په ټولو معلوماتو کې شاوخوا 10 نور تکرارونه. دا یو څه داسې وګرځیدل:

  • د زده کړې کچه ما د ډیفالټ څخه 40٪ زیاتوالی موندلی؛
  • l2_leaf_reg همداسې پرېښودل؛
  • بسته بندي_حرارت и تصادفي_ځواک 0,8 ته راټیټ شوی.

موږ کولی شو دې پایلې ته ورسوو چې ماډل د ډیفالټ پیرامیټونو سره روزل شوی و.

زه ډیر حیران وم کله چې ما په لیډربورډ کې پایله ولیده:

ماډل ماډل 1 ماډل 2 ماډل 3 جوړه
پرته له ټوننګ 0.7403 0.7404 0.7404 0.7407
د ټون کولو سره 0.7406 0.7405 0.7406 0.7408

ما د ځان لپاره پایله وکړه چې که د ماډل ګړندي غوښتنلیک ته اړتیا ونلري ، نو دا به غوره وي چې د غیر مطلوب پیرامیټونو په کارولو سره د څو ماډلونو ترکیب سره د پیرامیټونو انتخاب بدل کړئ.

سرګي په GPU کې د چلولو لپاره د ډیټاسیټ اندازه غوره کوله. ترټولو ساده اختیار د معلوماتو برخه پرې کول دي، مګر دا په څو لارو ترسره کیدی شي:

  • په تدریجي ډول زاړه ډیټا لرې کړئ (د فبروري په پیل کې) تر هغه چې ډیټاسیټ په حافظه کې فټ شي؛
  • د ټیټ اهمیت سره ځانګړتیاوې لرې کړئ؛
  • د UserIds لرې کړئ د کوم لپاره چې یوازې یوه ننوتل شتون لري؛
  • یوازې هغه کارن ID پریږدئ چې په ازموینه کې دي.

او په نهایت کې ، د ټولو اختیارونو څخه یوه جوړه جوړه کړئ.

وروستۍ ډله

د تیرې ورځې ناوخته ماښام پورې، موږ د خپلو موډلونو یوه جوړه جوړه کړې وه چې 0,742 یې ترلاسه کړې. په شپه کې ما خپل ماډل د ctr_complexity=2 سره پیل کړ او د 30 دقیقو پرځای یې د 5 ساعتونو لپاره روزل. یوازې د سهار په 4 بجو دا شمیرل کیده، او ما وروستی ډله جوړه کړه، کوم چې په عامه لیډربورډ کې 0,7433 ورکړ.

د ستونزې د حل لپاره د بیلابیلو لارو چارو له امله، زموږ وړاندوینې په کلکه سره تړاو نه درلود، کوم چې په ترکیب کې ښه زیاتوالی راغلی. د یو ښه انډول ترلاسه کولو لپاره، دا غوره ده چې د خام ماډل وړاندوینې وړاندوینې وکاروئ (prediction_type='RawFormulaVal') او سکیل_pos_weight=neg_count/pos_count ترتیب کړئ.

د SNA هیکاتون 2019

په ویب پاڼه کې تاسو لیدلی شئ وروستۍ پایلې په شخصي لیډربورډ کې.

نور حلونه

ډیری ټیمونو د وړاندیز کونکي سیسټم الګوریتمونو کینون تعقیب کړل. زه، په دې برخه کې متخصص نه یم، د دوی ارزونه نشم کولی، مګر زه 2 په زړه پورې حلونه یادوم.

  • د نیکولای انوکین حل. نیکولای، د Mail.ru د کارمند په توګه، د جایزو لپاره غوښتنه نه وه کړې، نو د هغه هدف د اعظمي سرعت ترلاسه کول ندي، مګر په اسانۍ سره د توزیع وړ حل ترلاسه کول.
  • د جایزې ګټونکي ټیم پریکړه پر بنسټ دا مقاله له فیسبوک څخهد لاسي کار پرته د خورا ښه عکس کلستر کولو لپاره اجازه ورکړل شوې.

پایلې

هغه څه چې زما په حافظه کې ډیر پاتې دي:

  • که چیرې په ډاټا کې کټګوري ځانګړتیاوې شتون ولري، او تاسو پوهیږئ چې څنګه د هدف کوډ کول په سمه توګه ترسره کړئ، دا لاهم غوره ده چې د کیټبوسټ هڅه وکړئ.
  • که تاسو په سیالۍ کې برخه اخلئ، تاسو باید د زده کړې_ شرح او تکرارونو پرته د پیرامیټونو په ټاکلو کې وخت ضایع نکړئ. یو ګړندی حل دا دی چې د څو ماډلونو جوړه جوړه کړئ.
  • بوسټینګ کولی شي په GPU کې زده کړي. کیټ بوسټ کولی شي په GPU کې خورا ګړندي زده کړي ، مګر دا خورا حافظه خوري.
  • د نظرونو د پراختیا او ازموینې په جریان کې، دا غوره ده چې یو کوچنی rsm ~ = 0.2 (یوازې CPU) او ctr_complexity = 1 تنظیم کړئ.
  • د نورو ټیمونو برعکس، زموږ د ماډلونو مجموعه لوی زیاتوالی ورکړ. موږ یوازې نظرونه تبادله کړل او په مختلفو ژبو یې لیکلي. موږ د معلوماتو ویشلو لپاره مختلف طریقه درلوده او زما په اند، هر یو خپل بګونه درلودل.
  • دا روښانه نده چې ولې د درجه بندي اصلاح کول د ډلبندۍ اصلاح کولو څخه بد ترسره شوي.
  • ما د متنونو سره کار کولو یو څه تجربه ترلاسه کړه او پدې پوهیدل چې څنګه د وړاندیز کونکي سیسټمونه رامینځته کیږي.

د SNA هیکاتون 2019

د تنظیم کونکو څخه د احساساتو، پوهې او انعامونو لپاره مننه.

سرچینه: www.habr.com

Add a comment