SNA Hackathon 2019

Дар моҳҳои феврал-марти соли 2019 озмун барои рейтинги канали шабакаҳои иҷтимоӣ баргузор шуд SNA Hackathon 2019, ки дар он командаи мо чои якумро гирифт. Дар мақола ман дар бораи ташкили мусобиқа, усулҳое, ки мо санҷидаем ва танзимоти catboost барои омӯзиш дар бораи додаҳои калон сӯҳбат мекунам.

SNA Hackathon 2019

SNA Hackathon

Бори сеюм аст, ки ҳакатон таҳти ин ном баргузор мешавад. Он аз ҷониби шабакаи иҷтимоии ok.ru ташкил карда шудааст, мутаносибан вазифа ва маълумот мустақиман ба ин шабакаи иҷтимоӣ алоқаманд аст.
SNA (таҳлили шабакаҳои иҷтимоӣ) дар ин маврид на ҳамчун таҳлили графики иҷтимоӣ, балки ҳамчун таҳлили шабакаи иҷтимоӣ дурусттар фаҳмида мешавад.

  • Дар соли 2014 вазифа пешгӯӣ кардани шумораи лайкҳои як паём буд.
  • Дар соли 2016 - вазифаи VVZ (шояд шумо шинос бошед), ба таҳлили графикаи иҷтимоӣ наздиктар аст.
  • Дар соли 2019, рейтинги канали корбарро дар асоси эҳтимолияти ба корбар писанд омадани ин пост.

Ман дар бораи соли 2014 гуфта наметавонам, аммо дар солҳои 2016 ва 2019, ба ҷуз қобилиятҳои таҳлили додаҳо, малакаҳои кор бо додаҳои калон низ талаб карда шуданд. Ман фикр мекунам, ки маҳз омезиши омӯзиши мошинсозӣ ва мушкилоти коркарди додаҳои калон маро ба ин мусобиқаҳо ҷалб кард ва таҷрибаи ман дар ин соҳаҳо ба ман кӯмак кард, ки ғолиб оям.

mlbootcamp

Дар соли 2019 озмун дар платформа ташкил карда шуд https://mlbootcamp.ru.

Озмун 7-уми феврали соли равон оғоз шуда, аз 3 супориш иборат буд. Ҳар касе метавонад дар сайт сабти ном шавад, зеркашӣ кунад асос ва мошинатонро чанд соат бор кунед. Дар анҷоми марҳилаи онлайн рӯзи 15 март, 15 нафари беҳтарини ҳар як чорабинии шоу-ҷаҳидан ба офиси Mail.ru барои марҳилаи офлайнӣ, ки аз 30 март то 1 апрел баргузор шуд, даъват карда шуданд.

Мақсад

Маълумоти манбаъ ID-ҳои корбар (userId) ва ID-ҳои пост (objectId) медиҳад. Агар ба корбар паём нишон дода шуда бошад, пас маълумот дорои сатри дорои userId, objectId, аксуламалҳои корбар ба ин пост (фикр) ва маҷмӯи хусусиятҳо ё истинодҳои гуногун ба тасвирҳо ва матнҳо мебошад.

Шаҳодатномаи Корбар объект ID ID соҳиби алоќаи тасвирҳо
3555 22 5677 [писанд омад, клик кард] [хэш1]
12842 55 32144 [нописанд] [hash2, hash3]
13145 35 5677 [клик кард, мубодила] [хэш2]

Маҷмӯи маълумоти санҷиш дорои сохтори шабеҳ аст, аммо майдони фикру мулоҳизаҳо мавҷуд нест. Вазифа аз он иборат аст, ки мавҷудияти аксуламали "писанд" дар соҳаи фикру мулоҳиза пешгӯӣ карда шавад.
Файли пешниҳод дорои сохтори зерин аст:

Шаҳодатномаи Корбар SortedList[objectId]
123 78,13,54,22
128 35,61,55
131 35,68,129,11

Метрик дараҷаи миёнаи ROC AUC барои корбарон мебошад.

Тавсифи муфассали маълумотро дар ин ҷо пайдо кардан мумкин аст вебсайти шӯро. Шумо инчунин метавонед дар он ҷо маълумот, аз ҷумла санҷишҳо ва тасвирҳоро зеркашӣ кунед.

