Nasz Zespół w „Quora Competition”!
Internal Project to inicjatywa polegająca na realizowaniu dodatkowo finansowanych projektów, poza godzinami pracy. W ramach wewnętrznego programu wspierane są technologiczne i rozwojowe pomysły pracowników Apollogic. Projekt naszego zespołu Big Data został zatytułowany “Quora Competition”.
Inicjatywę realizowaliśmy w trzyosobowej drużynie Big Data. Zakładała ona udział w konkursie Data Science. Została przeprowadzona przez następujących Konsultantów Big Data w naszej firmie:
- Adam Maciaszek
- Mikołaj Kęsy
- Arkadiusz Rusin
Kaggle – platforma Data Science dla profesjonalistów
Konkurs, w którym wzięliśmy udział został zorganizowany w ramach platformy Kaggle. Jest to obecnie jedna z największych i najbardziej prestiżowych inicjatyw zrzeszających szeroko pojęte środowisko Data Science. Można znaleźć tam przykładowe zbiory danych do analizy, oferty pracy dla Data Scientists, oraz rozbudowane forum dyskusyjne.
W serwisie Kaggle eksperci publikują próbki swoich rozwiązań, celem pozyskania komentarzy od innych użytkowników oceniających podejście do zadanego problemu.
Jednak najważniejszą funkcją portalu jest wzięcie udziału w konkursie (“Competition”). Polega to na przedstawieniu przez firmy z różnych branż zadań związanych z analizą danych. Najczęściej problem sprowadza się to stworzenia modelu umożliwiającego prognozę określonego zjawiska.
Organizator wyzwania dostarcza treningowe i testowe zestawy danych. Na zawodach dozwolona jest określona ilość ‘Submissions’, czyli dodania swoich wyników celem sprawdzenia ich aktualnej pozycji na liście. Tablica z rezultatami uaktualniana jest w czasie rzeczywistym, co pozwala nieustannie monitorować swoje wyniki na tle pozostałych uczestników.
Zespół Big Data w “Quora Competition”
My zdecydowaliśmy się na ‘Quora Competition’. Zadaniem w tym konkursie było zbudowanie modelu pozwalającego na prognozę, czy dana para pytań na portalu Quora to duplikaty, czyli czy mają takie same znaczenie. Otrzymany przez nas zbiór treningowy składał się z par pytań i binarnej wartości mówiącej o tym czy dana para jest duplikatem, czy nie. Miało to na celu sprawdzenie poprawności stworzonego przez nas modelu.
Przykładowy zestaw:
„What is the step by step guide to invest in share market in india?”,”What is the step by step guide to invest in share market?”,”0″
Zbiór treningowy zawierał 404289 par, natomiast testowy 2345795 par.
Czemu zainicjowaliśmy ten Internal Project?
W “Quora Competition” chcieliśmy osiągnąć następujące cele:
- Zmierzenie się z problemem typowym dla Data Science
- Nabranie doświadczenia w tym obszarze
- Chęć porównania naszych umiejętności z innymi osobami z całego świata
- Poszerzenie kompetencji w obszarze Przetwarzania Języka Naturalnego (NLP)
Naszym założeniem było znalezienie się w pierwszych 20% wyników.
Biorąc pod uwagę, że w konkursie biorą udział profesjonaliści i środowiska akademickie, a my angażowaliśmy się w projekt po godzinach pracy, uznaliśmy to za cel stosunkowo ambitny.
Zastosowane podejście
Problem, z którym się mierzyliśmy sprowadzał się w dużym stopniu do Przetwarzania Języka Naturalnego (NLP – Natural Language Processing). W związku z tym, oprócz typowo technicznej pracy, musieliśmy poświęcić dużo czasu również “miękkiej” analizie danych.
Niezbędne było przejrzenie zbioru w celu lepszego zrozumienia jakie zależności w największym stopniu decydują o tym, czy dana para jest duplikatem, ale także znalezienia wszelkich anomalii utrudniających trenowanie modelu.
Następnym zadaniem był preprocessing danych.
Na tym etapie zastosowaliśmy takie techniki NLP jak Stemming i Lematyzacja. Chcieliśmy sprowadzić słowa w różnych formach gramatycznych do jednej postaci, usuwaliśmy stopwordy i ujednolicaliśmy synonimy w pytaniach do wspólnej postaci.
W celu porównywania występujących w pytaniach części mowy zastosowaliśmy Part Of Speech Tagging. Moduł ten posłużył nam także do analizy struktur syntaktycznych zdań wykorzystując modele grafowe, takie jak Dependency Tree oraz Phrase Structure Tree. Natomiast metody Named Entity Recognition (rozpoznawanie encji) użyliśmy, aby porównać występujące w parach pytań encje, takie jak osoby, lokalizacje i organizacje.
Najważniejszą część projektu stanowiło tworzenie cech pozwalających ilościowo określać czy dane pytanie jest duplikatem, czy nie (tzw. Features).
W naszym modelu znalazły się bardzo różne cechy, od najprostszych porównujących ilość słów w pytaniu, przez typowe dla NLP takie jak Odległość Levenshteina, ilość pokrywających się n-gramów i występowanie pokrywających się encji (np. ta sama osoba występująca w dwóch pytaniach). Zastosowaliśmy również bardziej zaawansowane techniki, takie jak wektoryzacja, która pozwoliła na obliczenie wielu cech na podstawie odległości wektorowych pomiędzy pytaniami, wykorzystując między innymi techniki zaczerpnięte z silników do wyszukiwania tekstu, zwane ogólnie Text Retrieval.
Bardzo istotną kwestią okazało się samo trenowanie modelu. Na początku projektu założyliśmy, że będziemy to robić lokalnie na naszych laptopach, nie korzystając z klastra Big Data jakim dysponujemy w firmie. Z czasem okazało się jednak, że ilość cech, które stworzyliśmy oraz ich koszt obliczeniowy był na tyle duży, że na przetwarzanie nie wystarczała cała noc.
“Quora Competition” – nasze osiągnięcia
Ostatecznie osiągnęliśmy 416 miejsce na 3307 biorących udział. Nasz wynik Log Loss to 0.16117, dla porównania, najlepsza drużyna uzyskała wynik 0.11580 (im mniejszy Log Loss, tym lepsze wartości predykcji).
Przede wszystkim nabraliśmy sporego doświadczenia w tym jak kompleksowo realizować klasyczny projekt z dziedziny ‘Data Science’. Ponadto, znacząco podnieśliśmy poziom naszej wiedzy z zakresu NLP o bardziej zaawansowane techniki. Kolejną dodaną wartością było podniesienie umiejętności zespołu z zakresu Machine Learning. Nauczyliśmy się korzystać z np. takich narzędzi jak XGBoost.
Autorem artykułu jest Mikołaj Kęsy, Konsultant Big Data w Apollogic.
- On 19/07/2017
0 Comments