Вимірювання популярності сторінок у соціальних мережах за допомогою DEA в JAVA PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Вимірювання популярності сторінок у соціальних мережах за допомогою DEA в JAVA

У попередній статті ми говорили про Аналіз охоплення даних і ми побачили, як його можна використовувати як ефективний непараметричний алгоритм ранжирування. У цій публікації блогу ми розробимо реалізацію аналізу охоплення даних у JAVA та використаємо її для оцінки популярності веб-сторінок і статей у соціальних мережах. Код є відкритим (під ліцензією GPL v3), і ви можете безкоштовно завантажити його з Github.

Оновлення: Система машинного навчання Datumbox тепер є відкритою та безкоштовною скачати. Перегляньте пакет com.datumbox.framework.algorithms.dea, щоб побачити реалізацію аналізу охоплення даних у Java.

Реалізація Data Envelopment Analysis в JAVA

Код написаний на JAVA і його можна завантажити безпосередньо Github. Він ліцензований під GPLv3, тому не соромтеся використовувати його, змінювати його та вільно поширювати.

Код реалізує Аналіз охоплення даних алгоритм, використовує бібліотека lp_solve для вирішення задач лінійного програмування та використовує витягнуті дані з Веб-аналітика SEO індекс, щоб побудувати зведений показник популярності соціальних медіа для веб-сторінок на основі їх часток у Facebook, Google Plus і Twitter. Усі теоретичні частини алгоритму розглянуто в попередній статті, а у вихідному коді ви можете знайти детальні коментарі javadoc щодо реалізації.

Нижче ми надаємо опис високого рівня архітектури реалізації:

1. Бібліотека lp_solve 5.5

Щоб розв’язувати різні задачі лінійного програмування, ми використовуємо бібліотеку з відкритим кодом під назвою lp_solve. Конкретна бібліотека написана мовою ANSI C і використовує оболонку JAVA для виклику методів бібліотеки. Таким чином, перед запуском коду ви повинні встановити lp_solve у вашій системі. Двійкові файли бібліотеки доступні як для Linux і Windows і ви можете прочитати більше інформації про встановлення на документація lp_solve.

Будь ласка, переконайтеся, що певна бібліотека встановлена ​​у вашій системі, перш ніж намагатися запустити код JAVA. Якщо у вас виникли проблеми зі встановленням і налаштуванням бібліотеки, зверніться до документації lp_solve.

2. Клас DataEnvelopmentAnalysis

Це основний клас реалізації алгоритму DEA. У ньому реалізовано загальнодоступний метод, який називається evaluationEfficiency(), який приймає карту записів і повертає їхні бали DEA.

3. Об'єкт DeaRecord

DeaRecord — це спеціальний об’єкт, який зберігає дані нашого запису. Оскільки DEA вимагає розділення вхідних і вихідних даних, об’єкт DeaRecord зберігає наші дані окремо таким чином, щоб DEA міг їх обробляти.

4. Клас популярності в соціальних мережах

SocialMediaPopularity — це програма, яка використовує DEA для оцінки популярності сторінки в соціальних мережах на основі її лайків Facebook, Google +1 і твітів. У ньому реалізовано два захищених методу – calculatePopularity() і evaluationPercentiles() разом із двома загальнодоступними методами – loadFile() і getPopularity().

CalculatePopularity() використовує реалізацію DEA для оцінки балів сторінок на основі їх кількості соціальних мереж. Метод evaluationPercentiles() отримує бали DEA та перетворює їх у процентилі. Загалом процентили легше пояснити, ніж оцінки DEA; таким чином, коли ми говоримо, що показник популярності сторінки становить 70%, це означає, що конкретна сторінка більш популярна, ніж 70% сторінок.

Щоб мати можливість оцінити популярність певної сторінки, ми повинні мати набір даних із підрахунками соціальних мереж інших сторінок. Це має сенс, оскільки для того, щоб передбачити, яка сторінка популярна, а яка ні, ви повинні мати можливість порівняти її з іншими сторінками в Інтернеті. Для цього ми використовуємо невеликий анонімний зразок індексу Web SEO Analytics, наданий у форматі txt. Ви можете створити власну базу даних, витягнувши дані про соціальні мережі з більшої кількості сторінок в Інтернеті.

Метод loadFile() використовується для завантаження вищезгаданої статистики щодо DEA, а метод getPopularity() – це простий у використанні метод, який отримує лайки у Facebook, Google +1 і кількість твітів сторінки та оцінює її популярність у соціальних мережах. .

Використання JAVA-реалізації Data Envelopment Analysis

У класі DataEnvelopmentAnalysisExample я надаю 2 різні приклади використання коду.

У першому прикладі безпосередньо використовується метод DEA для оцінки ефективності організаційних одиниць на основі їхнього результату (ПРОБЛЕМИ, НАДХОДЖЕННЯ, ПОТРЕБИ) та входу (ЗАПАСИ, ЗАРОБІТНА ПЛАТА). Цей приклад взято зі статті 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());

У другому прикладі використовується наша програма «Популярність соціальних мереж» для оцінки популярності сторінки за допомогою даних із соціальних мереж, таких як «Подобається» у Facebook, +1 у Google і твіти. Усі підрахунки соціальних мереж позначаються як вихідні, і ми передаємо DEA порожній вхідний вектор.

        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());

Необхідні розширення

Наданий код є лише прикладом того, як DEA можна використовувати як алгоритм ранжування. Ось кілька розширень, які необхідно зробити, щоб покращити реалізацію:

1. Прискорення впровадження

Конкретна реалізація DEA оцінює бали DEA для всіх записів у базі даних. Це сповільнює реалізацію, оскільки нам потрібно вирішити стільки задач лінійного програмування, скільки записів у базі даних. Якщо нам не потрібно обчислювати оцінку всіх записів, ми можемо значно пришвидшити виконання. Таким чином, невелике розширення алгоритму може дати нам кращий контроль над тим, які записи слід обробляти, а які слід використовувати лише як обмеження.

2. Розширення бази даних підрахунків у соціальних мережах

Надана база даних підрахунків соціальних медіа складається з 1111 зразків індексу Web SEO Analytics. Щоб отримати точнішу оцінку популярності, необхідна більша вибірка. Ви можете створити власну базу даних, оцінивши кількість соціальних медіа з більшої кількості сторінок Інтернету.

3. Додавання більше соціальних мереж

Реалізація використовує лайки Facebook, +1 Google і кількість твітів, щоб оцінити популярність статті. Тим не менш, показники з інших соціальних мереж можна легко взяти до уваги. Все, що вам потрібно зробити, це створити базу даних із підрахунками соціальних медіа з мереж, які вас цікавлять, і розширити клас SocialMediaPopularity, щоб обробляти їх відповідно.

Остаточні коментарі щодо впровадження

Щоб мати можливість розширити впровадження, ви повинні добре розуміти, як це зробити Аналіз охоплення даних працює. Це описано в попередній статті, тому, будь ласка, переконайтеся, що ви прочитали підручник, перш ніж переходити до будь-яких змін. Крім того, щоб використовувати код JAVA, ви повинні встановити у своїй системі бібліотеку lp_solve (див. вище).

Якщо ви використовуєте реалізацію в цікавому проекті киньте нам лінію і ми розмістимо ваш проект у нашому блозі. Крім того, якщо вам подобається стаття, знайдіть хвилинку та поділіться нею у Twitter або Facebook.

Часова мітка:

Більше від Датабокс