Марҳилаи онлайн

Дар марҳилаи онлайн супориш ба 3 қисм тақсим карда шуд

  • Системаи муштарак — тамоми хусусиятҳоро ба истиснои тасвирҳо ва матнҳо дар бар мегирад;
  • Тасвирҳо — танҳо маълумотро дар бораи тасвирҳо дар бар мегирад;
  • Матнҳо — маълумотро танхо дар бораи матнхо дар бар мегирад.

Марҳилаи офлайн

Дар марҳилаи офлайнӣ, маълумот ҳама хусусиятҳоро дар бар мегирифт, дар ҳоле ки матнҳо ва тасвирҳо кам буданд. Дар маҷмӯаи додаҳо сатрҳо 1,5 маротиба зиёдтар буданд, ки аллакай бисёр буданд.

Халли масъала

Азбаски ман дар ҷои кор CV кор мекунам, ман сафари худро дар ин озмун бо супориши "Тасвирҳо" оғоз кардам. Маълумоте, ки пешниҳод карда шуд, userId, objectId, ownerId (гурӯҳе, ки дар он паём интишор шудааст), тамғаҳои вақт барои эҷод ва намоиши паём ва, албатта, тасвири ин пост буданд.
Пас аз тавлиди якчанд хусусиятҳо дар асоси тамғаҳои вақт, идеяи навбатӣ гирифтани қабати пеш аз охирини нейрон, ки дар imagenet қаблан омӯзонида шудааст ва фиристодани ин ҷобаҷогузорӣ барои афзоиш буд.

SNA Hackathon 2019

Натичахо чолиби диккат набуданд. Ҷойгиркунӣ аз нейронии тасвирӣ номувофиқ аст, ман фикр мекардам, ки ман бояд автоматикодери худро созам.

SNA Hackathon 2019

Вакти зиёд гирифт ва натица бехтар нашуд.

Насли хусусият

Кор бо тасвирҳо вақти зиёдро талаб мекунад, бинобар ин ман тасмим гирифтам, ки кори соддатарро иҷро кунам.
Тавре ки шумо фавран мебинед, дар маҷмӯи додаҳо якчанд хусусиятҳои категориявӣ мавҷуданд ва барои он ки аз ҳад зиёд ташвиш надиҳам, ман танҳо catboost гирифтам. Ҳалли олӣ буд, бе ягон танзимот ман фавран ба сатри аввали ҷадвали пешсаф расидам.

Маълумот хеле зиёд аст ва он дар формати паркет гузошта шудааст, бинобар ин ман ду бор фикр накарда, скала гирифта, ҳама чизро бо шарора навиштан оғоз кардам.

Хусусиятҳои соддатарин, ки нисбат ба ҷойгиркунии тасвирҳо афзоиш доданд:

  • Дар маълумот чанд маротиба objectId, userId ва ownerId пайдо шуданд (бояд бо маъруфият мувофиқат кунанд);
  • чанд паёми userId аз ownerId дидааст (бояд бо таваҷҷӯҳи корбар ба гурӯҳ мувофиқат кунад);
  • чӣ қадар userId-ҳои беназир паёмҳоро аз ownerId диданд (ҳаҷми аудиторияи гурӯҳро инъикос мекунад).

Аз тамғаҳои вақт метавон вақти рӯзеро дарёфт кард, ки корбар дар он наворро тамошо мекунад (саҳар/нимрӯз/шом/шаб). Бо омезиши ин категорияҳо, шумо метавонед ба тавлиди хусусиятҳо идома диҳед:

  • чанд маротиба userId шом ворид шуд;
  • дар кадом вақт ин паём аксар вақт нишон дода мешавад (objectId) ва ғайра.

Хамаи ин ченакхоро тадричан такмил дод. Аммо андозаи маҷмӯи маълумотҳои омӯзишӣ тақрибан 20 миллион сабтро ташкил медиҳад, аз ин рӯ илова кардани хусусиятҳо омӯзишро хеле суст кард.

