Pomiar popularności stron w mediach społecznościowych za pomocą DEA w JAVA PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Pomiar popularności stron w mediach społecznościowych za pomocą DEA w JAVA

W poprzednim artykule omówiliśmy Analiza otaczania danych technikę i widzieliśmy, jak można ją wykorzystać jako skuteczny nieparametryczny algorytm rankingowy. W tym wpisie na blogu opracujemy implementację Data Envelopment Analysis w JAVA i wykorzystamy ją do oceny popularności stron i artykułów w sieci w mediach społecznościowych. Kod jest open-source (na licencji GPL v3) i można go bezpłatnie pobrać z Github.

Aktualizacja: Platforma uczenia maszynowego Datumbox jest teraz open-source i bezpłatna pobieranie. Sprawdź pakiet com.datumbox.framework.algorithms.dea, aby zobaczyć implementację analizy otoczenia danych w Javie.

Implementacja Data Envelopment Analysis w JAVA

Kod jest napisany w języku JAVA i można go pobrać bezpośrednio z Github. Jest na licencji GPLv3, więc możesz go swobodnie używać, modyfikować i rozpowszechniać swobodnie.

Kod implementuje Analiza otaczania danych algorytm, wykorzystuje Biblioteka lp_solve do rozwiązywania problemów programowania liniowego i wykorzystuje dane wyodrębnione z Analityka SEO indeks w celu zbudowania złożonego miernika popularności w mediach społecznościowych dla stron internetowych na podstawie ich udziałów na Facebooku, Google Plus i Twitterze. Wszystkie teoretyczne części algorytmu zostały omówione w poprzednim artykule, a w kodzie źródłowym można znaleźć szczegółowe komentarze javadoc dotyczące implementacji.

Poniżej przedstawiamy wysokopoziomowy opis architektury wdrożenia:

1. Biblioteka lp_solve 5.5

Aby rozwiązać różne problemy programowania liniowego, używamy biblioteki open source o nazwie lp_solve. Konkretna biblioteka jest napisana w ANSI C i używa wrappera JAVA do wywoływania metod bibliotecznych. Dlatego przed uruchomieniem kodu musisz zainstalować lp_solve w swoim systemie. Pliki binarne biblioteki są dostępne zarówno dla Linux i Windows a więcej informacji o instalacji można przeczytać na Dokumentacja lp_solve.

Upewnij się, że dana biblioteka jest zainstalowana w twoim systemie przed próbą uruchomienia kodu JAVA. W przypadku jakichkolwiek problemów związanych z instalacją i konfiguracją biblioteki należy zapoznać się z dokumentacją lp_solve.

2. Klasa analizy otoczenia danych

To jest główna klasa implementacji algorytmu DEA. Implementuje metodę publiczną o nazwie EstestEfficiency(), która pobiera mapę rekordów i zwraca ich wyniki DEA.

3. Obiekt DeaRecord

DeaRecord to specjalny obiekt, który przechowuje dane naszego rekordu. Ponieważ DEA wymaga rozdzielenia wejścia i wyjścia, obiekt DeaRecord przechowuje nasze dane oddzielnie w sposób, który DEA może sobie z nimi poradzić.

4. Klasa popularności SocialMedia

SocialMediaPopularity to aplikacja, która wykorzystuje DEA do oceny popularności strony w sieciach społecznościowych na podstawie jej polubień na Facebooku, Google +1s i Tweetów. Implementuje ona dwie chronione metody - obliczeniePopularność() i estymacjęPercentiles() wraz z dwiema metodami publicznymi - loadFile() i getPopularity().

Obliczanie popularności () wykorzystuje implementację DEA do oszacowania wyników stron na podstawie ich liczby w mediach społecznościowych. Metoda EstestPercentiles() pobiera wyniki DEA i konwertuje je na percentyle. Ogólnie percentyle są łatwiejsze do wyjaśnienia niż wyniki DEA; więc gdy mówimy, że wynik popularności strony wynosi 70%, oznacza to, że dana strona jest bardziej popularna niż 70% stron.

Aby móc oszacować popularność danej strony, musimy dysponować zbiorem danych z liczbą innych stron w mediach społecznościowych. Ma to sens, ponieważ aby przewidzieć, która strona jest popularna, a która nie, musisz być w stanie porównać ją z innymi stronami w sieci. Aby to zrobić, używamy małej anonimowej próbki z indeksu Web SEO Analytics dostarczonego w formacie txt. Możesz zbudować własną bazę danych, wyodrębniając dane z mediów społecznościowych z większej liczby stron w sieci.

