Измерение популярности страниц в социальных сетях с помощью DEA в JAVA PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Измерение популярности в социальных сетях страниц с DEA в JAVA

В предыдущей статье мы обсудили Анализ охвата данных техника, и мы увидели, как ее можно использовать в качестве эффективного непараметрического алгоритма ранжирования. В этом посте мы расскажем о реализации анализа охвата данных в JAVA и будем использовать его для оценки популярности социальных сетей в Интернете и статей в Интернете. Код с открытым исходным кодом (под лицензией GPL v3), и вы можете скачать его бесплатно с Github.

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

Реализация анализа данных в 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. Он реализует общедоступный метод под названием valuEfficiency (), который берет карту записей и возвращает их оценки DEA.

3. Объект DeaRecord

DeaRecord - это специальный объект, в котором хранятся данные нашей записи. Поскольку DEA требует разделения ввода и вывода, объект DeaRecord хранит наши данные отдельно так, чтобы DEA мог с ними справиться.

4. Класс SocialMediaPopularity

SocialMediaPopularity - это приложение, которое использует DEA для оценки популярности страницы в социальных сетях на основе лайков в Facebook, Google + 1s и твитов. Он реализует два защищенных метода вознаграждаемому (метод расчета) и оценку (), а также два открытых метода loadFile () и getPopularity ().

Функция CalculatePopularity () использует реализацию DEA для оценки оценок страниц на основе их количества в социальных сетях. Метод valuPercentiles () получает оценки DEA и преобразует их в процентили. В целом, процентили легче объяснить, чем оценки DEA; таким образом, когда мы говорим, что рейтинг популярности страницы составляет 70%, это означает, что конкретная страница более популярна, чем 70% страниц.

Чтобы оценить популярность конкретной страницы, у нас должен быть набор данных с количеством социальных сетей на других страницах. Это имеет смысл, поскольку для того, чтобы предсказать, какая страница популярна, а какая нет, вы должны иметь возможность сравнить ее с другими страницами в Интернете. Для этого мы используем небольшой анонимный образец из индекса Web SEO Analytics, представленного в формате txt. Вы можете создать свою собственную базу данных, извлекая количество социальных сетей из большего количества страниц в Интернете.

Метод loadFile () используется для загрузки вышеупомянутой статистики в DEA, а метод getPopularity () - это простой в использовании метод, который получает лайки Facebook, Google + 1 и количество твитов страницы и оценивает ее популярность в социальных сетях. ,

Использование реализации JAVA для анализа данных

В классе DataEnvelopmentAnalysisExample я приведу 2 разных примера использования кода.

В первом примере непосредственно используется метод DEA для оценки эффективности организационных единиц на основе их выходных данных (ISSUES, RECEIPTS, REQS) и входных данных (STOCK, WAGES). Этот пример был взят из статьи 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 Likes, Google + 1s и Tweets. Все показатели в социальных сетях помечены как выходные, и мы передаем в 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 Likes, Google + 1 и количество твитов, чтобы оценить популярность статьи. Тем не менее, показатели из других социальных сетей могут быть легко приняты во внимание. Все, что вам нужно сделать, - это создать базу данных с количеством социальных сетей из интересующих вас сетей и расширить класс SocialMediaPopularity для соответствующей обработки.

Заключительные комментарии по реализации

Чтобы иметь возможность расширить реализацию, вы должны хорошо понимать, как Анализ охвата данных работает. Это описано в предыдущей статье, поэтому обязательно ознакомьтесь с руководством, прежде чем приступать к каким-либо изменениям. Более того, чтобы использовать код JAVA, вы должны установить в своей системе библиотеку lp_solve (см. Выше).

Если вы используете реализацию в интересном проекте напишите нам и мы представим ваш проект в нашем блоге. Также, если вам понравилась статья, пожалуйста, найдите время и поделитесь ею в Twitter или Facebook.

Отметка времени:

Больше от Датумбокс