Ман муносибати худро ба истифодаи маълумот аз нав дида баромадам. Гарчанде ки маълумот аз вақт вобаста аст, ман ҳеҷ гуна ихроҷи иттилооти "дар оянда" надидам, ба ҳар ҳол, ман онро ба таври зайл тақсим кардам:

SNA Hackathon 2019

Маҷмӯи омӯзишии ба мо пешниҳодшуда (феврал ва 2 ҳафтаи март) ба 2 қисм тақсим карда шуд.
Модел аз рӯи маълумот аз N рӯзи охир омӯзонида шуд. Агрегатсияҳои дар боло тавсифшуда дар ҳама маълумотҳо, аз ҷумла санҷиш сохта шудаанд. Дар айни замон, маълумоте пайдо шуд, ки аз рӯи онҳо рамзгузории гуногуни тағирёбандаи мақсаднок сохтан мумкин аст. Оддӣтарин равиш ин истифодаи дубораи кодест, ки аллакай хусусиятҳои нав эҷод мекунад ва ба он маълумот дода мешавад, ки ба он таълим дода намешавад ва ҳадаф = 1.

Ҳамин тариқ, мо хусусиятҳои монанд ба даст овардем:

  • Чанд маротиба userId як постро дар ownerId гурӯҳ дидааст;
  • Чанд маротиба userId паёмро дар гурӯҳи ownerId писанд овард;
  • Фоизи паёмҳое, ки ба userId аз ownerId писанд омад.

Яъне маълум шуд маънои рамзгузории ҳадаф дар як қисми маҷмӯаи маълумот барои маҷмӯи гуногуни хусусиятҳои категориявӣ. Аслан, catboost инчунин рамзгузории мақсаднокро месозад ва аз ин нуқтаи назар ҳеҷ фоидае нест, аммо, масалан, шумори корбарони беназиреро, ки паёмҳоро дар ин гурӯҳ дӯст медоштанд, ҳисоб кардан мумкин шуд. Ҳамзамон, ҳадафи асосӣ ба даст омад - маҷмӯи додаҳои ман якчанд маротиба кам карда шуд ва имкон дошт, ки тавлиди хусусиятҳоро идома диҳед.

Дар ҳоле ки catboost метавонад рамзгузориро танҳо дар асоси аксуламали писандида бунёд кунад, фикру мулоҳизаҳо аксуламалҳои дигар доранд: аз нав мубодила, нописандӣ, нописандӣ, клик кардан, нодида гирифтан, рамзгузориро дастӣ кардан мумкин аст. Ман ҳама намудҳои агрегатҳоро аз нав ҳисоб кардам ва хусусиятҳои дорои аҳамияти камро нест кардам, то маҷмӯи додаҳоро пур накунам.

Он вақт ман бо фарқи калон дар ҷои аввал будам. Ягона чизе, ки печида буд, ин буд, ки ҷойгиркунии тасвирҳо қариб ҳеҷ гуна афзоишро нишон намедод. Идея омад, ки ҳама чизро ба catboost диҳад. Мо тасвирҳои Kmeans-ро кластер мекунем ва хусусияти нави категорияи imageCat мегирем.

Инҳоянд баъзе синфҳо пас аз филтркунии дастӣ ва якҷоякунии кластерҳо, ки аз KMeans гирифта шудаанд.

SNA Hackathon 2019

Дар асоси imageCat мо тавлид мекунем:

  • Хусусиятҳои нави категориявӣ:
    • Кадом imageCat аз ҷониби userId бештар дида мешуд;
    • Кадом imageCat аксар вақт соҳиби ID-ро нишон медиҳад;
    • Кадом imageCat бештар ба userId писанд омад;
  • Ҳисобкунакҳои гуногун:
    • Чӣ қадар imageCat беҳамто ба userId нигоҳ кард;
    • Тақрибан 15 хусусиятҳои шабеҳ ва рамзгузории ҳадаф, ки дар боло тавсиф шудааст.

Матнҳо

