Enviar pesquisa
Carregar
PP JoinならびにPP Join+の検証
•
Transferir como DOC, PDF
•
1 gostou
•
2,571 visualizações
moai kids
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 12
Baixar agora
Recomendados
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
Yahoo!デベロッパーネットワーク
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
WebGLによる3Dアプリケーションに関するレポート
WebGLによる3Dアプリケーションに関するレポート
Kaoru Furuya
MP Joinを使った類似データ抽出
MP Joinを使った類似データ抽出
JAVA DM
中国最新ニュースアプリ事情
中国最新ニュースアプリ事情
moai kids
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
moai kids
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Programming Hive Reading #4
Programming Hive Reading #4
moai kids
Recomendados
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
第16回Lucene/Solr勉強会 – ランキングチューニングと定量評価 #SolrJP
Yahoo!デベロッパーネットワーク
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
WebGLによる3Dアプリケーションに関するレポート
WebGLによる3Dアプリケーションに関するレポート
Kaoru Furuya
MP Joinを使った類似データ抽出
MP Joinを使った類似データ抽出
JAVA DM
中国最新ニュースアプリ事情
中国最新ニュースアプリ事情
moai kids
FluentdとRedshiftの素敵な関係
FluentdとRedshiftの素敵な関係
moai kids
Twitterのsnowflakeについて
Twitterのsnowflakeについて
moai kids
Programming Hive Reading #4
Programming Hive Reading #4
moai kids
Programming Hive Reading #3
Programming Hive Reading #3
moai kids
"Programming Hive" Reading #1
"Programming Hive" Reading #1
moai kids
Casual Compression on MongoDB
Casual Compression on MongoDB
moai kids
Introduction to MongoDB
Introduction to MongoDB
moai kids
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきました
moai kids
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)
moai kids
snappyについて
snappyについて
moai kids
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)
moai kids
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)
moai kids
Pythonで自然言語処理
Pythonで自然言語処理
moai kids
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
moai kids
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)
moai kids
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
moai kids
中国と私(仮題)
中国と私(仮題)
moai kids
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料
moai kids
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法について
moai kids
Analysis of ‘lang-8’
Analysis of ‘lang-8’
moai kids
Androidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能について
moai kids
Amebaサーチ使用傾向
Amebaサーチ使用傾向
moai kids
Amebaサーチのデータを用いた応用
Amebaサーチのデータを用いた応用
moai kids
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Mais conteúdo relacionado
Mais de moai kids
Programming Hive Reading #3
Programming Hive Reading #3
moai kids
"Programming Hive" Reading #1
"Programming Hive" Reading #1
moai kids
Casual Compression on MongoDB
Casual Compression on MongoDB
moai kids
Introduction to MongoDB
Introduction to MongoDB
moai kids
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきました
moai kids
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)
moai kids
snappyについて
snappyについて
moai kids
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)
moai kids
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)
moai kids
Pythonで自然言語処理
Pythonで自然言語処理
moai kids
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
moai kids
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)
moai kids
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
moai kids
中国と私(仮題)
中国と私(仮題)
moai kids
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料
moai kids
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法について
moai kids
Analysis of ‘lang-8’
Analysis of ‘lang-8’
moai kids
Androidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能について
moai kids
Amebaサーチ使用傾向
Amebaサーチ使用傾向
moai kids
Amebaサーチのデータを用いた応用
Amebaサーチのデータを用いた応用
moai kids
Mais de moai kids
(20)
Programming Hive Reading #3
Programming Hive Reading #3
"Programming Hive" Reading #1
"Programming Hive" Reading #1
Casual Compression on MongoDB
Casual Compression on MongoDB
Introduction to MongoDB
Introduction to MongoDB
Hadoop Conference Japan 2011 Fallに行ってきました
Hadoop Conference Japan 2011 Fallに行ってきました
HBase本輪読会資料(11章)
HBase本輪読会資料(11章)
snappyについて
snappyについて
第四回月次セミナー(公開版)
第四回月次セミナー(公開版)
第三回月次セミナー(公開版)
第三回月次セミナー(公開版)
Pythonで自然言語処理
Pythonで自然言語処理
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
HandlerSocket plugin Client for Javaとそれを用いたベンチマーク
Yammer試用レポート(公開版)
Yammer試用レポート(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
掲示板時間軸コーパスを用いたワードトレンド解析(公開版)
中国と私(仮題)
中国と私(仮題)
不自然言語処理コンテストLT資料
不自然言語処理コンテストLT資料
n-gramコーパスを用いた類義語自動獲得手法について
n-gramコーパスを用いた類義語自動獲得手法について
Analysis of ‘lang-8’
Analysis of ‘lang-8’
Androidの音声認識とテキスト読み上げ機能について
Androidの音声認識とテキスト読み上げ機能について
Amebaサーチ使用傾向
Amebaサーチ使用傾向
Amebaサーチのデータを用いた応用
Amebaサーチのデータを用いた応用
Último
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Último
(9)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
PP JoinならびにPP Join+の検証
1.
研究課題:PPJoin ならびに PPJoin+の検証
1
2.
1
はじめに 日々データが蓄積されていく CGM サービスにおいて、大量のデータの中から類似するデ ータを抽出することはデータマイニングの観点で大事であるが、計算量が多く処理に時間 がかかるのが一般的で、大変な処理である。 前回、大量データ中の類似データを効率的に抽出するアルゴリズムとして「Similarity Join」「Prefix Filter」をテーマにレポートを作成したが、今回はその続編として、Prefix Filter アルゴリズムの発展系である「PPJoin」ならびに「PPJoin+」について調査を行っ た。 2 Similarity Join について Similarity Join 自体は広い概念で、「あるデータ群の中で類似しているデータを抽出する 」 というアルゴリズム全般を包括する言葉となっている。 [1] 上記のように、データ群中にお類似しているデータが存在した場合、似ているもの同士の ペアの結合(join)を行い、データを出力する、というアプローチである。 Similarity Join 全 般 に つ い て ま と め ら れ て い る 資 料 「 Similarity Join Algorithms:An Introduction」[2]を参照すると、Similarity Join には大別して以下の三通りのアプローチ が存在すると紹介されている。(p.27) Partition-based Filtering-based Index-based 今回はこの中で、Filtering ベースのアプローチのひとつである「Prefix Filter」について 述べる。 3 Prefix Filter について Prefix Filter は、データの比較を行う際に先ずデータの先頭方面の値同士で比較を行い、 類似有無のふるい分けを行うアルゴリズムである。 3.1 Prefix Filter アルゴリズムの種類 Prefix Filter の手法については、数多くの論文が発表されている。 SSJoin[3] Formalize the prefix-filtering principle and use it in a symmetric way Access original record for verification (対称な方法でPrefix Filter を使用し類似検索を行う。オリジナルな データにアクセスして類似有無の確認を行う) All-Pairs[4] Use prefix-filtering in an asymmetric way (非対称な方法で Prefix Filter を使用して類似検索を行う) PPJoin(PPJoin+)[5] 2
3.
Employs prefix-filtering, position filtering and suffix filtering (Prefix Filter 以外にPosition Filter, Suffix Filter を使用して類似検 索を行う) 3.2 今回採用したアルゴリズム 今 回 は Chuan Xiao 氏 が 2008 年 に 発 表 し た 論 文 「 Efficient Similarity Joins for Near Duplicate Detection 」[5]に掲載されている、PPJoin アルゴリズム、ならびに PPJoin+アルゴリズムのアプローチを参考に実装を行った。 3.2.1 Prefix Filter の基本的な考え方 PPJoin は Prefix Filter アルゴリズムの一種である。 Prefix Filter は数式で表すと、以下のような式で表現できる。 prefix( x) ∩ prefix ( y ) ≠ φ のとき sim( x, y ) > t であれば類似 x,y は任意のデータ群、 φ は空配列、t は任意の閾値(1 >= t >= 0)。 prefix(x)は先頭 N バイト/N 文字のデータ、sim(x,y)は何かしらの類似度もしく は距離を算出するためのアルゴリズム、という意味になる。 先頭のデータ同士を比較しなにかしら一致する場合(空配列で無い場合)、類似度を算出 し閾値以上であれば類似データとみなす、という流れになる。 3.2.2 PPJoin のアルゴリズム 先頭データの一致度・類似度を算出する手法として、他手法ではジャッカード係数やコサ イン距離、Overlap 係数などの数値を用いるケースがあるが、PPJoin では「2つのデータ 群を先頭から見たときにそれぞれに出現する同一データの出現位置」により一致度を判定 する。 な お 、 PPJoin の 「 PP 」 は 、 「 Positional filtering with the Prefix filtering-based algorithm.」の略とされている。 prefix( x) ∩ prefix ( y ) ≠ φ の判定の際に、データの先頭部分を抜粋(Prefix Filtering)し た上で、共通データの出現位置(Positional Filtering)により一致度を判定する、という 流れである。 [6] 具体的な数式・アルゴリズムとして、PPJoin の論文中に記載されている擬似コードを引 用する。 3
4.
5行目の p
← |x| − (t * |x|) + 1; において、データ群の先頭から読み取るデータの範囲を計算している。 t は類似度の閾値(threshold)、x はデータ群、|x|はデータ長となる。 たとえば 10 文字のデータ郡x「ABCDEFGHIJ」において閾値が 0.8 の場合 p = 10 - (0.8 * 10) +1 = 3 となり、先頭3データを抜粋して評価対象とする、という形である。 Positional Filtering の閾値として、9行目で α ← (t / ( 1 + t ) ) * (|x| + |y|); のように値 α を計算している。 2データを先頭から走査した結果同一データが出現した際に、同一データの出現場所(i,j) を元に以下の式で ubound(upper bound:上限)の値を求め、値 α との比較を行う。 ubound ← 1 + min(|x| - i , |y| - j); データ群 x「ABCDEFGHIJ」、データ群 y「BCDFGHIJ」、閾値 0.8 の場合は以下のよ うになる。 α = (0.8 / ( 1 + 0.8 ) ) * (10 + 8) = 8 ubound = 1 + min(10 – 1 , 8 – 0) = 9 4
5.
α は、2データ間で閾値を満たす類似度の下限、ubound は同一データ出現位置から計算さ れる類似度値の上限を意味している。α
より ubound の値が小さい場合は、2データは類 似データとみなされない。 擬似コードの中では、α 値より ubound 値の方が大きい場合、配列 A[y]に数値を加算する ロジックになっている。A[y]について値が 0 のものは Verify の対象とならないため、結果 として α 値の方が ubound 値よりも大きい場合、そのデータについては類似データとして 扱われないことになる。 各データ群の評価終了後、Verify 関数により類似度を算出し、類似データの抽出を実施す る。 Verify 関数内の処理については、論文中の擬似コードを引用する。 Verify 内では基本的に、データ群 x とデータ群 y の Overlap 係数を算出し、類似度が α 値 より高い場合に類似データと判定している。 Overlap 係数は以下のように定義される。 O(x, y) = x ∩ y 3.2.3 PPJoin+のアルゴリズム PPJoin はデータの先頭部分のみを評価するアルゴリズムであったが、PPJoin+では先頭部 分に加えて、データ後方から再帰的にポジションを移動しデータのふるい分けを行うアル ゴリズムとなっている。 論文から擬似コードを引用する。 5
6.
こちらのアルゴリズムを、先の「Algorithm 1」の12行目(A[y] ←
A[y] + 1)と置き換 える。 Hmax はデータ x,y のそれぞれデータ長と、同一データの出現位置(i,j)、類似度の閾値 t の 値より推測される、データ群間のハミング距離の最大値である。 Hmax と、SuffixFilter により算出した実際のハミング距離を比較し、Hmax よりもハミ ング距離の値が小さい(距離が近い)場合に類似データの候補として扱う、という流れの 処理となっている。 Suffix Filter のアルゴリズムは以下のようになっている。 6
7.
まず、データ y の中間位置
mid を求め、中間位置に存在するデータ w を取得する。 その上で、5~6行目にて、データ x 中の w の場所を走査し、その場所を基点に前後でデ ータを分割する。 イメージとしては以下引用する図のような形となる。 [6] 分割したデータを用いてハミング距離を算出し、先ほど算出した Hmax の値と比較する。 Hmax よりも値が小さい(距離が近い)場合は、分割したデータを基に SuffixFilter 処理を再 帰的に実施する。 再帰は任意で定めた最大回数(MAXDEPTH)まで繰り返す。 [6] このような形で、再帰的にデータを分割し、それぞれのハミング距離の計算を繰り返し行 っていくことでデータのふるい分けを行う手法が PPJoin+となる。 直感的に、データの先頭のみでふるい分けを実施するのに比べ、複数のデータ位置を基点 にふるい訳を複数回実施する方が不要な候補データの削除を効率的に行えるため、処理速 度としても有利になることが感じられる。 次項では、SSJoin、PPJoin、PPJoin+それぞれでどの程度のパフォーマンスの差が出るか、 実際に測定してみた。 4 性能測定 上述の PPJoin、PPjoin+、ならびに以前作成した研究レポート「Prefix Filter の検証」[7] にて紹介した SSJoin アルゴリズムを用いて、性能測定を行った。 ※ただし、SSJoin については筆者独自の解釈で拡張している箇所があるため、元論文記載 の内容と結果が異なる可能性があることをご了承いただきたい。 なお、検証用のプログラムは、論文を参考に Java 言語にてそれぞれ自作した。 4.1 条件 以下の条件で性能測定を実施した。 7
8.
デ ー タ 件 数 文字列長がまちまちで、データ群中に類似文章が含まれる文章データ群。 A:約 500 件(482 件) B:約1,000 件(940 件) C:約 2,000 件(1894 件) アルゴリズム A:SSJoin B:PPJoin C:PPJoin+ SuffixFilter の再帰回数上限(MAXDEPTH)は「3」で設定 データの扱い 文 字 列 デ ー タ を 2-gram 単 位 で 分 割 し 、 ト ー ク ン と し た 。 (ex. あいうえお → あい,いう,うえ,えお) 類似度の閾値 0.9 0.8 0.7 0.6 データの取得方法 HDD 上にあるファイルより読み取り、いったんすべての文章をメモリ上に格 納した上で計算を行った 検証マシンのスペック Macbook Air CPU:1.6GHz Core 2 Duo Memory:2GB 4.2 結果 以下のような結果となった。 処理時間については、同一条件で5回試行し、その平均値を取った。 ○データ件数:500 件 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 処理時間 抽出件数 処理時間 抽出件数 処理時間 抽出件数 処理時間 抽出件数 (ms) (ms) (ms) (ms) A:SSJoin 3075.8 10 2916.6 21 2925.2 27 2903.8 28 B:PPJoin 303.6 11 863.4 21 2927.8 29 6258.8 29 C:PPJoin+ 70 11 110.4 20 227 27 481.6 27 8
9.
閾値: 6
0. 閾値: 7 0. C : P Joi P n+ B : P Joi P n 閾値: 8 0. A:SSJoi n 閾値: 9 0. 0 2000 4000 6000 8000 10000 12000 14000 16000 ○データ件数:1,000 件 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 処理時間 抽出件数 処理時間 抽出件数 処理時間 抽出件数 処理時間 抽出件数 (ms) (ms) (ms) (ms) A:SSJoin 5654.6 5 5713.8 7 6241.2 12 7162.8 15 B:PPJoin 537.4 8 1917.8 14 5647.4 18 14075 18 C:PPJoin+ 100.3 6 182.8 9 375.4 12 941.8 12 閾値: 6 0. 閾値: 7 0. C : P Joi P n+ B : P Joi P n 閾値: 8 0. A:SSJoi n 閾値: 9 0. 0 2000 4000 6000 8000 10000 12000 14000 16000 ○データ件数:2,000 件 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 処理時間 抽出件数 処理時間 抽出件数 処理時間 抽出件数 処理時間 抽出件数 (ms) (ms) (ms) (ms) A:SSJoin 26888 4 27759.5 12 27534 65 28583.5 78 B:PPJoin 9258.6 6 19448.2 11 44745.4 73 125722 93 C:PPJoin+ 454.8 6 793.6 10 2176.6 51 5142.4 67 9
10.
閾値: 6
0. 閾値: 7 0. C : P Joi P n+ B : P Joi P n 閾値: 8 0. A:SSJoi n 閾値: 9 0. 0 2000 4000 6000 8000 10000 12000 14000 16000 4.3 考察 4.3.1 処理速度 処理速度の面では、PPJoin+の優秀さが際立っている。 Prefix Filter によるふるい分けだけでなく、Suffix Filtering を再帰的に実施することで Overlap 係数による全文比較を行う回数を減らす事に成功していることが、速度の向上の 貢献している。 また、閾値を下げることによって、PPJoin ならびに PPJoin+の処理速度が線形に劣化し ていることが見て取れる。PPJoin は多くの場合で SSJoin より処理速度が優秀だが、今回 使用したデータセットでは閾値が 0.6 になった段階で SSJoin よりも処理速度が劣化してい る。 それぞれの閾値においての、PPJoin の Overlap 係数による比較回数を以下に記載する。 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 PPJoin:500 242 723 1859 4275 PPJoin:1000 547 1706 4504 10568 PPJoin:2000 4566 13229 33875 73620 閾値を下げることにより Overlap 係数による比較回数が増加することが、処理速度の劣化 に直結している様が見てとれる。 同様に、PPJoin+の Overlap 係数による比較回数を以下に記載する。 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 PPJoin+:500 25 26 27 27 PPJoin+:1000 11 12 12 12 PPJoin+:2000 32 50 64 67 ふるい分けが有効に作用し、Overlap 係数による比較回数を PPJoin に比べて大幅に削減 することに成功している。 4.3.2 抽出件数 類似データの抽出件数は、概ね PPJoin > SSJoin > PPJoin+ の順番で多くなっていることが見てとれる。 10
11.
件数が少ないほど、ふるい分けの際に取りこぼしているデータが多いと思われるが、その 分速度の向上に繋がっている要素もあるため、アルゴリズムの選択は用途に応じて判断を するのが良いと思われる。 なお、PPJoin+については、SuffixFilter の再帰回数の設定値変更により、速度/抽出件 数のチューニングが可能である。 次項では、PPJoin+の再帰回数のチューニングにより、結果がどのように変化をするか、 見ていきたいと思う。 5
チューニング PPJoin+の SuffixFilter の再帰回数を調節することで、どのような結果が出るか測定を行 った。 5.1 条件 以下の条件で性能測定を実施し、Overlap 係数の比較回数と類似データの抽出件数にどの ような変化があらわれたか確認をした。 なお、特記していない条件については、前項「4.性能測定」で実施した条件と同じ条件で 実施している。 アルゴリズム C:PPJoin+ SuffixFilter の再帰回数 1 ※アルゴリズム的に PPjoin と同等になる。 2 3 ※結果は「4.性能測定」の実施結果と同等 4 5.2 結果 以下のような結果となった。 ○データ件数:500 件 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 MAXDEPTH 比較回数 抽出件数 比較回数 抽出件数 比較回数 抽出件数 比較回数 抽出件数 1 242 11 723 21 1859 29 4275 29 2 30 11 35 21 50 29 97 29 3 25 11 35 21 50 29 97 29 4 17 10 22 19 22 22 22 22 ○データ件数:1000 件 閾値:0.9 閾値:0.8 閾値:0.7 閾値:0.6 MAXDEPTH 比較回数 抽出件数 比較回数 抽出件数 比較回数 抽出件数 比較回数 抽出件数 1 547 8 1706 14 4504 18 10568 18 2 18 7 33 10 82 12 190 13 3 11 6 12 9 12 12 12 12 4 4 4 4 4 4 4 4 4 ○データ件数:2000 件 11
12.
閾値:0.9
閾値:0.8 閾値:0.7 閾値:0.6 MAXDEPTH 比較回数 抽出件数 比較回数 抽出件数 比較回数 抽出件数 比較回数 抽出件数 1 4566 6 13299 11 33875 73 73620 93 2 75 6 220 10 572 73 1457 91 3 32 6 50 10 64 51 67 67 4 4 4 4 4 13 12 13 13 5.3 考察 SuffixFilter の再帰回数を増やせば増やすほど、比較回数が減り速度が向上することが分 かった。ただし、極端に回数を増やすとデータセットによっては抽出精度が大幅に下がる ため、適切な値を調整して設定する必要がある。 今回使用したデータセットでは、再帰回数は2~3が適正値と判断できる。 6 考察とまとめ 大規模データ群の類似検索において、処理速度面での PPJoin+のアルゴリズムの優秀さが 確認できた。 また、SuffixFilter の再帰回数の調節により、抽出件数/処理時間の調節が行えることが 確認できた。再帰回数は、今回使用したデータセットでは2~3が適切な値であると確認 できた。 現在、筆者の関わっているシステムにて SSJoin のアプローチによる大規模データの類似 検索を実施しているが、SSJoin に比べて処理速度面の優秀さが際立っているため、段階的 に PPJoin+アルゴリズムに置き換えていこうと考えている。 今後は、類似手法のさらなるキャッチアップを行っていきたい。 また、今回については文章の比較でのみ確認を行っているが、画像データなど他データ形 式での確認も引き続き行っていきたい。 今回検証に使用した Java のプログラムコード、テストコード、ならびにデータセット群 は、参考資料として提示する。 7 参考文献・URL [1] http://d.hatena.ne.jp/blanc_et_noir/20081013/1223830866 より画像引用 [2] http://www.cse.unsw.edu.au/~weiw/project/tutorial-simjoin-SEBD08.pdf [3] Surajit Chaudhuri 「A Primitive Operator for Similarity Joins in Data Cleaning」 (2006) http://research.microsoft.com/users/skaushi/ssjoin.pdf [4] Roberto J. Bayardo 「Scaling Up All Pairs Similarity Search」(2007) http://www.bayardo.org/ps/www2007.pdf [5] Chuan Xiao「Efficient Similarity Joins for Near Duplicate Detection」(2008) http://www2008.org/papers/pdf/p131-xiaoA.pdf [6] http://www.cse.unsw.edu/~weiw/project/PPJoin-UTS-Oct-2008.pdf より画像引用 [7] 「Prefix Filter の検証」 http://www.slideshare.net/moaikids/prefix-filter-1126120 12
Baixar agora