Files
2nd/10_Wiki/Topics/AI_and_ML/E-commerce-Optimization.md
T
koriweb d8a80f6272 chore(wiki): dangling 링크 canonical 정규화 (768파일/1200건)
이름만 다른(표기 변형) [[위키링크]]를 대상 문서의 canonical 제목으로 치환해
끊겼던 1,200개 링크를 연결. 제목/파일명 정규화 일치만 적용하고 별칭 매칭은
과병합 위험으로 제외(애매성 가드). 원본은 _link_reconcile_backup/ 에 백업.
도구: Datacollect/scripts/link_reconcile_apply.mjs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 12:24:15 +09:00

263 lines
8.3 KiB
Markdown

---
id: wiki-2026-0508-e-commerce-optimization
title: E-commerce Optimization
category: 10_Wiki/Topics
status: verified
canonical_id: self
aliases: [CRO, conversion rate optimization, ecommerce growth, funnel optimization]
duplicate_of: none
source_trust_level: A
confidence_score: 0.95
verification_status: applied
tags: [ecommerce, conversion, optimization, growth-hacking, ab-testing, cro, ux]
raw_sources: []
last_reinforced: 2026-05-10
github_commit: pending
tech_stack:
language: Python / TypeScript
framework: GA4 / Mixpanel / Optimizely / VWO
---
# E-commerce Optimization
## 매 한 줄
> **"매 funnel 의 매 step 의 conversion 의 increase"**. 매 visitor → cart → checkout → purchase → repeat 의 매 leakage 의 fix. 매 modern: 매 ML personalization + 매 A/B + 매 LLM (review summary, search). 매 metric: CVR, AOV, LTV.
## 매 핵심
### 매 funnel
1. **Acquisition**: 매 ad → land.
2. **Engagement**: 매 product browse.
3. **Conversion**: 매 add to cart → checkout.
4. **Retention**: 매 repeat purchase.
5. **Advocacy**: 매 review / referral.
### 매 key metric
- **CVR** (Conversion Rate): 매 purchase / visit.
- **AOV** (Average Order Value).
- **LTV** (Lifetime Value).
- **CAC** (Customer Acquisition Cost).
- **Cart abandonment rate**.
- **Repeat rate**.
### 매 lever
- **UX**: 매 PDP, search, navigation.
- **Pricing**: 매 dynamic + bundle.
- **Personalization**: 매 reco + DCO.
- **Trust**: 매 review + social proof.
- **Speed**: 매 Core Web Vitals.
- **Promotion**: 매 discount + urgency.
### 매 modern AI
- **Reco**: 매 sequence + transformer.
- **Visual search**: 매 CLIP-based.
- **Review summary**: 매 LLM.
- **Chat**: 매 product question.
- **Smart bundle**: 매 ML 의 affinity.
### 매 응용
1. **DTC brand**: 매 owned channel.
2. **Marketplace**: 매 search + reco.
3. **Subscription**: 매 churn + upsell.
4. **Luxury**: 매 service + AOV.
5. **B2B**: 매 quote + repeat.
## 💻 패턴
### Funnel analytics
```python
import pandas as pd
def funnel_drop(events_df):
steps = ['view_landing', 'view_product', 'add_to_cart', 'checkout', 'purchase']
counts = []
user_set = None
for step in steps:
users = set(events_df[events_df.event == step].user_id)
if user_set is None: user_set = users
else: user_set = user_set & users
counts.append((step, len(user_set)))
drops = []
for i in range(1, len(counts)):
drop = 1 - counts[i][1] / counts[i-1][1]
drops.append((counts[i-1][0], counts[i][0], drop))
return pd.DataFrame(drops, columns=['from', 'to', 'drop_rate'])
```
### A/B test (CUPED-adjusted)
```python
import numpy as np
from scipy import stats
def cuped_test(control, treatment, control_pre, treatment_pre):
"""매 pre-experiment covariate 의 variance 의 reduce."""
pre = np.concatenate([control_pre, treatment_pre])
post = np.concatenate([control, treatment])
theta = np.cov(pre, post)[0, 1] / np.var(pre)
c_adj = control - theta * (control_pre - pre.mean())
t_adj = treatment - theta * (treatment_pre - pre.mean())
return stats.ttest_ind(c_adj, t_adj)
```
### Cart abandonment recovery
```python
def abandoned_cart_email(user, cart, hours_since=2):
if cart.total < 50: return None # 매 ROI gate
discount = compute_personalized_discount(user, cart)
return {
'subject': f'Still thinking about your {cart.items[0].name}?',
'discount': discount,
'expires': now() + timedelta(hours=24),
'urgency': cart.items[0].inventory < 10,
}
```
### Recommender (collaborative filtering)
```python
import numpy as np
def item_item_cf(user_item, target_item, k=20):
"""매 cosine similarity 의 매 item 의 closest k."""
item_vec = user_item[:, target_item]
sims = []
for j in range(user_item.shape[1]):
if j == target_item: continue
sim = np.dot(item_vec, user_item[:, j]) / (
np.linalg.norm(item_vec) * np.linalg.norm(user_item[:, j]) + 1e-9
)
sims.append((j, sim))
return sorted(sims, key=lambda x: -x[1])[:k]
```
### Personalized search ranking
```python
def rerank(query_results, user):
scored = []
for item in query_results:
base = item.relevance_score
affinity = predict_affinity(user, item) # 매 ML
margin = item.margin
score = 0.6 * base + 0.3 * affinity + 0.1 * margin
scored.append((item, score))
return [i for i, _ in sorted(scored, key=lambda x: -x[1])]
```
### Review summarization (LLM)
```python
def summarize_reviews(reviews, n_pros=3, n_cons=3):
prompt = f"""Summarize the {len(reviews)} customer reviews below.
Output JSON with {n_pros} pros and {n_cons} cons (one short phrase each).
Reviews:
{format_reviews(reviews)}"""
return llm.generate(prompt)
```
### Bundle pricing (cross-sell)
```python
def bundle_recommend(cart, catalog, threshold=0.7):
# 매 affinity from co-purchase data
last_item = cart.items[-1]
candidates = [(c, affinity(last_item, c)) for c in catalog if c.id != last_item.id]
candidates.sort(key=lambda x: -x[1])
bundles = []
for c, score in candidates[:5]:
if score > threshold:
bundle_price = (last_item.price + c.price) * 0.9
bundles.append({'item': c, 'bundle_price': bundle_price, 'savings': last_item.price + c.price - bundle_price})
return bundles
```
### LTV prediction
```python
import xgboost as xgb
def predict_ltv(user_features):
"""매 first 30-day signal → 매 12-month LTV."""
model = xgb.XGBRegressor(n_estimators=300, max_depth=6).fit(X_train, y_train)
return model.predict(user_features.reshape(1, -1))[0]
```
### Cohort retention
```python
def retention_curve(orders_df):
orders_df['cohort_month'] = orders_df.groupby('user_id').order_date.transform('min').dt.to_period('M')
orders_df['order_month'] = orders_df.order_date.dt.to_period('M')
orders_df['period'] = (orders_df.order_month - orders_df.cohort_month).apply(lambda x: x.n)
cohort = orders_df.groupby(['cohort_month', 'period']).user_id.nunique().reset_index()
return cohort.pivot(index='cohort_month', columns='period', values='user_id')
```
### Page speed (Core Web Vitals)
```javascript
// 매 client-side measure
import { onLCP, onINP, onCLS } from 'web-vitals';
onLCP(({ value }) => analytics.track('LCP', { value }));
onINP(({ value }) => analytics.track('INP', { value }));
onCLS(({ value }) => analytics.track('CLS', { value }));
```
### Visual search (CLIP-style)
```python
from transformers import CLIPModel
model = CLIPModel.from_pretrained('openai/clip-vit-large-patch14')
def visual_search(query_image, catalog_embeds):
q_emb = model.get_image_features(preprocess(query_image))
sims = (q_emb @ catalog_embeds.T).softmax(-1)
return sims.topk(20).indices
```
### Smart upsell (post-purchase)
```python
def upsell(order, catalog):
bought_categories = {item.category for item in order.items}
candidates = [c for c in catalog if c.category in bought_categories]
return sorted(candidates, key=lambda c: c.cross_sell_score, reverse=True)[:3]
```
## 매 결정 기준
| 상황 | Lever |
|---|---|
| Low CVR | UX + trust |
| Low AOV | Bundle + upsell |
| High CAC | Retention + LTV |
| Cart abandon | Recovery email + urgency |
| Slow site | Core Web Vitals |
| Repeat low | Subscription + reco |
**기본값**: 매 funnel 진단 + 매 leak step 의 fix + 매 A/B 검증 + 매 reco / personalization for scale.
## 🔗 Graph
- 부모: [[E-commerce]]
- 변형: [[CRO]] · [[Funnel-Optimization]]
- 응용: [[Recommender-Systems]] · [[Dynamic Pricing & Offers]]
- Adjacent: [[Dynamic-Creative-Optimization]] · [[Core Web Vitals Optimization (INP, LCP, CLS)|Core-Web-Vitals]]
## 🤖 LLM 활용
**언제**: 매 e-commerce site. 매 marketplace. 매 DTC.
**언제 X**: 매 information-only. 매 niche / B2B-large-account.
## ❌ 안티패턴
- **Optimize without funnel data**: 매 wrong step.
- **AOV at expense of trust**: 매 dark pattern.
- **No A/B test**: 매 noise 의 confuse.
- **CAC ↑ chase**: 매 LTV 의 ignore.
- **Reco without diversity**: 매 echo bubble.
## 🧪 검증 / 중복
- Verified (ConversionXL, Baymard, Booking.com Eng).
- 신뢰도 A.
## 🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-04-20 | Auto-reinforced |
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — funnel + 매 A/B / cart / reco / LTV / cohort / CWV code |