Натиҷаҳо дар озмуни тасвирҳо ба ман мувофиқ буданд ва ман тасмим гирифтам, ки дар матнҳо кӯшиш кунам. Ман пештар бо матнҳо чандон кор накардаам ва беақл, рӯзро дар tf-idf ва svd куштам. Пас аз он ман заминаи асосиро бо doc2vec дидам, ки маҳз он чизеро, ки ба ман лозим аст, иҷро мекунад. Пас аз каме танзим кардани параметрҳои doc2vec, ман ҷойгиркунии матнро гирифтам.

Ва он гоҳ ман танҳо рамзи тасвирҳоро дубора истифода кардам, ки дар он ман ҷойгиркунии тасвирҳоро бо ҷойгиркунии матн иваз кардам. Дар натиҷа дар озмуни матнӣ ҷои 2-юмро гирифтам.

Системаи муштарак

Як рақобат боқӣ монд, ки ман то ҳол бо чӯб "тахта" накардаам ва аз рӯи хулосаи AUC дар ҷадвали пешсаф, натиҷаҳои ин мусобиқаи мушаххас бояд дар марҳилаи офлайнӣ таъсири бештаре дошта бошанд.
Ман ҳамаи хусусиятҳоеро, ки дар маълумоти манбаъ буданд, гирифтам, категорияҳои категорияро интихоб кардам ва ҳамон агрегатҳоро барои тасвирҳо ҳисоб кардам, ба истиснои хусусиятҳо дар асоси худи тасвирҳо. Танҳо гузоштани ин дар catboost маро ба ҷои 2-юм овард.

Қадамҳои аввалини оптимизатсияи catboost

Як ҷои аввал ва ду ҷои дуюм маро писанд овард, аммо фаҳмиш буд, ки ман ягон кори махсус накардаам, яъне ман метавонам аз даст додани мавқеъ интизор шавам.

Ҳадафи озмун ин баҳогузории постҳо дар дохили корбар аст ва тамоми ин вақт ман масъалаи таснифро ҳал мекардам, яъне оптимизатсияи метрикаи нодуруст.

Биёед ба шумо як мисоли оддӣ диҳам:

Шаҳодатномаи Корбар объект 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

Мо натиҷаҳои зеринро ба даст меорем:

Модели АВЧ Истифодабарандаи 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 медонад, ки чӣ гуна оптимизатсия кардани метрикаи рейтинг аз қуттӣ. Ман дар бораи ченакҳои рейтинг хондам, ҳикояҳои муваффақият ҳангоми истифодаи catboost ва YetiRankPairwise -ро барои машқ кардани як шаб муқаррар кунед. Натичаи он таъсирбахш набуд. Қарор додам, ки ман кам таълим гирифтаам, ман функсияи хатогиро ба QueryRMSE иваз кардам, ки аз рӯи ҳуҷҷатҳои catboost, он тезтар муттаҳид мешавад. Дар охир ман хамон натичахоеро ба даст овардам, ки хангоми тайёрй ба классификация, вале ансамбльхои ин ду модел афзои-ши хуб доданд, ки ин маро дар хар се конкурс ба чои якум овард.

5 дақиқа пеш аз анҷоми марҳилаи онлайнии озмуни «Системаҳои муштарак» Сергей Шалнов маро ба ҷои дуюм баровард. Мо рохи минбаъдаро якчоя пеш гирифтем.

Омодагӣ ба марҳилаи офлайнӣ

Ба мо пирӯзӣ дар марҳилаи онлайн бо корти видеоии RTX 2080 TI кафолат дода шуд, аммо ҷоизаи асосии 300 000 рубл ва эҳтимолан ҳатто ҷои аввал моро маҷбур кард, ки дар ин 2 ҳафта кор кунем.

Тавре маълум шуд, Сергей инчунин catboost-ро истифода бурд. Мо мубодилаи афкор ва хусусиятҳои, ва ман дар бораи гузориши Анна Вероника Дорогуш ки дар он ба бисьёр саволхои ман ва хатто ба саволхое, ки то он вакт ман хануз нагирифта будам, чавоб медоданд.

Намоиши гузориш маро ба он овард, ки мо бояд ҳамаи параметрҳоро ба арзиши пешфарз баргардонем ва танзимотро хеле бодиққат ва танҳо пас аз ислоҳ кардани маҷмӯи хусусиятҳо иҷро кунем. Акнун як машқ тақрибан 15 соат тӯл кашид, аммо як модел тавонист суръати беҳтареро аз суръате, ки дар ансамбл бо рейтинг ба даст оварда буд, ба даст орад.

