JAVA PlatoBlockchain Data Intelligence에서 DEA를 사용하여 페이지의 소셜 미디어 인기도를 측정합니다. 수직 검색. 일체 포함.

JAVA에서 DEA를 사용하여 페이지의 소셜 미디어 인기도 측정

이전 기사에서 우리는 데이터 엔벨로프 분석 이 기법을 사용하여 효과적인 비모수 적 순위 알고리즘으로 사용하는 방법을 살펴 보았습니다. 이 블로그 게시물에서는 JAVA에서 데이터 엔벨로프 분석 구현을 개발하고이를 사용하여 웹 페이지 및 기사의 소셜 미디어 인기도를 평가합니다. 코드는 오픈 소스이며 (GPL v3 라이센스에 따라) 무료로 다운로드 할 수 있습니다 깃허브.

업데이트 : Datumbox Machine Learning Framework는 이제 오픈 소스이며 무료로 제공됩니다. 다운로드. com.datumbox.framework.algorithms.dea 패키지를 확인하여 Java에서 Data Envelopment Analysis의 구현을 확인하십시오.

JAVA의 데이터 엔벨로프먼트 분석 구현

코드는 JAVA로 작성되었으며 다음에서 직접 다운로드 할 수 있습니다. 깃허브. GPLv3에 따라 라이센스가 부여되었으므로 자유롭게 사용하고 수정 한 후 자유롭게 재배포하십시오.

코드는 데이터 엔벨로프 분석 알고리즘은 lp_solve 라이브러리 선형 프로그래밍 문제를 해결하고 다음에서 추출 된 데이터를 사용합니다. 웹 SEO 분석 Facebook, Google Plus 및 Twitter에서의 공유를 기반으로 웹 페이지에 대한 복합 소셜 미디어 인기도 지표를 구성하기 위해 색인을 생성합니다. 알고리즘의 모든 이론적 부분은 이전 기사에서 다루었으며 소스 코드에서 구현과 관련된 자세한 javadoc 주석을 찾을 수 있습니다.

아래에서는 구현 아키텍처에 대한 높은 수준의 설명을 제공합니다.

1. lp_solve 5.5 라이브러리

다양한 선형 프로그래밍 문제를 해결하기 위해 lp_solve라는 오픈 소스 라이브러리를 사용합니다. 특정 lib는 ANSI C로 작성되었으며 JAVA 랩퍼를 사용하여 라이브러리 메소드를 호출합니다. 따라서 코드를 실행하기 전에 시스템에 lp_solve를 설치해야합니다. 라이브러리의 바이너리는 리눅스와 윈도우 설치에 대한 자세한 정보는 lp_solve 문서.

JAVA 코드를 실행하기 전에 시스템에 특정 라이브러리가 설치되어 있는지 확인하십시오. 라이브러리 설치 및 구성과 관련된 문제는 lp_solve 설명서를 참조하십시오.

2. DataEnvelopmentAnalysis 클래스

이것이 DEA 알고리즘 구현의 주요 클래스입니다. 레코드의 맵을 가져 와서 DEA 점수를 리턴하는 추정값 Efficiency ()라는 공개 메소드를 구현합니다.

3. DeaRecord 객체

DeaRecord는 레코드의 데이터를 저장하는 특수 객체입니다. DEA는 입력과 출력을 분리해야하기 때문에 DeaRecord 오브젝트는 DEA가 처리 할 수있는 방식으로 데이터를 별도로 저장합니다.

4. SocialMediaPopularity 클래스

SocialMediaPopularity는 DEA를 사용하여 Facebook 좋아요, Google +1 및 트윗을 기반으로 소셜 미디어 네트워크에서 페이지의 인기를 평가하는 응용 프로그램입니다. 두 개의 공개 메소드 인 loadFile () 및 getPopularity ()와 함께 두 개의 보호 된 메소드 인 calculatePopularity () 및 추정값 Percentiles ()을 구현합니다.

calculatePopularity ()는 DEA 구현을 사용하여 소셜 미디어 수에 따라 페이지의 점수를 추정합니다. forecastPercentiles () 메서드는 DEA 점수를 가져 와서 백분위 수로 변환합니다. 일반적으로 백분위 수는 DEA 점수보다 설명하기 쉽습니다. 따라서 페이지의 인기도 점수가 70 %라고 말하면 특정 페이지가 페이지의 70 %보다 인기가 있다는 의미입니다.

특정 페이지의 인기도를 추정하려면 다른 페이지의 소셜 미디어 수를 가진 데이터 세트가 있어야합니다. 인기있는 페이지와 그렇지 않은 페이지를 예측하려면 웹의 다른 페이지와 비교할 수 있어야하므로 이치에 맞습니다. 이를 위해, 우리는 txt 형식으로 제공되는 Web SEO Analytics 인덱스의 작은 익명 샘플을 사용합니다. 웹의 더 많은 페이지에서 소셜 미디어 수를 추출하여 자체 데이터베이스를 구축 할 수 있습니다.

loadFile () 메소드는 위에서 언급 한 DEA에 대한 통계를로드하는 데 사용되며 getPopularity () 메소드는 Facebook의 좋아요, Google +1 및 페이지의 트윗 수를 가져와 소셜 미디어에서의 인기도를 평가하는 사용하기 쉬운 메소드입니다. .

데이터 엔벨로프먼트 분석 JAVA 구현 사용

DataEnvelopmentAnalysisExample 클래스에서는 코드 사용 방법에 대한 두 가지 다른 예제를 제공합니다.

첫 번째 예는 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 좋아요, Google +1 및 트윗과 같은 소셜 미디어의 데이터를 사용하여 페이지의 인기를 평가합니다. 모든 소셜 미디어 수는 출력으로 표시되며 빈 입력 벡터를 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. 소셜 미디어 수 데이터베이스 확장

제공된 소셜 미디어 수 데이터베이스는 Web SEO Analytics 색인의 1111 개 샘플로 구성됩니다. 보다 정확한 인기도 점수를 추정하려면 더 큰 표본이 ​​필요합니다. 더 많은 웹 페이지에서 소셜 미디어 수를 추정하여 자신의 데이터베이스를 만들 수 있습니다.

3. 소셜 미디어 네트워크 추가

구현시 Facebook 좋아요, Google +1 및 트윗 수를 사용하여 기사의 인기도를 평가합니다. 그럼에도 불구하고 다른 소셜 미디어 네트워크의 메트릭을 쉽게 고려할 수 있습니다. 관심있는 네트워크의 소셜 미디어 수를 사용하여 데이터베이스를 구축하고 SocialMediaPopularity 클래스를 확장하여 그에 따라 처리하면됩니다.

구현에 대한 최종 의견

구현을 확장하려면 방법을 잘 이해해야합니다. 데이터 엔벨로프 분석 공장. 이 기사는 이전 기사에서 다뤘으므로 변경 사항을 진행하기 전에 학습서를 읽으십시오. 또한 JAVA 코드를 사용하려면 시스템에 lp_solve 라이브러리를 설치해야합니다 (위 참조).

흥미로운 프로젝트에서 구현을 사용하는 경우 우리에게 줄을 내리다 우리는 블로그에 프로젝트를 소개 할 것입니다. 또한 기사가 마음에 들면 잠시 시간을내어 Twitter 나 Facebook에서 공유하십시오.

타임 스탬프 :

더보기 데이텀 박스