algo-ecom-ranking について
algo-ecom-rankingは、テキストの関連性と行動・商業シグナルを組み合わせるEC商品ランキングのスキルです。ルールベースのスコアリングからLearning to Rank、評価、ランキングバイアスへの対処まで扱います。
主な機能
- 01関連性と商業シグナルの統合
- 02ルールベースの基準スコア設定
- 03クリックログによるLTRモデル構築
- 04NDCGとA/Bテストによる評価
- 05バイアスとコールドスタートへの対処
活用シーン
- 01テキスト一致を超えた商品検索の改善
- 02コンバージョン率、利益、在庫をランキングに反映
- 03クリック・コンバージョンデータによるランキング学習
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ asgard-ai-platform/ skills --skill algo-ecom-rankingインストール後、Claude Code で/algo-ecom-rankingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/sample_scenario.mdreferences/lambdamart.mdposition-debiasing.md詳細
Eコマース商品ランキング
概要
Eコマースのランキングでは、テキストの関連性(BM25)と商業的なシグナル(CTR、コンバージョン率、売上、利益率)を統合し、単一のランキングスコアにします。クリックデータとコンバージョンデータでトレーニングした学習ランキング(LTR)モデルを使い、ビジネス上重要な成果を最適化します。
使用する場面
使用条件:
- 純粋なテキスト関連性を超えた商品検索/閲覧ランキングを構築する場合
- ビジネス指標(利益率、在庫など)をランキングに取り入れる場合
- 学習ランキングのパイプラインを実装する場合
使用しない場面:
- 純粋なテキスト検索の関連性のみを扱う場合(BM25を使用)
- クリック/コンバージョンデータがない場合(ルールベースのランキングから始める)
アルゴリズム
IRON LAW: Relevance Is Necessary But NOT Sufficient for E-Commerce Ranking
A result that is textually relevant but has zero sales history, no
reviews, and is out of stock serves no one. E-commerce ranking must
balance: relevance (does it match the query?), quality (is it a good
product?), and commercial value (does it generate revenue?).
フェーズ 1:入力の検証
商品とクエリの各ペアについて、テキスト関連性スコア(BM25)、過去のCTR、コンバージョン率、平均評価、レビュー数、価格競争力、在庫レベル、利益率の特徴量を収集します。 ゲート: 最低限の特徴量が揃っており、30日以上のクリックデータがあること。
フェーズ 2:コアアルゴリズム
ルールベースのベースライン: スコア = w₁×関連性 + w₂×人気度 + w₃×評価 + w₄×新しさ。重みは手動で調整します。
LTR アプローチ:
- クリックログからトレーニングデータを生成します(クリックされた商品 = 正例、スキップされた商品 = 負例。表示位置によるバイアスを補正します)
- 特徴量:テキストの一致度、行動データ(CTR、カート追加率)、商品品質(評価、レビュー)、鮮度、価格
- トレーニング:LambdaMART または NDCG を最適化する勾配ブースティングランキングモデルを使用します
- ブレンド:final_score = α × LTR_score + (1-α) × business_boost
フェーズ 3:検証
オフラインで NDCG@10 と MRR を評価します。オンラインで、検索あたりの売上、クリックスルー率、コンバージョン率を A/B テストします。 ゲート: NDCG がベースラインを上回り、A/B テストで主要指標が改善すること。
フェーズ 4:出力
スコアの内訳を含む、ランキング済みの商品リストを返します。
出力形式
{
"results": [{"product_id": "P123", "rank": 1, "final_score": 0.92, "components": {"relevance": 0.85, "popularity": 0.95, "quality": 0.90}}],
"metadata": {"query": "wireless earbuds", "model": "lambdamart", "ndcg_at_10": 0.72}
}
例
入出力例
入力: クエリ「laptop」、一致する商品 500 件 期待される結果: 上位の結果は、キーワードとの関連性だけでなく、テキストの一致度、コンバージョン率の高さ、良好な評価のバランスが取れています。
エッジケース
| 入力 | 期待される結果 | 理由 |
|---|---|---|
| 履歴のない新商品 | テキストの関連性とカテゴリの平均値を基準にする | コールドスタートのため、行動シグナルがない |
| 在庫切れの商品 | 順位を下げるか、除外する | 入手できない商品を表示すると、ユーザーに不満を与える |
| スポンサー商品 | 広告ランクとオーガニックランクを組み合わせる | スポンサー商品とオーガニック商品を明確に分ける |
注意点
- トレーニングデータにおける表示位置バイアス:品質に関係なく、上位に表示された商品ほどクリックされやすくなります。逆傾向スコア重み付けやランダム化実験を使って、トレーニングデータのバイアスを補正してください。
- 人気度バイアス:多様性を制御しないと、人気商品がランキングを独占します。新商品やニッチな商品が表示されなくなります。探索ボーナスを追加してください。
- 売上の最適化 ≠ ユーザー満足度:利益率を基準にランキングすると、高価格の商品が上位に表示されます。結果が商業的に操作されているとユーザーが感じると、信頼を失います。
- 特徴量の鮮度:クリックシグナルは日々変化します。頻繁に再トレーニングするか、特徴量を更新してください。古い特徴量はランキングの品質を低下させます。
- カテゴリ別モデル:単一のランキングモデルでは、すべてのカテゴリに対応できない場合があります。電子機器のランキングとファッションのランキングでは異なる特徴があります。
参考資料
- LambdaMART の実装については、
references/lambdamart.mdを参照してください - 表示位置バイアスの補正手法については、
references/position-debiasing.mdを参照してください