Насли хусусият

Дар озмуни системаҳои муштарак шумораи зиёди хусусиятҳо барои модел муҳим арзёбӣ мешаванд. Барои намуна, auditweights_spark_svd - аломати муҳимтарин, аммо дар бораи чӣ маънояш маълумот нест. Ман фикр мекардам, ки агрегатҳои гуногунро дар асоси хусусиятҳои муҳим ҳисоб кардан бамаврид аст. Масалан, ба ҳисоби миёна auditweights_spark_svd аз рӯи корбар, аз рӯи гурӯҳ, аз рӯи объект. Ҳаминро метавон бо истифода аз маълумоте ҳисоб кард, ки дар он ҳеҷ гуна омӯзиш гузаронида нашудааст ва ҳадаф = 1, яъне миёна auditweights_spark_svd аз ҷониби корбар аз рӯи объектҳои ба ӯ маъқул. Илова бар ин, аломатҳои муҳим auditweights_spark_svd, якчанд нафар буданд. Дар ин ҷо баъзе аз онҳо ҳастанд:

  • AudiweightsCtrGender
  • вазнҳои аудитӣCtrHigh
  • userOwnerCounterCreateLikes

Масалан, миёна AudiweightsCtrGender мувофиқи userId он як хусусияти муҳим ба мисли арзиши миёна баромад userOwnerCounterCreateLikes аз ҷониби userId+ownerId. Ин аллакай шуморо водор мекунад, ки шумо бояд маънои майдонҳоро фаҳмед.

Хусусиятҳои муҳим низ буданд auditweightsLikesCount и Аудит вазнҳоShowsCount. Якеро ба дигар таксим карда, хусусияти боз хам мухимтар ба даст омад.

Ихроҷи маълумот

Рақобат ва моделсозии истеҳсолот вазифаҳои хеле гуногун мебошанд. Ҳангоми омода кардани маълумот, ба инобат гирифтани тамоми ҷузъиёт ва нарасонидани баъзе маълумоти ғайриоддӣ дар бораи тағирёбандаи ҳадаф дар санҷиш хеле душвор аст. Агар мо як ҳалли истеҳсолӣ эҷод кунем, мо кӯшиш хоҳем кард, ки ҳангоми омӯзиши модел аз истифодаи ихроҷи маълумот худдорӣ кунем. Аммо агар мо хоҳем, ки дар рақобат ғолиб шавем, пас ихроҷи маълумот беҳтарин хусусиятҳост.

Пас аз омӯхтани маълумот, шумо мебинед, ки мувофиқи арзишҳои objectId auditweightsLikesCount и Аудит вазнҳоShowsCount тағирот, ки ин маънои онро дорад, ки таносуби арзишҳои максималии ин хусусиятҳо табдили баъдиро нисбат ба таносуб дар вақти намоиш хеле беҳтар инъикос мекунад.

Аввалин ихроҷе, ки мо ёфтем, ин аст auditweightsLikesCountMax/auditweightsShowsCountMax.
Аммо чӣ мешавад, агар мо ба маълумот бодиққат назар кунем? Биёед аз рӯи санаи намоиш ҷудо кунем ва ба даст орем:

объект ID Шаҳодатномаи Корбар Аудит вазнҳоShowsCount auditweightsLikesCount ҳадаф (писанд аст)
1 1 12 3 шояд не
1 2 15 3 шояд ҳа
1 3 16 4

Вакте ки аввалин чунин мисолро ёфтам, тааччубовар буд ва маълум шуд, ки пешгуии ман ба амал наомадааст. Аммо, бо назардошти он, ки арзишҳои максималии ин хусусиятҳо дар дохили объект афзоиш ёфтанд, мо танбал набудем ва тасмим гирифтем, ки вазнҳои аудиторӣShowsCountNext и auditweightsLikesCountNext, яъне арзишҳо дар лаҳзаи оянда. Бо илова кардани хусусият
(аудитвазнҳоShowsCount-auditWightsShowsCount)/(auditweightsLikesCount-auditweightsLikesCountNext) мо тез чахида баромадем.
Ихроҷҳои шабеҳро тавассути дарёфти арзишҳои зерин истифода бурдан мумкин аст userOwnerCounterCreateLikes дар дохили userId+ownerId ва, масалан, AudiweightsCtrGender дар дохили objectId+userGender. Мо 6 майдони шабеҳро бо ихроҷ пайдо кардем ва аз онҳо ба қадри имкон маълумоти бештар гирифтем.

