GROUPエンジニアブログです。システムソリューショングループの大竹(@tokosa)です。ECナビではDWHのNetezzaを使用し、データマートを構築しております。Netezzaに関しては、日本ネティーザのサイトをご覧下さい。実際Netezzaの性能がどの位なのか?何が出来るのかをご紹介します。Netezzaを使用して2つの集合の類似度を計る2つの集合の類似度を計る方法としてTanimoto係数(Jaccard係数の拡張)があります。Nc:共通集合Tbは0~1の間で0に近ければ類似度が低く1に近づく程類似度が高くなります。実際にDBで集計を行います。集計対象数(アイテム数):1000テンポラリーテーブルは作成せず、自己結合でSQLを実行させます。item_id4.1~3の結果をTanimoto係数の公式へ。単純に計算量はO(n^2)です。アイテム数が1000位なら一瞬です。0m0.031sアイテム数が10000超えると。先に集計しておくと良いでしょう。Netzzaは自己結合も弱いのでこちらは別にするべきです。今回はNetezzaの性能計る為、こんなSQLを書いています。Netezzaにもstddev(標準偏差)、stddev_pop(母標準偏差)、variance(式の分散)、var_pop(母分散)などなど解析関数が用意されています。協調フィルタリングの相関係数法もできますね。