
1) 【一句话结论】用户画像系统通过整合多源数据(购买历史、浏览行为、社交标签),构建用户特征(如购买频率、品类偏好、社交兴趣),结合聚类(分用户群体)或分类(预测用户标签)模型生成用户画像,进而应用于实时推荐(即时推送)和离线推荐(批量生成),提升新品推荐精准度。
2) 【原理/概念讲解】用户画像系统是数字化推荐的核心,目的是将用户行为数据转化为可量化的特征,用于识别用户偏好。
类比:用户画像就像给每个用户建立“数字档案”,记录他们的行为和兴趣,就像给朋友做人物标签(“喜欢辣条”“经常买零食”),系统通过这些标签来推荐新品,就像朋友推荐你喜欢的零食一样。
3) 【对比与适用场景】
| 特征类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 购买频率 | 固定周期内购买次数 | 反映活跃度与忠诚度 | 高频用户识别、忠诚度分析 | 需定义周期(月/周),避免偏差 |
| 浏览时长 | 产品页面停留时间 | 反映兴趣程度 | 品类偏好识别、内容吸引力评估 | 需过滤异常值(如过长停留) |
| 社交标签 | 关注品牌/评价中的关键词 | 反映兴趣与态度 | 用户分群、新品目标用户定位 | 需文本处理(分词、去停用词) |
| 模型类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 聚类(K-means) | 无监督分群 | 自动发现用户群体 | 用户分群(新用户、活跃用户) | 需确定簇数(K值),可能过拟合 |
| 分类(逻辑回归) | 有监督标签预测 | 需标签数据,生成用户标签 | 用户标签生成(“辣条爱好者”) | 需标注数据,标签不宜过多 |
4) 【示例】(伪代码,展示数据整合、特征工程、模型训练、推荐应用)
# 数据整合(购买、浏览、社交数据)
def integrate_data(purchase_df, browse_df, social_df):
user_data = pd.merge(purchase_df, browse_df, on='user_id', how='left')
user_data = pd.merge(user_data, social_df, on='user_id', how='left')
return user_data
# 特征工程(计算购买频率、偏好品类、社交标签)
def feature_engineering(user_data):
user_data['purchase_freq'] = user_data.groupby('user_id')['order_id'].transform('count')
user_data['preferred_category'] = user_data.groupby('user_id')['category'].transform(lambda x: x.mode()[0])
user_data['social_tags'] = user_data['followed_brands'].apply(lambda x: 1 if '卫龙' in x else 0) | \
user_data['review_text'].apply(lambda x: 1 if '辣条' in x else 0)
return user_data[['user_id', 'purchase_freq', 'preferred_category', 'social_tags']]
# 聚类分用户群体
def user_clustering(features, n_clusters=3):
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=n_clusters, random_state=42)
clusters = kmeans.fit_predict(features.drop('user_id', axis=1))
user_data['user_cluster'] = clusters
return user_data
# 分类预测用户标签
def user_labeling(features, labels):
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=42)
model = LogisticRegression()
model.fit(X_train, y_train)
user_data['user_label'] = model.predict(features.drop('user_id', axis=1))
return user_data
# 实时推荐(用户浏览时推送新品)
def real_time_recommendation(user_id, user_data, new_products):
user_profile = user_data[user_data['user_id'] == user_id]
cluster = user_profile['user_cluster'].values[0]
label = user_profile['user_label'].values[0]
recommended_products = new_products[(new_products['category'] == user_profile['preferred_category'].values[0]) &
(new_products['cluster'] == cluster)][:5]
return recommended_products
# 离线推荐(批量生成推荐列表)
def offline_recommendation(user_data, new_products):
user_data['recommended_products'] = user_data.apply(lambda row: new_products[(new_products['category'] == row['preferred_category']) &
(new_products['cluster'] == row['user_cluster'])][:3].product_id.tolist(), axis=1)
return user_data
5) 【面试口播版答案】
“面试官您好,针对用户画像系统设计,核心思路是通过整合多源数据(购买历史、浏览行为、社交标签),构建用户特征(如购买频率、品类偏好、社交兴趣标签),然后结合聚类(分用户群体)和分类(预测用户标签)模型生成用户画像。具体来说,特征工程方面,购买频率反映用户活跃度,偏好品类识别用户核心需求,社交标签捕捉用户兴趣态度。模型选择上,聚类用于用户分群(比如高频购买用户、新用户),分类用于用户标签预测(如‘辣条爱好者’)。推荐应用分为实时和离线:实时推荐是在用户浏览时即时推送相关新品,比如用户刚浏览了辣条页面,系统根据用户画像推荐新品;离线推荐是批量生成推荐列表,用于邮件或推送,比如每周为用户推送个性化新品推荐。这样能提升新品推荐的精准度和转化率。”
6) 【追问清单】
7) 【常见坑/雷区】