
1) 【一句话结论】
电商多源异构数据需分阶段处理,通过差异化清洗(如用户行为时间序列去重、商品属性标准化)与特征工程(如卡方检验或模型重要性选择),构建高质量特征集,核心是标准化数据格式并挖掘多源关联性。
2) 【原理/概念讲解】
多源异构数据指用户行为(浏览、购买、评论,时间序列、文本)与商品属性(SKU、属性、价格,结构化但属性维度多)等数据源在格式、结构、粒度上差异大。数据清洗是预处理环节,处理缺失、异常、重复,确保数据质量;特征工程是从原始数据中提取对模型有用的特征,如聚合用户行为、衍生商品属性特征。类比:数据清洗像给数据“体检”,去除杂质;特征工程像“信息提炼”,聚焦有用信息。
3) 【对比与适用场景】
| 数据源 | 定义 | 关键步骤 | 注意点 |
|---|---|---|---|
| 用户行为数据 | 用户交互行为(浏览、购买、评论) | 时间窗口去重(1天内重复行为过滤)、文本去重(TF-IDF相似度>0.9合并评论)、缺失值填充(如评论用“无内容”填充) | 需考虑时间序列特性,避免过度去重导致信息丢失 |
| 商品属性数据 | 商品结构化属性(SKU、价格、属性) | 属性值标准化(如颜色“red”统一为“红色”、价格单位统一为元)、异常值过滤(如负价格、价格极值)、缺失值处理(如属性值用常见值填充) | 需保证属性一致性,避免业务逻辑冲突 |
| 方法 | 定义 | 使用场景 | 注意点 |
|---|---|---|---|
| 卡方检验 | 筛选与目标变量(如购买)高相关的特征 | 离散特征与分类目标变量 | 避免多重共线性,选择p值低的特征 |
| 信息增益 | 衡量特征对目标变量的信息量 | 分类问题(如用户是否购买) | 结合业务逻辑,优先选择高增益特征 |
| 模型重要性排序 | 基于训练后模型(如XGBoost)的特征重要性 | 任意模型,尤其是树模型 | 需验证特征有效性,避免过拟合 |
4) 【示例】
伪代码(Python):
# 1. 用户行为数据清洗(含评论去重)
def clean_user_behavior(df):
# 时间窗口去重(1天内重复行为)
df = df.sort_values('date').drop_duplicates(subset=['user_id', 'sku_id'], keep='first')
# 文本去重(评论相似度>0.9合并)
from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer()
tfidf_matrix = vectorizer.fit_transform(df['comment'].fillna(''))
from sklearn.metrics.pairwise import cosine_similarity
similarity = cosine_similarity(tfidf_matrix)
# 合并重复评论(保留一条,合并内容)
for i in range(len(similarity)):
for j in range(i+1, len(similarity)):
if similarity[i][j] > 0.9:
df.loc[df.index[j], 'comment'] = df.loc[df.index[i], 'comment'] + ' ' + df.loc[df.index[j], 'comment']
# 缺失值填充
df['comment'] = df['comment'].fillna('无评论')
df['purchase_amount'] = df['purchase_amount'].fillna(df['purchase_amount'].median())
return df
# 2. 商品属性数据清洗(属性标准化)
def clean_product_sku(df):
# 属性值标准化(颜色)
df['color'] = df['color'].replace({'red': '红色', 'blue': '蓝色', 'green': '绿色'})
# 价格单位统一(假设原数据有美元)
df['price'] = df['price'].replace({'$99': 99, '$199': 199})
# 异常值过滤(价格>1000或<1)
df = df[(df['price'] > 1) & (df['price'] < 1000)]
return df
# 3. 数据整合(关联用户行为与商品属性)
def integrate_data(user_clean, product_clean):
merged = pd.merge(user_clean, product_clean, on='sku_id', how='left')
merged['price'] = merged['price'].fillna(merged['price'].mean())
return merged
# 4. 特征工程(用户行为聚合)
def feature_engineer(user_integrated):
user_features = user_integrated.groupby('user_id')['browse_count'].sum().reset_index()
user_features['active_days'] = (user_integrated.groupby('user_id')['date'].max() - user_integrated.groupby('user_id')['date'].min()).dt.days
user_features['avg_price'] = user_integrated.groupby('user_id')['price'].mean()
# 筛选高相关特征(假设用卡方检验)
from sklearn.feature_selection import SelectKBest, chi2
X = user_features[['browse_count', 'active_days', 'avg_price']]
y = user_integrated.groupby('user_id')['purchase_amount'].sum() > 0 # 是否购买
selector = SelectKBest(chi2, k=2)
X_selected = selector.fit_transform(X, y)
# 提取重要特征
selected_features = X.columns[selector.get_support()]
return user_features[selected_features]
5) 【面试口播版答案】
“面试官您好,针对淘天集团电商场景的多源异构数据问题,我的处理思路是分三步:首先做差异化数据清洗,比如用户行为数据要处理时间窗口去重(1天内重复浏览过滤),评论通过TF-IDF相似度>0.9合并重复内容;商品属性数据则做属性标准化(颜色统一为中文、价格单位统一为元),过滤异常值。接着整合数据,通过商品ID关联用户行为与商品属性,构建用户-商品-属性关联表。然后做特征工程,比如聚合用户对某类商品的浏览次数,用卡方检验筛选与购买行为高相关的特征(如活跃天数、平均价格),最终为模型提供高质量特征。核心是针对不同数据源做定制化清洗,并有效提取业务相关的特征。”
6) 【追问清单】
7) 【常见坑/雷区】