То он вақт, мо аз хусусиятҳои муштарак ҳарчи бештар маълумотро фишурда будем, аммо ба озмунҳои тасвирӣ ва матнӣ барнагаштем. Ман як фикри олиҷаноб доштам, ки тафтиш кунам: хусусиятҳо дар мусобиқаҳои дахлдор чӣ қадар ба тасвирҳо ё матнҳо асос ёфтаанд?

Дар озмунҳои тасвирҳо ва матн ҳеҷ гуна ихроҷ набуд, аммо то он вақт ман параметрҳои пешфарзии catboost-ро баргардондам, рамзро тоза кардам ва чанд хусусият илова кардам. Ҳамагӣ ин буд:

ҳалли зуд
Максимум бо тасвирҳо 0.6411
Максимум бе тасвирҳо 0.6297
Натиҷаи ҷои дуюм 0.6295

ҳалли зуд
Максимум бо матнҳо 0.666
Максимум бидуни матн 0.660
Натиҷаи ҷои дуюм 0.656

ҳалли зуд
Максимум дар ҳамкорӣ 0.745
Натиҷаи ҷои дуюм 0.723

Маълум шуд, ки мо гумон аст, ки аз матнҳо ва тасвирҳо чизи зиёдеро фишурда тавонем ва пас аз кӯшиши якчанд идеяҳои ҷолибтарин кор бо онҳо қатъ карда шуд.

Насли минбаъдаи хусусиятҳо дар системаҳои муштарак афзоиш надод ва мо ба рейтинг оғоз кардем. Дар марҳилаи онлайн, тасниф ва рейтинг ба ман каме афзоиш дод, зеро маълум шуд, ки ман таснифро аз ҳад зиёд омӯхтам. Ҳеҷ яке аз функсияҳои хатогӣ, аз ҷумла YetiRanlPairwise, дар наздикии натиҷае, ки LogLoss кардааст (0,745 бар зидди 0,725) тавлид нашудааст. Ҳанӯз ҳам умед ба QueryCrossEntropy вуҷуд дошт, ки онро оғоз кардан мумкин нест.

Марҳилаи офлайн

Дар марҳилаи офлайнӣ, сохтори додаҳо бетағйир монд, аммо тағироти ночиз ба амал омад:

  • идентификаторҳои userId, objectId, ownerId аз нав тасодуфӣ карда шуданд;
  • якчанд аломатҳо бардошта шуданд ва чанде аз онҳо дигар номгузорӣ шуданд;
  • маълумот такрибан 1,5 баробар афзуд.

Илова ба мушкилоти номбаршуда, як плюси калон вуҷуд дошт: ба даста сервери калон бо RTX 2080TI ҷудо карда шуд. Ман муддати тӯлонӣ аз htop лаззат мебарам.
SNA Hackathon 2019

