×

数据挖掘 api

淘宝商品详情 API 数据在推荐系统中的应用:召回、排序与特征工程实践

admin admin 发表于2026-04-01 09:37:20 浏览4 评论0

抢沙发发表评论

在电商推荐系统中,商品详情数据是构建精准推荐能力的核心原料。淘宝开放的商品详情 API 提供了商品标题、价格、类目、属性、销量、评价、库存、商家信息等全维度结构化数据,这些数据直接支撑推荐系统的召回、排序、特征工程三大核心环节。本文将结合实战逻辑与可运行代码,详解淘宝商品详情 API 数据在推荐全流程中的落地实践。

一、核心基础:淘宝商品详情 API 数据获取

推荐系统的前提是稳定获取高质量商品数据,我们先通过 Python 实现淘宝商品详情 API 的调用,标准化解析核心字段,为后续召回、排序、特征工程提供数据底座。

1.1 API 调用与数据解析代码

import requests
import json
import pandas as pd

# 淘宝商品详情API配置(模拟官方开放接口,实际使用替换为官方域名/密钥)
TAOBAO_API_URL = "https://eco.taobao.com/router/rest"
APP_KEY = "你的AppKey"
APP_SECRET = "你的AppSecret"

def get_taobao_item_detail(num_iid):
    """
    调用淘宝商品详情API,获取单商品全量详情数据
    :param num_iid: 淘宝商品ID
    :return: 标准化后的商品特征字典
    """
    params = {
        "method": "taobao.item.get",
        "app_key": APP_KEY,
        "num_iid": num_iid,
        "format": "json",
        "v": "2.0"
    }
    
    try:
        # 发送API请求
        response = requests.get(TAOBAO_API_URL, params=params, timeout=10)
        data = response.json()
        
        # 解析核心商品详情字段(推荐系统高频使用字段)
        item = data.get("item", {})
        standard_item = {
            "num_iid": item.get("num_iid"),          # 商品ID
            "title": item.get("title"),              # 商品标题
            "price": float(item.get("price", 0)),    # 商品价格
            "cid": item.get("cid"),                  # 商品类目ID
            "category_name": item.get("category_name"), # 类目名称
            "sales": int(item.get("sales", 0)),      # 销量
            "score": float(item.get("score", 0)),    # 商品评分
            "comment_num": int(item.get("comment_num", 0)), # 评价数
            "props": item.get("props"),              # 商品属性(材质、风格等)
            "shop_type": item.get("shop_type"),      # 店铺类型(天猫/淘宝C店)
            "stock": int(item.get("stock", 0))       # 库存
        }
        return standard_item
    
    except Exception as e:
        print(f"商品{num_iid}获取失败:{str(e)}")
        return None

# 实战:批量获取商品详情数据
item_ids = ["689123456789", "689234567890", "689345678901"]
item_data_list = [get_taobao_item_detail(iid) for iid in item_ids if get_taobao_item_detail(iid)]
# 转换为DataFrame,方便后续特征工程
item_df = pd.DataFrame(item_data_list)
print("商品详情基础数据:")
print(item_df.head())

1.2 核心数据价值

API 返回的商品详情数据,是推荐系统的原始特征池

  • 结构化特征:价格、销量、评分、类目、库存(直接用于排序);

  • 文本特征:商品标题、属性(用于语义召回);

  • 商业特征:店铺类型、销量(用于热门 / 优质商品过滤)。

二、召回阶段:基于商品详情 API 数据的精准候选集生成

召回是推荐系统的第一道关卡:从千万级商品库中快速筛选出几百个候选商品,核心目标是快、准、全。淘宝商品详情 API 的类目、属性、标题、销量数据,是实现高效召回的核心。

2.1 主流召回方式(基于 API 数据)

  1. 热门召回:基于 API 返回的销量、评分筛选高热度商品;

  2. 类目召回:基于用户历史浏览的类目ID,召回同类目商品;

  3. 语义召回:基于 API 返回的商品标题、属性,做文本相似度召回;

  4. 规则召回:基于库存、店铺类型过滤无价值商品(如无库存、低质店铺)。

2.2 召回实战代码

import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# 1. 热门召回:基于销量+评分加权排序,召回TopN热门商品
def hot_recall(item_df, top_n=50):
    # 加权得分:销量占60%,评分占40%
    item_df["hot_score"] = item_df["sales"] * 0.6 + item_df["score"] * 0.4
    # 过滤无库存商品
    valid_items = item_df[item_df["stock"] > 0].sort_values(by="hot_score", ascending=False)
    return valid_items.head(top_n)