Metoda loadFile() służy do ładowania wspomnianych statystyk dotyczących DEA, a metoda getPopularity() jest prostą w użyciu metodą, która pobiera polubienia na Facebooku, +1-ki Google i liczbę tweetów strony oraz ocenia jej popularność w mediach społecznościowych .

Korzystanie z implementacji JAVA do analizy obwiedni danych

W klasie DataEnvelopmentAnalysisExample podaję 2 różne przykłady użycia kodu.

Pierwszy przykład wykorzystuje bezpośrednio metodę DEA do oceny efektywności jednostek organizacyjnych w oparciu o ich wyniki (KWESTIE, WPŁYWY, REQS) i wkład (ZAPASY, WYNAGRODZENIA). Ten przykład został zaczerpnięty z artykułu z DEAzone.com.

        Map<String, DeaRecord> records = new LinkedHashMap<>();
        
        records.put("Depot1", new DeaRecord(new double[]{40.0,55.0,30.0}, new double[]{3.0,5.0}));
        //...adding more records here...
        
        DataEnvelopmentAnalysis dea = new DataEnvelopmentAnalysis();
        Map<String, Double> results = dea.estimateEfficiency(records);
        System.out.println((new TreeMap<>(results)).toString());

Drugi przykład wykorzystuje naszą aplikację Social Media Popularity do oceny popularności strony przy użyciu danych z mediów społecznościowych, takich jak polubienia na Facebooku, +1-ki Google i tweety. Wszystkie liczniki w mediach społecznościowych są oznaczane jako dane wyjściowe i przekazujemy DEA pusty wektor wejściowy.

        SocialMediaPopularity rank = new SocialMediaPopularity();
        rank.loadFile(DataEnvelopmentAnalysisExample.class.getResource("/datasets/socialcounts.txt"));
        Double popularity = rank.getPopularity(135, 337, 9079); //Facebook likes, Google +1s, Tweets
        System.out.println("Page Social Media Popularity: "+popularity.toString());

Niezbędne rozszerzenia

Dostarczony kod jest tylko przykładem tego, jak DEA może być używany jako algorytm rankingowy. Oto kilka rozszerzeń, które należy wykonać, aby ulepszyć implementację:

1. Przyspieszenie wdrożenia

Konkretna implementacja DEA ocenia wyniki DEA wszystkich rekordów w bazie danych. To sprawia, że ​​implementacja jest powolna, ponieważ wymagamy rozwiązania tylu problemów programowania liniowego, ile jest rekordów w bazie danych. Jeśli nie wymagamy obliczania punktacji wszystkich rekordów, możemy znacznie przyspieszyć wykonanie. Tak więc niewielkie rozszerzenie algorytmu może dać nam lepszą kontrolę nad tym, które rekordy należy rozwiązać, a które należy wykorzystać tylko jako ograniczenia.

2. Rozszerzenie bazy danych zliczających media społecznościowe

Dostarczona baza danych Social Media Counts składa się z 1111 próbek z indeksu Web SEO Analytics. Aby móc oszacować dokładniejszy wynik popularności, potrzebna jest większa próba. Możesz stworzyć własną bazę danych, szacując liczbę mediów społecznościowych z większej liczby stron w sieci.

3. Dodawanie kolejnych sieci mediów społecznościowych

Wdrożenie wykorzystuje Facebook Likes, Google +1s i liczbę Tweetów do oceny popularności artykułu. Niemniej jednak dane z innych sieci społecznościowych można łatwo wziąć pod uwagę. Wszystko, co musisz zrobić, to zbudować bazę danych ze statystykami mediów społecznościowych z interesujących Cię sieci i rozwinąć klasę SocialMediaPopularity, aby odpowiednio je obsłużyć.

Uwagi końcowe dotyczące wdrożenia

Aby móc rozszerzyć wdrożenie, musisz dobrze rozumieć, w jaki sposób Analiza otaczania danych Pracuje. Zostało to omówione w poprzednim artykule, więc upewnij się, że przeczytałeś samouczek, zanim przejdziesz do jakichkolwiek zmian. Ponadto, aby korzystać z kodu JAVA musisz mieć zainstalowaną w swoim systemie bibliotekę lp_solve (patrz wyżej).

Jeśli korzystasz z realizacji w ciekawym projekcie Napisz do nas i przedstawimy Twój projekt na naszym blogu. Również jeśli artykuł Ci się spodobał, poświęć chwilę i udostępnij go na Twitterze lub Facebooku.

Znak czasu:

Więcej z Skrzynka odniesienia