d8a80f6272
이름만 다른(표기 변형) [[위키링크]]를 대상 문서의 canonical 제목으로 치환해 끊겼던 1,200개 링크를 연결. 제목/파일명 정규화 일치만 적용하고 별칭 매칭은 과병합 위험으로 제외(애매성 가드). 원본은 _link_reconcile_backup/ 에 백업. 도구: Datacollect/scripts/link_reconcile_apply.mjs Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
8.3 KiB
8.3 KiB
id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
| id | title | category | status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | verification_status | tags | raw_sources | last_reinforced | github_commit | tech_stack | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wiki-2026-0508-e-commerce-optimization | E-commerce Optimization | 10_Wiki/Topics | verified | self |
|
none | A | 0.95 | applied |
|
2026-05-10 | pending |
|
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
- Acquisition: 매 ad → land.
- Engagement: 매 product browse.
- Conversion: 매 add to cart → checkout.
- Retention: 매 repeat purchase.
- 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.
매 응용
- DTC brand: 매 owned channel.
- Marketplace: 매 search + reco.
- Subscription: 매 churn + upsell.
- Luxury: 매 service + AOV.
- B2B: 매 quote + repeat.
💻 패턴
Funnel analytics
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)
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
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)
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
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)
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)
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
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
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)
// 매 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)
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)
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)
🤖 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 |