# 2. 类目召回:根据用户偏好类目,召回同类目商品
def category_recall(item_df, user_like_cid, top_n=50):
    category_items = item_df[item_df["cid"] == user_like_cid]
    return category_items.head(top_n)

# 3. 语义召回:基于商品标题+属性的文本相似度召回
def semantic_recall(item_df, user_history_titles, top_n=50):
    # 拼接商品文本特征(标题+属性)
    item_df["text_feature"] = item_df["title"] + " " + item_df["props"].fillna("")
    # TF-IDF构建文本向量
    tfidf = TfidfVectorizer(max_features=1000, stop_words=["的", "是", "在"])
    item_tfidf = tfidf.fit_transform(item_df["text_feature"])
    # 用户历史浏览商品的文本均值向量
    user_history_text = " ".join(user_history_titles)
    user_vec = tfidf.transform([user_history_text])
    # 计算相似度
    sim_scores = cosine_similarity(user_vec, item_tfidf)[0]
    item_df["sim_score"] = sim_scores
    # 召回相似度TopN商品
    return item_df.sort_values(by="sim_score", ascending=False).head(top_n)

# 实战:融合多路召回
user_like_cid = item_df["cid"].iloc[0]  # 模拟用户偏好类目
user_history_titles = [item_df["title"].iloc[0]]  # 模拟用户历史浏览标题

hot_recall_df = hot_recall(item_df)
cate_recall_df = category_recall(item_df, user_like_cid)
sem_recall_df = semantic_recall(item_df, user_history_titles)

# 融合去重,生成最终候选集
recall_candidates = pd.concat([hot_recall_df, cate_recall_df, sem_recall_df]).drop_duplicates("num_iid")
print(f"召回候选集数量:{len(recall_candidates)}")

2.3 召回阶段数据应用要点

  • 用 API 的库存字段做前置过滤,避免召回无货商品;

  • 类目、属性实现精准匹配,解决推荐多样性问题;

  • 销量、评分保证热门商品覆盖,提升基础转化率。

三、特征工程:基于商品详情 API 的特征标准化与增强

特征工程是推荐系统效果的核心瓶颈,优质特征能直接提升排序模型精度。淘宝商品详情 API 的原始数据需要经过清洗、标准化、交叉、编码处理,转化为模型可识别的特征。

3.1 核心特征工程操作

  1. 缺失值处理:填充价格、评分、销量的缺失值;

  2. 数值标准化:将价格、销量归一化,消除量纲影响;

  3. 类别特征编码:类目、店铺类型转换为数值特征;

  4. 交叉特征构建:价格区间 × 销量等级、评分 × 评价数等高阶特征;

  5. 文本特征提取:标题关键词、属性标签向量化。

3.2 特征工程实战代码

from sklearn.preprocessing import StandardScaler, LabelEncoder

def feature_engineering(item_df):
    """
    基于淘宝商品详情API数据的特征工程全流程
    """
    # 复制原数据,避免修改原始数据
    feat_df = item_df.copy()
    
    # 1. 缺失值处理
    feat_df["price"].fillna(feat_df["price"].median(), inplace=True)
    feat_df["score"].fillna(feat_df["score"].mean(), inplace=True)
    
    # 2. 数值特征标准化(价格、销量、评分)
    scaler = StandardScaler()
    num_cols = ["price", "sales", "score", "comment_num"]
    feat_df[num_cols] = scaler.fit_transform(feat_df[num_cols])
    
    # 3. 类别特征编码(类目名称、店铺类型)
    le = LabelEncoder()
    feat_df["category_code"] = le.fit_transform(feat_df["category_name"])
    feat_df["shop_type_code"] = le.fit_transform(feat_df["shop_type"])
    
    # 4. 构建交叉特征(推荐系统高阶有效特征)
    # 价格等级:0-低价,1-中价,2-高价
    feat_df["price_level"] = pd.cut(feat_df["price"], bins=3, labels=[0,1,2])
    # 销量等级:0-低销量,1-中销量,2-高销量
    feat_df["sales_level"] = pd.cut(feat_df["sales"], bins=3, labels=[0,1,2])
    # 交叉特征:价格×销量等级
    feat_df["price_sales_cross"] = feat_df["price_level"].astype(str) + "_" + feat_df["sales_level"].astype(str)
    feat_df["price_sales_cross"] = le.fit_transform(feat_df["price_sales_cross"])
    
    # 5. 过滤无用特征,保留模型输入特征
    model_features = ["num_iid", "price", "sales", "score", "category_code", 
                      "shop_type_code", "price_sales_cross", "comment_num"]
    return feat_df[model_features]

