ブログ

ユニークなパターンを明らかにする: Elasticsearch における重要な用語の集約ガイド

重要な用語の集計を使用してデータから洞察を得る方法を学びます。

Elasticsearch では、重要な用語の集約により、最も一般的な用語を超えて、データセット内の統計的に異常な値を見つけます。これにより、貴重な洞察や明らかでないパターンを発見することができます。重要な用語の集約により、次の 2 つの便利なパラメータを含む応答が提供されます。

  • bg_count (背景カウント):親データセットで見つかったドキュメントの数

  • doc_count:結果データセットで見つかったドキュメントの数

たとえば、携帯電話の販売データセットでは、次のようにして iPhone 16 の販売に関する重要な用語を探すことができます。

GET phone_sales_analysis/_search
{
 "size": 0,
 "query": {
   "term": {
     "phone_model": {
       "value": "iPhone 16"
     }
   }
 },
 "aggs": {
   "significant_cities": {
     "significant_terms": {
       "field": "city_region",
       "size": 1
     }
   }
 }
}

すると、応答は次のようになります。

{
 "aggregations": {
   "significant_cities": {
     "doc_count": 122,
     "bg_count": 424,
     "buckets": [
       {
         "key": "Houston",
         "doc_count": 12,
         "score": 0.1946481360617346,
         "bg_count": 14
       }

     ]
   }
 }
}

ヒューストンは、データセット全体の都市のトップ 10 にも、iPhone 16 のトップ都市にも入っていません。しかし、重要な用語の集約により、この都市では他のデータと比較して iPhone 16 が不均衡に多く購入されていることが示されました。数字を詳しく見てみましょう:

  • 最上位レベル:

    • doc_count: 122 —クエリは合計122の文書と一致しました

    • bg_count: 424 —背景セット(すべての販売文書)には424の文書が含まれています

  • ヒューストンのバケット:

    • doc_count: 12 —ヒューストンは122件の検索結果のうち12件に出現します

    • bg_count: 14 —ヒューストンは、背景データセット内の合計424の文書のうち14に登場します。

これは、合計 424 件の購入のうち、ヒューストンで発生したのは 14 件のみであり、これは全購入の 3.3% であることを示しています。しかし、iPhone 16の販売だけに注目すると、122件中12件がヒューストンで発生しており、これは9.8%で、データセット全体の3倍にあたります。これは大きな数字です。

これを視覚的に表すと次のようになります: city_region ごとの総売上高。

ヒューストンには 14 件の売上があり、データセット内で売上高が 14 番目に多い都市であることがわかります。

ここで、フィルターを適用して iPhone 16 の販売のみを調べると、ヒューストンでの販売数が 12 件となり、この特定のモデルの販売数が最も多い都市として 2 番目に多い都市になります。

重要な用語の理解

Elasticのドキュメントによると、重要な用語の集約は次のとおりです。

「前景セットと背景セット間で測定された人気度に大きな変化があった用語を検索します。」

つまり、統計メトリックを使用して、データのサブセット (フォアグラウンド セット) 内の用語の頻度を、データの親セット (バックグラウンド セット) 内の同じ用語の頻度と比較します。この方法では、スコアリングはデータ内での用語の出現頻度ではなく、統計的有意性を反映します。

重要な用語の集約と通常の用語の集約の主な違いは次のとおりです。

  • 重要な用語はデータのサブセットを比較しますが、用語の集約はクエリの結果のデータセットに対してのみ機能します。

  • 用語の集約から得られる結果はデータセット内で最も一般的な用語ですが、重要な用語から得られる結果はデータセットを一意にする要素を見つけるために一般的な用語を無視します。

  • 用語の集約と同様に、メモリではなくディスクからデータを取得する必要があるため、重要な用語はパフォーマンスに大きな影響を与える可能性があります。

実践応用(消費者行動分析)

分析のためのデータの準備

この分析のために、価格、携帯電話の仕様、購入者の人口統計、フィードバックを含む合成携帯電話販売データセットを生成しました。また、後でセマンティッククエリを実行できるように、ユーザーのフィードバックから埋め込みを生成しました。Elasticsearch ですぐに使用できる多言語 e5 小型モデルを使用しました。

