# Personalized Recommendation

> 个性化推荐引擎 - 基于购买历史、协同过滤和"经常一起购买"的产品推荐系统

- Skill: `huifer/personalized-recommendation` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add huifer/personalized-recommendation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/huifer/personalized-recommendation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: huifer (https://skillmd.com/u/huifer)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/huifer/personalized-recommendation

---


# Personalized Recommendation 🎁

> 智能推荐系统，提升交叉销售和向上销售

基于机器学习的个性化推荐引擎，通过购买历史分析、协同过滤和关联规则挖掘，为每个客户提供精准的产品推荐。

---

## 🎯 核心功能

### 1. 购买历史推荐
```
推荐逻辑:
├─ 个人购买历史
├─ 购买频率分析
├─ 品类偏好识别
├─ 购买周期预测
└─ 复购提醒

推荐类型:
├─ 复购推荐（用完再买）
├─ 升级推荐（更好版本）
├─ 补充推荐（配套产品）
└─ 新品推荐（同类别）
```

### 2. 协同过滤
```
基于用户:
├─ 相似用户识别
├─ 用户行为聚类
├─ 群体偏好挖掘
└─ 跨用户推荐

基于物品:
├─ 物品相似度计算
├─ 共现模式分析
├─ 关联规则挖掘
└─ 物品推荐
```

### 3. 关联推荐
```
经常一起购买:
├─ 购物篮分析
├─ Apriori 算法
├─ FP-Growth 算法
└─ 关联规则

推荐场景:
├─ 产品页推荐
├─ 购物车推荐
├─ 结账页推荐
└─ 邮件推荐
```

### 4. 实时推荐
```
实时场景:
├─ 浏览行为推荐
├─ 搜索意图推荐
├─ 加购推荐
├─ 实时个性化
└─ 上下文感知
```

---

## 📋 推荐算法

### 算法 1: 协同过滤
```python
from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd

# 用户-物品矩阵
user_item_matrix = df.pivot_table(
    index='user_id',
    columns='item_id',
    values='rating',
    fill_value=0
)

# 计算用户相似度
user_similarity = cosine_similarity(user_item_matrix)
user_sim_df = pd.DataFrame(
    user_similarity,
    index=user_item_matrix.index,
    columns=user_item_matrix.index
)

# 为用户推荐
def recommend_for_user(user_id, n_recommendations=10):
    # 找到相似用户
    similar_users = user_sim_df[user_id].sort_values(ascending=False)[1:11]

    # 获取相似用户购买但目标用户未购买的物品
    recommendations = []
    for similar_user, similarity in similar_users.items():
        similar_user_items = user_item_matrix.loc[similar_user]
        user_items = user_item_matrix.loc[user_id]

        # 未购买但相似用户购买且评分高的物品
        new_items = similar_user_items[(similar_user_items > 0) & (user_items == 0)]

        for item, rating in new_items.items():
            recommendations.append({
                'item_id': item,
                'score': rating * similarity
            })

    # 排序并返回前N个
    recommendations = sorted(recommendations, key=lambda x: x['score'], reverse=True)
    return recommendations[:n_recommendations]
```

### 算法 2: 基于物品的协同过滤
```python
# 物品-物品相似度
item_similarity = cosine_similarity(user_item_matrix.T)
item_sim_df = pd.DataFrame(
    item_similarity,
    index=user_item_matrix.columns,
    columns=user_item_matrix.columns
)

# 基于用户历史推荐相似物品
def recommend_similar_items(user_id, n_recommendations=10):
    # 获取用户购买的物品
    user_items = user_item_matrix.loc[user_id]
    purchased_items = user_items[user_items > 0].index

    # 计算推荐分数
    recommendations = {}
    for item in purchased_items:
        # 获取相似物品
        similar_items = item_sim_df[item].sort_values(ascending=False)[1:11]

        for similar_item, similarity in similar_items.items():
            if similar_item not in purchased_items:
                if similar_item not in recommendations:
                    recommendations[similar_item] = 0
                recommendations[similar_item] += similarity * user_items[item]

    # 排序并返回
    recommendations = sorted(recommendations.items(), key=lambda x: x[1], reverse=True)
    return recommendations[:n_recommendations]
```

### 算法 3: 关联规则（Apriori）
```python
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

# 准备交易数据
basket = (df.groupby(['order_id', 'product_id'])['quantity']
          .sum().unstack().reset_index().fillna(0)
          .set_index('order_id'))

# 转换为布尔值
basket_sets = basket.applymap(lambda x: 1 if x > 0 else 0)

# 挖掘频繁项集
frequent_itemsets = apriori(basket_sets, min_support=0.01, use_colnames=True)

# 生成关联规则
rules = association_rules(
    frequent_itemsets,
    metric="lift",
    min_threshold=1
)

# 过滤高质量规则
quality_rules = rules[
    (rules['lift'] >= 2) &
    (rules['confidence'] >= 0.3)
].sort_values('lift', ascending=False)

# 获取推荐
def get_recommendations_from_basket(basket_items, n_recommendations=5):
    recommendations = {}

    for item in basket_items:
        # 找到以该物品为前件的规则
        item_rules = quality_rules[quality_rules['antecedents'] == {item}]

        for _, rule in item_rules.iterrows():
            for consequent in rule['consequents']:
                if consequent not in basket_items:
                    if consequent not in recommendations:
                        recommendations[consequent] = 0
                    recommendations[consequent] += rule['lift']

    # 排序并返回
    recommendations = sorted(recommendations.items(), key=lambda x: x[1], reverse=True)
    return recommendations[:n_recommendations]
```

### 算法 4: 矩阵分解（SVD）
```python
from surprise import SVD, Dataset, Reader
from surprise.model_selection import train_test_split

# 准备数据
reader = Reader(rating_scale=(1, 5))
data = Dataset.load_from_df(df[['user_id', 'item_id', 'rating']], reader)

# 训练模型
trainset, testset = train_test_split(data, test_size=0.2)
algo = SVD(n_factors=100, n_epochs=20, biased=True)
algo.fit(trainset)

# 预测
def predict_rating(user_id, item_id):
    prediction = algo.predict(user_id, item_id)
    return prediction.est

# 为用户推荐
def recommend_for_user_svd(user_id, n_recommendations=10):
    # 获取所有物品
    all_items = df['item_id'].unique()

    # 获取用户已购买物品
    user_items = df[df['user_id'] == user_id]['item_id'].unique()

    # 预测未购买物品的评分
    recommendations = []
    for item in all_items:
        if item not in user_items:
            predicted_rating = predict_rating(user_id, item)
            recommendations.append({
                'item_id': item,
                'score': predicted_rating
            })

    # 排序并返回
    recommendations = sorted(recommendations, key=lambda x: x['score'], reverse=True)
    return recommendations[:n_recommendations]
```

---

## 🎯 推荐场景

### 场景 1: 产品页推荐
```yaml
推荐位置:
  - 产品详情页侧边栏
  - "看过此商品的人还看过"
  - "相关产品推荐"
  - "经常一起购买"

推荐策略:
  基于物品协同过滤:
    - 相似产品
    - 同类产品
    - 配套产品

  关联规则:
    - 购买此商品的人还买了
    - 最佳组合
    - 套装优惠

展示方式:
  - 4-8个产品
  - 产品图片
  - 产品名称
  - 价格
  - 评分

示例:
  主产品: iPhone 15 Pro

  推荐:
    1. iPhone 15 Pro 手机壳
    2. MagSafe 充电器
    3. AirPods Pro
    4. Apple Watch
    5. Lightning 数据线
```

### 场景 2: 购物车推荐
```yaml
推荐位置:
  - 购物车页面
  - 结账前
  - "您可能还需要"

推荐策略:
  实时协同过滤:
    - 基于购物车内物品
    - 购买此组合的人还买了
    - 缺少配件提醒

  关联规则:
    - 最佳组合
    - 套装优惠
    - 满减搭配

展示方式:
  - 轻量推荐（2-4个）
  - 简洁信息
  - 快速加购
  - 组合优惠

示例:
  购物车: [iPhone 15 Pro, AirPods Pro]

  推荐:
    1. MagSafe 充电器（加购享9折）
    2. iPhone 15 Pro 手机壳（组合省¥50）

文案: "完成您的装备组合，立即省¥100"
```

### 场景 3: 邮件推荐
```yaml
推荐类型:
  个性化推荐邮件:
    - 每周为您精选
    - 基于浏览历史
    - 基于购买历史

  复购提醒邮件:
    - 您的XX可能用完了
    - 基于购买周期
    - 复购优惠

  新品推荐邮件:
    - 您喜欢的类别有新品
    - 基于偏好类别
    - 新品首发

推荐策略:
  用户协同过滤:
    - 与您相似的人喜欢
    - 热门推荐
    - 趋势产品

  个性化排序:
    - 预测评分
    - 购买概率
    - 利润考虑

邮件结构:
  主题: "{{name}}，这5个产品我们精选给您"

  内容:
    - 个性化问候
    - 5-8个推荐产品
    - 推荐理由
    - 专属优惠
    - 清晰CTA
```

### 场景 4: 首页推荐
```yaml
推荐区块:
  - "为您推荐"
  - "猜您喜欢"
  - "新品首发"
  - "热门推荐"

推荐策略:
  混合推荐:
    - 60% 个性化推荐
    - 20% 热门产品
    - 10% 新品
    - 10% 促销产品

  个性化:
    - 基于历史行为
    - 基于实时浏览
    - 基于相似用户

  多样性:
    - 不同类别
    - 不同价位
    - 不同品牌

展示方式:
  - 轮播展示
  - 网格布局
  - 懒加载
  - 无限滚动
```

---

## 💻 嵌入代码生成

### Shopify 产品页推荐
```liquid
<!-- 产品页推荐 -->
<div class="product-recommendations">
  <h2>您可能还喜欢</h2>

  <div class="recommendations-grid">
    {% for product in recommendations %}
      <div class="recommendation-item">
        <a href="{{ product.url }}">
          <img src="{{ product.featured_image }}"
               alt="{{ product.title }}"
               loading="lazy">

          <h3>{{ product.title }}</h3>

          <div class="price">
            {% if product.compare_at_price > product.price %}
              <span class="original-price">
                {{ product.compare_at_price | money }}
              </span>
            {% endif %}
            <span class="sale-price">
              {{ product.price | money }}
            </span>
          </div>

          <div class="rating">
            <span class="stars">★★★★☆</span>
            <span class="count">({{ product.reviews_count }})</span>
          </div>
        </a>

        <form method="post" action="/cart/add">
          <input type="hidden" name="id" value="{{ product.variants.first.id }}">
          <button type="submit" class="btn-add-cart">
            加入购物车
          </button>
        </form>
      </div>
    {% endfor %}
  </div>
</div>

<script>
// 推荐算法（简化版）
async function loadRecommendations(productId) {
  try {
    const response = await fetch(`/recommendations/products?product_id=${productId}&limit=8`);
    const products = await response.json();

    const grid = document.querySelector('.recommendations-grid');
    grid.innerHTML = products.map(product => `
      <div class="recommendation-item">
        <!-- 产品HTML -->
      </div>
    `).join('');
  } catch (error) {
    console.error('推荐加载失败:', error);
  }
}

// 页面加载时执行
document.addEventListener('DOMContentLoaded', () => {
  const productId = {{ product.id }};
  loadRecommendations(productId);
});
</script>
```

### WooCommerce 推荐插件
```php
<?php
/**
 * 产品页推荐插件
 */

// 获取推荐产品
function get_personalized_recommendations($product_id, $limit = 8) {
    $user_id = get_current_user_id();

    // 获取推荐算法结果
    $recommendations = array();

    if ($user_id) {
        // 已登录用户：个性化推荐
        $recommendations = get_user_based_recommendations($user_id, $limit);
    } else {
        // 游客：基于产品推荐
        $recommendations = get_item_based_recommendations($product_id, $limit);
    }

    return $recommendations;
}

// 基于用户的推荐
function get_user_based_recommendations($user_id, $limit) {
    // 获取用户历史订单
    $orders = wc_get_orders(array(
        'customer_id' => $user_id,
        'limit' => -1
    ));

    // 分析购买历史
    $purchased_products = array();
    foreach ($orders as $order) {
        foreach ($order->get_items() as $item) {
            $purchased_products[] = $item->get_product_id();
        }
    }

    // 协同过滤（简化）
    $recommendations = array();
    $args = array(
        'post_type' => 'product',
        'posts_per_page' => $limit * 2,
        'post__not_in' => $purchased_products,
        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'field' => 'slug',
                'terms' => get_user_favorite_categories($user_id),
            ),
        ),
    );

    $query = new WP_Query($args);
    return $query->posts;
}

// 短代码：推荐产品
add_shortcode('personalized_recommendations', function($atts) {
    global $product;

    $atts = shortcode_atts(array(
        'limit' => 8,
    ), $atts);

    $recommendations = get_personalized_recommendations(
        $product->get_id(),
        $atts['limit']
    );

    ob_start();
    ?>
    <div class="personalized-recommendations">
        <h2>您可能还喜欢</h2>
        <div class="products-grid">
            <?php foreach ($recommendations as $rec_product): ?>
                <?php wc_get_template_part('content', 'product'); ?>
            <?php endforeach; ?>
        </div>
    </div>
    <?php
    return ob_get_clean();
});

// AJAX: 加载更多推荐
add_action('wp_ajax_load_recommendations', 'ajax_load_recommendations');
add_action('wp_ajax_nopriv_load_recommendations', 'ajax_load_recommendations');

function ajax_load_recommendations() {
    $product_id = intval($_POST['product_id']);
    $offset = intval($_POST['offset']);
    $limit = 8;

    $recommendations = get_personalized_recommendations($product_id, $limit, $offset);

    wp_send_json_success($recommendations);
}
```

### 邮件推荐代码
```html
<!-- 邮件推荐模板 -->
<!DOCTYPE html>
<html>
<head>
  <style>
    .recommendations-container {
      max-width: 600px;
      margin: 0 auto;
      font-family: Arial, sans-serif;
    }

    .recommendations-grid {
      display: grid;
      grid-template-columns: repeat(2, 1fr);
      gap: 20px;
      margin: 20px 0;
    }

    .recommendation-item {
      border: 1px solid #ddd;
      padding: 15px;
      text-align: center;
    }

    .recommendation-item img {
      max-width: 100%;
      height: auto;
    }

    .recommendation-item h3 {
      font-size: 16px;
      margin: 10px 0;
    }

    .recommendation-item .price {
      font-weight: bold;
      color: #e74c3c;
      font-size: 18px;
    }

    .recommendation-item .cta-button {
      display: inline-block;
      padding: 10px 20px;
      background: #3498db;
      color: white;
      text-decoration: none;
      border-radius: 5px;
      margin-top: 10px;
    }
  </style>
</head>
<body>
  <div class="recommendations-container">
    <h1>Hi {{ customer_name }}，为您精选</h1>

    <p>基于您最近购买的 {{ last_purchase }}，我们为您挑选了这些产品：</p>

    <div class="recommendations-grid">
      {% for product in recommendations %}
      <div class="recommendation-item">
        <img src="{{ product.image }}" alt="{{ product.name }}">

        <h3>{{ product.name }}</h3>

        <p class="price">{{ product.price }}</p>

        <a href="{{ product.url }}" class="cta-button">
          查看详情
        </a>
      </div>
      {% endfor %}
    </div>

    <p style="text-align: center; margin-top: 30px;">
      <a href="{{ view_more_url }}" style="color: #3498db;">
        查看更多推荐 →
      </a>
    </p>
  </div>
</body>
</html>
```

---

## 🚀 快速命令

### 获取用户推荐
```bash
/personalized-recommendation --user-based --customer-id "12345"
```

### 获取产品推荐
```bash
/personalized-recommendation --item-based --product-id "67890"
```

### 分析购买关联
```bash
/personalized-recommendation --association --data "orders.csv"
```

### 生成推荐代码
```bash
/personalized-recommendation --code --platform "shopify"
```

---

## 💡 最佳实践

### 1. 推荐多样性
- 不要只推荐同类型产品
- 混合不同推荐算法
- 考虑探索与利用
- 定期更新推荐池

### 2. 性能优化
- 缓存推荐结果
- 异步加载
- 预计算推荐
- 使用CDN

### 3. 用户体验
- 提供推荐理由
- 允许用户反馈
- 优雅降级
- 移动端优化

### 4. 持续优化
- A/B 测试推荐
- 监控推荐效果
- 收集用户反馈
- 更新推荐模型

---

## 📊 成功指标

### 推荐效果
- 点击率 >5%
- 加购率 >2%
- 转化率 >1%
- 推荐收入占比 >15%

### 用户参与
- 推荐浏览率 >30%
- 推荐互动率 >5%
- 推荐满意度 >4.0/5.0

### 商业影响
- 客单价提升 >10%
- 交叉销售率 >20%
- 向上销售率 >15%

---

## 🔗 相关 Skills

- `/advanced-customer-segmentation` - 客户细分分析
- `/email-sequence` - 推荐邮件序列
- `/prime-product-desc` - 产品描述优化
- `/basic-analytics` - 推荐效果分析

---

**让每个推荐都精准命中客户需求！** 🎯

**版本**: 1.0.0
**更新**: 2026-04-12
**作者**: Shopilot Team