# 执行特征工程
feature_df = feature_engineering(item_df)
print("特征工程后数据:")
print(feature_df.head())

3.3 特征工程关键价值

  • 基于 API 的原始属性,可扩展出上百个有效特征;

  • 交叉特征能捕捉商品商业属性的组合关系(如高价高销量商品);

  • 标准化特征让排序模型训练更稳定,避免梯度爆炸。

四、排序阶段:基于 API 特征的精准打分与推荐排序

排序是推荐系统的第二道关卡:对召回的几百个候选商品,通过模型精准打分,按得分从高到低排序,最终展示给用户。淘宝商品详情 API 生成的标准化特征,是排序模型的核心输入。

4.1 排序模型选型

  • 轻量场景:逻辑回归(LR)、梯度提升树(GBDT);

  • 精准场景:DeepFM、Wide&Deep(深度学习推荐模型)。

本文以工业界常用的GBDT 排序模型为例,基于 API 特征实现商品打分排序。

4.2 排序实战代码

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

# 模拟标签:1=用户点击/购买,0=未点击(实际由用户行为数据生成)
feature_df["label"] = np.random.randint(0, 2, size=len(feature_df))

# 构建训练数据
X = feature_df.drop(["num_iid", "label"], axis=1)
y = feature_df["label"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练GBDT排序模型
rank_model = GradientBoostingClassifier(n_estimators=100, random_state=42)
rank_model.fit(X_train, y_train)

# 模型评估
y_pred_proba = rank_model.predict_proba(X_test)[:,1]
auc = roc_auc_score(y_test, y_pred_proba)
print(f"排序模型AUC:{auc:.4f}")

# 对召回候选集进行打分排序
def rank_items(recall_candidates, rank_model, feature_df):
    # 匹配特征
    rank_features = feature_df[feature_df["num_iid"].isin(recall_candidates["num_iid"])]
    # 模型预测得分
    X_rank = rank_features.drop(["num_iid", "label"], axis=1)
    rank_features["rank_score"] = rank_model.predict_proba(X_rank)[:,1]
    # 按得分降序排序
    ranked_items = rank_features.sort_values(by="rank_score", ascending=False)
    # 关联商品基础信息
    ranked_items = ranked_items.merge(item_df[["num_iid", "title", "price"]], on="num_iid")
    return ranked_items[["num_iid", "title", "price", "rank_score"]]

# 最终推荐结果
final_recommend = rank_items(recall_candidates, rank_model, feature_df)
print("最终推荐排序结果:")
print(final_recommend.head(10))

4.3 排序阶段数据应用要点

  • API 的价格、评分、销量是排序模型的强特特征,权重最高;

  • 店铺类型、类目编码能区分商品质量与用户偏好,提升精准度;

  • 排序得分直接决定商品展示顺序,得分越高越优先曝光。

五、全流程总结与落地优化

5.1 推荐系统全流程

  1. 数据层:调用淘宝商品详情 API,获取全维度商品基础数据;

  2. 召回层:基于类目、销量、文本相似度,生成候选商品集;

  3. 特征层:清洗、编码、交叉 API 数据,构建高质量特征;

  4. 排序层:用模型对候选商品打分,输出最终推荐列表。

5.2 落地优化建议

  1. 数据缓存:API 数据定时缓存,减少重复调用,提升效率;

  2. 特征实时更新:销量、库存、价格等动态特征实时同步;

  3. 多路召回融合:结合热门、类目、语义召回,平衡精准与多样性;

  4. 模型迭代:基于用户反馈,持续优化 API 特征与排序模型。

总结

淘宝商品详情 API 数据是电商推荐系统的核心生产资料,贯穿召回、特征工程、排序全流程。通过 API 获取标准化商品数据,结合召回规则筛选候选集,通过特征工程挖掘数据价值,最终用排序模型实现精准推荐,是电商推荐的标准实战路径。

本文代码可直接落地部署,结合真实淘宝 API 密钥与用户行为数据,即可快速构建一套高可用的商品推荐系统。


少长咸集

群贤毕至

访客