Фақат як идея вуҷуд дошт - он чизеро, ки аллакай вуҷуд дорад, дубора тавлид кунад. Пас аз чанд соат сарф кардани муҳит дар сервер, мо тадриҷан ба тафтиш кардани он шурӯъ кардем, ки натиҷаҳо такроршавандаанд. Мушкилоти асосие, ки мо бо он рӯ ба рӯ мешавем, афзоиши ҳаҷми маълумот аст. Мо тасмим гирифтем, ки сарбориро каме кам кунем ва параметри catboost ctr_complexity=1-ро муқаррар кунем. Ин суръатро каме паст мекунад, аммо модели ман ба кор шурӯъ кард, натиҷа хуб буд - 0,733. Сергей, бар хилофи ман, маълумотро ба 2 қисм тақсим накард ва дар бораи ҳама маълумот омӯзонида шуд, гарчанде ки ин дар марҳилаи онлайн натиҷаҳои беҳтарин дод, дар марҳилаи офлайнӣ душвориҳои зиёд ба амал омад. Агар мо тамоми хусусиятҳоеро, ки тавлид кардем, гирифта бошем ва кӯшиш кунем, ки онҳоро ба catboost тела диҳем, пас дар марҳилаи онлайн ҳеҷ чиз кор намекунад. Сергей намуди оптимизатсияро анҷом дод, масалан, намудҳои float64-ро ба float32 табдил дод. Дар ин мақола, Шумо метавонед маълумотро дар бораи оптимизатсияи хотира дар pandas пайдо кунед. Дар натиҷа, Сергей бо истифода аз тамоми маълумот дар CPU таълим дод ва тақрибан 0,735 гирифт.

Ин натичахо барои галаба кифоя буданд, вале мо суръати хакикии худро пинхон доштем ва боварй хосил карда наметавонистем, ки командахои дигар хам хамин тавр рафтор намекунанд.

То охир мубориза баред

Танзими Catboost

Ҳалли мо пурра дубора тавлид шуд, мо хусусиятҳои додаҳои матнӣ ва тасвирҳоро илова кардем, бинобар ин танҳо танзим кардани параметрҳои catboost буд. Сергей дар CPU бо шумораи ками итератсияҳо машқ мекард ва ман дар он бо ctr_complexity=1 машқ кардам. Як рӯз боқӣ монда буд ва агар шумо танҳо такрорҳоро илова кунед ё ctr_complexity-ро зиёд кунед, пас то субҳ шумо метавонед суръати боз ҳам беҳтартар ба даст оред ва тамоми рӯз роҳ равед.

Дар марҳилаи офлайнӣ, суръатро бо роҳи интихоби беҳтарин роҳи ҳалли сайт ба осонӣ пинҳон кардан мумкин аст. Мо интизор будем, ки дар дақиқаҳои охир пеш аз бастани пешниҳодҳо тағйироти ҷиддиро дар ҷадвали пешсаф интизор будем ва тасмим гирифтем, ки бас накунем.

Аз видеои Анна ман фаҳмидам, ки барои беҳтар кардани сифати модел, беҳтар аст, ки параметрҳои зеринро интихоб кунед:

  • меъёри_омӯзиш — Арзиши пешфарз аз рӯи андозаи маҷмӯи додаҳо ҳисоб карда мешавад. Баланд бардоштани сатҳи омӯзиш зиёд кардани шумораи такрорҳоро талаб мекунад.
  • l2_leaf_reg — Коэффисиенти танзим, арзиши пешфарз 3, беҳтараш аз 2 то 30 интихоб кунед. Паст кардани арзиш боиси афзоиши изофа мегардад.
  • ҳарорати_халтабандӣ — ба вазнҳои объектҳои интихоб тасодуфӣ илова мекунад. Қимати пешфарз 1 аст, ки дар он вазнҳо аз тақсимоти экспоненсиалӣ гирифта мешаванд. Паст кардани арзиш боиси зиёд шудани зиёдатӣ мегардад.
  • қувваи тасодуфӣ — Ба интихоби тақсимот дар итератсияи мушаххас таъсир мерасонад. Чӣ қадаре ки random_strength баланд бошад, ҳамон қадар эҳтимолияти интихоби тақсимоти аҳамияти кам баландтар аст. Дар ҳар як такрори минбаъда, тасодуфӣ кам мешавад. Паст кардани арзиш боиси зиёд шудани зиёдатӣ мегардад.

Дигар параметрҳо ба натиҷаи ниҳоӣ таъсири хеле камтар доранд, бинобар ин ман кӯшиш накардам, ки онҳоро интихоб кунам. Як такрори омӯзиш дар маҷмӯи додаҳои 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 оптимизатсия мекард. Варианти соддатарин буридани як қисми маълумот аст, аммо ин метавонад бо якчанд роҳ анҷом дода шавад:

  • тадриҷан кӯҳнатарин маълумотро (ибтидои моҳи феврал) тоза кунед, то он даме, ки маҷмӯи додаҳо ба хотира мувофиқат накунад;
  • хориҷ кардани хусусиятҳои дорои аҳамияти камтарин;
  • идентификатсияҳое, ки барои онҳо танҳо як вуруд мавҷуд аст, хориҷ кунед;
  • танҳо истифодабарандагони ID-ро, ки дар санҷиш ҳастанд, гузоред.