このデータセットを Elasticsearch で使用するには:

  1. Kibana の データファイルアップロード 機能を使用して、CSV ファイル ( ここ からダウンロード可能) をアップロードします。

  2. このブログで紹介されている「埋め込み」と呼ばれるセマンティックフィールドを設定します。 multilingual-e5-small model

  3. フィールド タイプのデフォルト ( purchase_dateuser_feedback)を除くすべてのフィールドのキーワード) を使用してインポートを終了します。ここで提示されたクエリをそのまま実行できるようにするには、インデックス名phone_sales_analysisを必ず追加してください。

この分析の主な焦点は、 「iPhone 16 の購入者と他の人口セグメントの違いは何か」を発見し、マーケティング目的で購入者をセグメント化することです。

これはデータセットからのサンプルドキュメントです。

{
         "customer_type": "Returning",
         "user_feedback": "I have to say, quality is great for the price. The battery life is really good.",
         "upgrade_frequency": "2 years",
         "storage_capacity": "256GB",
         "occupation": "Technology & Data",
         "color": "Phantom Black",
         "gender": "Male",
         "price_paid": 899,
         "previous_brand_loyalty": "Mixed",
         "location_type": "Urban",
         "phone_model": "Samsung Galaxy S24",
         "city_region": "San Francisco Bay Area",
         "@timestamp": "2024-03-15T00:00:00.000-05:00",
         "income_bracket": "75000-100000",
         "purchase_channel": "Online",
         "feedback_sentiment": "positive",
         "education_level": "Bachelor",
         "embedding": "I have to say, quality is great for the price. The battery life is really good.",
         "customer_id": "C001",
         "purchase_date": "2024-03-15",
         "age": 34,
         "trade_in_model": "iPhone 13"
}

人口動態パターンの理解

ここでは、一般人口を対象に分析を実行し、iPhone 16 ユーザーにとって重要な用語の集計から得られた興味深い結果と比較します。

通常のパターン

通常の購入パターンを理解するために、さまざまなフィールドにわたるすべてのドキュメントのデータを集計できます。簡単にするために、携帯電話を購入した人の職業に焦点を当てて調査します。Elasticsearch へのリクエストでこれを実行できます。

GET phone_sales_analysis/_search
{
 "aggs": {
   "occupation_distribution": {
     "terms": {
       "size": 5,
       "field": "occupation"
     }
   }
 },
 "size": 0
}

これにより、データセット内の主な職業(レコード数別)は次のようになります。

iPhone 16ユーザーのパターン

iPhone 16 を購入した人々の違いを理解するために、次のように、クエリ内の人々を見つけるためのフィルターを使用して、同じフィールドで用語の集計を実行してみましょう。

GET phone_sales_analysis/_search
{
  "query": {
    "term": {
      "phone_model": "iPhone 16"
    }
  },
  "aggs": {
    "occupation_distribution": {
      "terms": {
        "size": 5,
        "field": "occupation"
      }
    }
  },
  "size": 0
}

つまり、iPhone 16ユーザーの主な職業は次のようになります。

iPhone 16 ユーザーは、他の電話モデルのユーザーと比べて、使用パターンが異なっていることがわかります。Kibana を使用して結果を簡単に視覚化してみましょう。

このグラフでは、iPhone 16 の傾向が全体の傾向と異なることがわかります。

この分析全体をスキップして、1つの重要な用語の集計を実行することで、iPhone 16ユーザーが一般ユーザーと何が違うのかを確認できます。

GET phone_sales_analysis/_search
{
  "query": {
    "term": {
      "phone_model": "iPhone 16"
    }
  },
  "aggs": {
    "occupation_distribution": {
      "significant_terms": {
        "size": 5,
        "field": "occupation"
      }
    }
  },
  "size": 0
}

つまり、次のような応答が得られます。

iPhone 16の職業の価値

ドキュメント数

bg_count

職業分布(最上位レベル)

122

424

医療・ヘルスケア分野

45

57

この回答は、iPhone 16 ユーザーが珍しい (つまり重大な) 状況にあることを明確に示しています。一般人口と比較した医療・ヘルスケア分野に従事する人の数。応答内の数字が何を意味するか見てみましょう。

  • 最上位レベル:

    • doc_count: 122 —クエリは合計122の文書と一致しました

    • bg_count: 424 —背景セット(すべての販売文書)には424の文書が含まれています

  • 医療・ヘルスケア分野:

    • doc_count: 45 — 122件の検索結果のうち45件に「医療とヘルスケア」が出現

    • bg_count: 57 —背景データセット内の合計424の文書のうち57に「医療とヘルスケア」が出現します

