- 3 marca 2014 r.
- Wasilis Wryniotis
- . Bez komentarza
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.
- AI
- ai sztuka
- generator sztuki ai
- masz robota
- sztuczna inteligencja
- certyfikacja sztucznej inteligencji
- robot sztucznej inteligencji
- roboty sztucznej inteligencji
- oprogramowanie sztucznej inteligencji
- blockchain
- konferencja blockchain ai
- pomysłowość
- sztuczna inteligencja konwersacyjna
- konferencja kryptograficzna
- Dall's
- Skrzynka odniesienia
- głęboka nauka
- google to
- uczenie maszynowe
- Uczenie maszynowe i statystyki
- Online Marketing
- plato
- Platon Ai
- Analiza danych Platona
- Gra Platona
- PlatoDane
- platogaming
- Programowanie
- skala ai
- składnia
- zefirnet