Ва дар ниҳоят, аз ҳама имконоти ансамбль созед.

Ансамбли охирин

То бегоҳии рӯзи гузашта мо як ансамбли моделҳои худро тартиб додем, ки ҳосили 0,742 буд. Дар як шаб ман модели худро бо ctr_complexity=2 ба кор андохтам ва ба ҷои 30 дақиқа он 5 соат тамрин кард. Танҳо дар соати 4-и субҳ он ҳисоб карда шуд, ва ман ансамбли охиринро сохтам, ки дар рейтинги ҷамъиятӣ 0,7433 баҳо дод.

Бинобар муносибати гуногун ба халли масъала пешгуии мо ба хам зич алокаманд набуд, ки ин боиси афзоиши хуби ансамбль гардид. Барои ба даст овардани ансамбли хуб, беҳтар аст, ки пешгӯиҳои модели хомро истифода баред (prediction_type='RawFormulaVal') ва scale_pos_weight=neg_count/pos_count муқаррар кунед.

SNA Hackathon 2019

Дар сайт шумо метавонед дидан кунед натиҷаҳои ниҳоӣ дар бораи пешсафи хусусӣ.

Ҳалли дигар

Бисёре аз дастаҳо ба қонунҳои алгоритмҳои системаи тавсиядиҳанда пайравӣ карданд. Ман, ки мутахассиси ин соҳа нестам, ба онҳо баҳо дода наметавонам, аммо 2 ҳалли ҷолибро дар ёд дорам.

  • ҳалли Николай Анохин. Николай, ки корманди Mail.ru буд, барои ҷоизаҳо муроҷиат накард, аз ин рӯ ҳадафи ӯ на ба даст овардани суръати ҳадди аксар, балки ба даст овардани як ҳалли ба осонӣ васеъшаванда буд.
  • Қарори дастаи ғолиби Ҷоизаи ҳакамон дар асоси ин мақола аз Facebook, барои кластеркунии хеле хуби тасвирҳо бе кори дастӣ иҷозат дод.

хулоса

Чизе бештар дар хотирам мондааст:

  • Агар дар маълумот хусусиятҳои категориявӣ мавҷуд бошанд ва шумо медонед, ки чӣ гуна рамзгузории ҳадафро дуруст иҷро кунед, беҳтар аст, ки catboost-ро санҷед.
  • Агар шумо дар озмун иштирок карда бошед, шумо набояд вақтро барои интихоби параметрҳои ғайр аз Learn_rate ва такрорӣ сарф накунед. Як ҳалли зудтар ин аст, ки ансамбли якчанд моделҳо.
  • Такмилҳо метавонанд дар GPU омӯхта шаванд. Catboost метавонад дар GPU хеле зуд омӯхта шавад, аммо он хотираи зиёдеро мехӯрад.
  • Ҳангоми таҳия ва санҷиши идеяҳо беҳтар аст, ки rsm~=0.2 (танҳо CPU) ва ctr_complexity=1 муқаррар карда шавад.
  • Ансамбли модели мо назар ба дигар кол-лективхо афзоиши калон дод. Мо танҳо ба табодули афкор ва бо забонҳои гуногун менавишт. Мо барои тақсим кардани маълумот муносибати гуногун доштем ва ба фикрам, ҳар як хатогиҳои худро дошт.
  • Маълум нест, ки чаро рейтинги оптимизатсия аз оптимизатсияи таснифот бадтар буд.
  • Ман таҷрибаи кор бо матнҳо ва фаҳмиши он, ки чӣ гуна системаҳои тавсиядиҳанда сохта шудаанд.

SNA Hackathon 2019

Ташаккур ба ташкилкунандагон барои эҳсосот, дониш ва тӯҳфаҳои гирифташуда.

Манбаъ: will.com

Илова Эзоҳ