424 人の購入者のうち 57 人が医療・ヘルスケア分野で働いており、割合は 13.44% です。しかし、iPhone 16の購入者を見てみると、122人中45人が医療・ヘルスケア分野で働いており、その割合は36.88%です。つまり、iPhone 16 ユーザーの中に医療・ヘルスケアの分野で働く人がいる可能性が 2 倍になるということです。

同じ分析を他のフィールド(年齢、場所、収入層など)に適用すると、iPhone 16 ユーザーの独自性に関する詳細な情報を見つけることができます。

消費者セグメンテーション

重要な用語の集約を使用して、製品、カテゴリ、顧客セグメント間の関係性の洞察を抽出できます。このため、調査したいカテゴリの親集計を構築します。また、重要な用語と通常の用語のサブ集計を使用して、そのカテゴリに関する興味深い洞察を見つけ、その職業のほとんどの人が使用する用語と比較します。

たとえば、いくつかの職種の人々が何を好むかを見てみましょう。

  1. 分析をより明確にするために、検索を3つの職種に限定してみましょう: [「管理・サポート」、「テクノロジー・データ」、「医療・ヘルスケア」]

  2. 集計側では、職業別の用語集計から始めます。

  3. サブ集計を1つ追加します: 電話モデル別の用語 - 各分野のユーザーがどのモデルを購入しているかを調べます

  4. 2番目のサブ集計を追加します: 電話モデル別の重要な用語 - 各作業分野でどのモデルが特別であるかを見つけます

GET phone_sales_analysis/_search
{
 "query": {
   "terms": {
     "occupation": [
       "Administrative & Support",
       "Technology & Data",
       "Medical & Healthcare"
     ]
   }
 },
 "aggs": {
   "occupations": {
     "terms": {
       "size": 15,
       "field": "occupation"
     },
     "aggs": {
       "general_models": {
         "terms": {
           "field": "phone_model"
         }
       },
       "significant_models": {
         "significant_terms": {
           "field": "phone_model"
         }
       }
     }
   }
 },
 "size": 0
}

集計結果を詳しく見てみましょう。

職業:管理・サポート

用語の集約

重要な用語の集約

この表から、この職業の傾向と人口全体の傾向の間には大きな違いがないことが推測できます。

職業:テクノロジー&データ

用語の集約

重要な用語の集約

合計文書数: 424

この職業に関する文書: 71

携帯電話のモデル

ドキュメント数 (この職業のこのモデル)

bg_count (すべての文書でこのモデルを使用)

すべての文書の%

この職業における%

グーグルピクセル8

12

22

5.19%

16.90%

ワンプラス11

9

14

3.30%

12.68%

ワンプラス 12 プロ

3

3

0.71%

4.23%

Google Pixel 8 Pro

9

21

4.95%

12.68%

何もない電話2

5

8

1.89%

7.04%

サムスン ギャラクシー Z フォールド5

4

6

1.42%

5.63%

ワンプラス12

8

20

4.72%

11.27%

職業:医療・ヘルスケア

用語の集約

重要な用語の集約

合計文書数: 424

この職業に関する文書: 57

携帯電話のモデル

ドキュメント数 (この職業のこのモデル)

bg_count (すべての文書でこのモデルを使用)

すべての文書の%

この職業における%

iPhone 16

45

122

28.77%

78.95%

iPhone 15 Pro Max

3

13

3.07%

5.26%

iPhone 15

7

40

9.43%

12.28%

このデータが何を伝えているのか見てみましょう。

  • 医療およびヘルスケアの専門家は iPhone 16 を好み、一般的に Apple の携帯電話を使用する傾向が非常に強いです。

  • テクノロジーおよびデータの専門家はハイエンドの Android スマートフォンを好みますが、必ずしも Samsung ブランドを使用するわけではありません。このカテゴリーでは、iPhone にもかなりのトレンドが見られます。

  • 管理およびサポート担当者は Samsung や Google の携帯電話を好みますが、明確な独自の傾向はありません。

