JAVA PlatoBlockchain Data Intelligence の DEA を使用してページのソーシャル メディア人気を測定します。垂直検索。あい。

JAVAでのDEAを使用したページのソーシャルメディアの人気度の測定

前回の記事では、 データ包絡分析 テクニックと、それが効果的なノンパラメトリックランキングアルゴリズムとしてどのように使用できるかを見てきました。 このブログ投稿では、JAVAでのデータ包絡分析の実装を開発し、それを使用してWebページやWeb上の記事のソーシャルメディアの人気度を評価します。 コードは(GPL v3ライセンスの下で)オープンソースであり、以下から無料でダウンロードできます。 githubの.

更新:Datumbox Machine Learning Frameworkがオープンソースになり、無料で ダウンロード。 パッケージcom.datumbox.framework.algorithms.deaをチェックして、Javaでのデータ包絡分析の実装を確認してください。

JAVAでのデータ包絡分析の実装

コードはJAVAで書かれており、以下から直接ダウンロードできます。 githubの。 GPLv3の下でライセンスされているので、自由に使用、変更、自由に再配布してください。

コードは データ包絡分析 アルゴリズム、 lp_solveライブラリ 線形計画問題を解決し、抽出されたデータを使用する Web SEO分析 Facebook、Google Plus、Twitterでのシェアに基づいてWebページの複合ソーシャルメディア人気メトリックを構築するためのインデックス。 アルゴリズムの理論的な部分はすべて前の記事で説明されており、ソースコードには実装に関する詳細なjavadocコメントがあります。

以下に、実装のアーキテクチャの概要を示します。

1. lp_solve 5.5ライブラリ

さまざまな線形計画問題を解決するために、lp_solveと呼ばれるオープンソースライブラリを使用します。 特定のlibはANSI Cで記述されており、JAVAラッパーを使用してライブラリメソッドを呼び出します。 したがって、コードを実行する前に、システムにlp_solveをインストールする必要があります。 ライブラリのバイナリは両方で利用できます LinuxおよびWindows とインストールに関する詳細情報を読むことができます lp_solveドキュメント.

JAVAコードを実行する前に、特定のライブラリがシステムにインストールされていることを確認してください。 ライブラリのインストールと構成に関する問題については、lp_solveのドキュメントを参照してください。

2. DataEnvelopmentAnalysisクラス

これは、DEAアルゴリズムの実装の主要なクラスです。 レコードのマップを取得し、DEAスコアを返す、estimateEfficiency()と呼ばれるパブリックメソッドを実装します。

3. DeaRecordオブジェクト

DeaRecordは、レコードのデータを格納する特別なオブジェクトです。 DEAは入力と出力を分離する必要があるため、DeaRecordオブジェクトは、DEAが処理できる方法でデータを個別に格納します。

4. SocialMediaPopularityクラス

SocialMediaPopularityは、DEAを使用して、Facebookのいいね!、Google +1、ツイートに基づいてソーシャルメディアネットワーク上のページの人気を評価するアプリケーションです。 これは、XNUMXつの保護されたメソッドであるcalculatePopularity()および見積りパーセンタイル()と、XNUMXつのパブリックメソッドであるloadFile()およびgetPopularity()を実装します。

calculatePopularity()は、DEA実装を使用して、ソーシャルメディアの数に基づいてページのスコアを推定します。 見積もりパーセンタイル()メソッドは、DEAスコアを取得し、それらをパーセンタイルに変換します。 一般に、パーセンタイルはDEAスコアよりも説明が簡単です。 したがって、ページの人気スコアが70%であると言う場合、それは特定のページがページの70%よりも人気があることを意味します。

特定のページの人気を推定できるようにするには、他のページのソーシャルメディア数を含むデータセットが必要です。 人気のあるページと人気のないページを予測するには、そのページをWeb上の他のページと比較できる必要があるため、これは理にかなっています。 そのために、txt形式で提供されるWeb SEO Analyticsインデックスからの小さな匿名化されたサンプルを使用します。 Web上のより多くのページからソーシャルメディア数を抽出することにより、独自のデータベースを構築できます。

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

1番目の例では、ソーシャルメディアの人気アプリケーションを使用して、Facebookのいいね、Google +XNUMX、ツイートなどのソーシャルメディアのデータを使用して、ページの人気を評価します。 すべてのソーシャルメディアカウントは出力としてマークされ、空の入力ベクトルを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サンプルで構成されています。 より正確な人気スコアを推定できるようにするには、より大きなサンプルが必要です。 Webのより多くのページからソーシャルメディア数を推定することにより、独自のデータベースを作成できます。

3.ソーシャルメディアネットワークの追加

この実装では、Facebookの「いいね」、Google +1、およびツイートの数を使用して、記事の人気を評価します。 それにもかかわらず、他のソーシャルメディアネットワークからの指標は簡単に考慮できます。 必要なのは、関心のあるネットワークからのソーシャルメディア数を使用してデータベースを構築し、SocialMediaPopularityクラスを展開してそれに応じて処理することだけです。

実装に関する最終コメント

実装を拡張できるようにするには、方法を十分に理解している必要があります データ包絡分析 動作します。 これについては前の記事で説明しています。変更に進む前に、必ずチュートリアルを読んでください。 さらに、JAVAコードを使用するには、システムにlp_solveライブラリ(上記を参照)をインストールしておく必要があります。

興味深いプロジェクトで実装を使用する場合 私たちのラインドロップ あなたのプロジェクトをブログで特集します。 また、この記事が気に入ったら、少し時間を取ってTwitterまたはFacebookで共有してください。

タイムスタンプ:

より多くの データムボックス