重要語の集約とハイブリッド検索

ハイブリッド検索は、テキスト検索とセマンティック結果を組み合わせて、検索エクスペリエンスを向上させます。この文脈において、重要な用語の集約は、「このデータセットは他のすべての文書と比べて何が特別なのか?」という問いに答えることで、コンテキスト認識検索の結果に関する洞察を提供することができます。この機能を示すために、ユーザーが優れたパフォーマンスについて語る際に、どのモデルが過剰に表現されているかを見てみましょう。

  • フィールド埋め込みよりも入力「良いパフォーマンス」に近いトップユーザーフィードバックを見つけるセマンティッククエリを構築してみましょう。

  • テキストフィールドuser_feedbackで同じ用語を使ったテキスト検索も使用します。

  • また、完全なデータセットよりもこれらの結果の中でより頻繁に見つかる電話モデルを見つけるために、重要な用語クエリを追加します。

GET phone_sales_analysis/_search
{
 "retriever": {
   "rrf": {
     "retrievers": [
       {
         "standard": {
           "query": {
             "bool": {
               "must": [
                 {
                   "match": {
                     "user_feedback": {
                       "query": "good performance",
                       "operator": "and"
                     }
                   }
                 }
               ]
             }
           }
         }
       },
       {
         "standard": {
           "query": {
             "semantic": {
               "field": "embedding",
               "query": "good performance"
             }
           }
         }
       }
     ],
    "rank_window_size": 20
   }
 },
 "aggs": {
   "Models": {
     "significant_terms": {
       "field": "phone_model"
     }
   }
 }
}

一致するドキュメントの例を見てみましょう。

返ってくる応答は次のとおりです。

{
  "took": 388,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 20,
      "relation": "eq"
    },
    "max_score": 0.016393442,
    "hits": [...]
  },
  "aggregations": {
    "Models": {
      "doc_count": 20,
      "bg_count": 424,
      "buckets": [
        {
          "key": "iPhone 15",
          "doc_count": 5,
          "score": 0.4125,
          "bg_count": 40
        }
      ]
    }
  }
}

これは、iPhone 15 が合計 424 のドキュメントのうち 40 回 (ドキュメントの 9.4%) 出現している一方で、セマンティック検索「良好なパフォーマンス」に一致した 20 のドキュメント (ドキュメントの 25%) では 5 回見つかるということを示しています。したがって、次のような結論を導き出すことができます。優れたパフォーマンスについて話しているときに、偶然よりも iPhone 15 が見つかる可能性が 2.7 倍高くなります。

まとめ

重要な用語の集約により、データセットをドキュメント全体と比較することで、データセットの固有の詳細を明らかにすることができます。これにより、発生回数を超えて、データ内の予期しない関係が明らかになる可能性があります。さまざまなユースケースで重要な用語を適用して、非常に興味深い機能を実現できます。たとえば、次のようになります。

  • 不正行為検出に取り組む際にパターンを見つけ、盗難されたクレジットカードの一般的な取引を識別します。

  • ユーザーレビューからのブランド品質の洞察 - 悪いレビューの数が不釣り合いに多いブランドを検出します。

  • 誤分類されたドキュメントの検出- 説明にそのカテゴリに一般的でない単語を使用しているカテゴリ (用語フィルター) に属するドキュメントを検出します (重要な用語の集約)。

関連記事

Elasticsearch の異なるバージョン間およびクラスター間でデータを移行する方法

Kofi Bartlett

Kibana に Elasticsearch クエリルール UI を導入

Jhon Guzmán

JavaScript で Elasticsearch を正しく使う方法、パート II

Jeffrey Rengifo

セマンティック検索の実装: Elasticsearch を使ったレシピ検索の構築

Andre Luiz

AWS MarketplaceでElasticsearchをデプロイする方法

Eduard Martin

最先端の検索体験を構築する準備はできましたか?

十分に高度な検索は 1 人の努力だけでは実現できません。Elasticsearch は、データ サイエンティスト、ML オペレーター、エンジニアなど、あなたと同じように検索に情熱を傾ける多くの人々によって支えられています。ぜひつながり、協力して、希望する結果が得られる魔法の検索エクスペリエンスを構築しましょう。

はじめましょう