
1) 【一句话结论】在360安全产品用户画像构建中,特征工程需整合设备、网络等多源数据,通过标准化、时序聚合、特征选择(含特征交叉)提升特征表示能力;模型选择根据业务目标(分类/聚类),结合分布式处理优化效率,并通过交叉验证、业务指标评估,确保模型在工程规模下的性能与业务价值。
2) 【原理/概念讲解】首先,多源数据特征提取:设备数据提取操作系统(如Windows、Android)、设备型号(如iPhone 13),处理为数值/编码特征(如设备型号用OneHot,操作系统用标签编码);网络数据提取IP地理位置(通过MaxMind库匹配城市/国家)、连接频率(每日连接次数),处理为地理编码与数值特征;行为数据按天聚合(日点击次数)、周聚合(周下载量),捕捉时序模式。特征工程步骤:数据预处理(清洗异常值,如点击次数为负则修正)、标准化(Min-Max统一量纲)、特征提取(时序聚合、地理特征、设备特征)、特征选择(过滤法:方差选择法筛选高方差特征;嵌入法:L1正则化自动选择;包装法:递归消除冗余特征)。模型选择:分类任务(如恶意用户检测)用逻辑回归(线性关系,计算高效)或随机森林(非线性,抗过拟合);聚类任务(如用户分群)用K-means(球形簇,计算高效)或DBSCAN(不规则簇,无需预设簇数)。类比:特征工程是给用户画像“拆解零件”,多源数据是不同零件(设备、网络、行为),特征选择是筛选关键零件,模型是组装零件的“机器”,根据业务目标(分类/聚类)选择不同机器。
3) 【对比与适用场景】
| 模型类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 分类模型(逻辑回归/随机森林) | 监督学习,将用户分为预定义类别(如正常/恶意、高价值/低价值) | 逻辑回归:线性决策边界,计算效率高;随机森林:多棵决策树集成,抗过拟合 | 用户分类(恶意检测、价值分级) | 需标注数据,类别不平衡(如恶意用户少)时,需处理(过采样、欠采样、调整权重) |
| 聚类模型(K-means/DBSCAN) | 无监督学习,将用户划分为未标注群体(如用户分群、行为模式聚类) | K-means:计算簇中心,适合球形簇,效率高;DBSCAN:基于密度,适合不规则簇,无需预设簇数 | 用户分群(发现重度/轻度用户、异常行为群体) | 需确定簇数(K-means),簇形状不规则时DBSCAN更优;对噪声敏感 |
4) 【示例】(多源数据特征提取与聚合伪代码)
def extract_features(user_id, behavior_df, device_df, network_df):
# 设备数据特征
device_features = device_df.groupby('user_id').agg({
'os': 'first', # 操作系统
'model': 'first', # 设备型号
'last_update': 'max' # 最后更新时间
}).reset_index()
device_features = pd.get_dummies(device_features, columns=['model'])
os_mapping = {'Windows': 0, 'Android': 1, 'iOS': 2}
device_features['os'] = device_features['os'].map(os_mapping)
# 网络数据特征
network_features = network_df.groupby('user_id').agg({
'ip': 'first', # IP地址
'geo_location': 'first', # 地理位置(城市、国家)
'connection_freq': 'mean' # 平均连接频率
}).reset_index()
geo_mapping = {'北京': 1, '上海': 2, '美国': 3}
network_features['geo_location'] = network_features['geo_location'].map(geo_mapping)
# 行为数据特征(时序聚合)
behavior_features = behavior_df.groupby('user_id').agg({
'action_type': 'count', # 总操作次数
'action_type': 'nunique', # 操作类型多样性
'date': lambda x: (x.max() - x.min()).days # 活跃天数
}).reset_index()
daily_agg = behavior_df.groupby(['user_id', 'date']).size().reset_index(name='daily_active')
daily_agg = daily_agg.groupby('user_id')['daily_active'].mean()
behavior_features['daily_active'] = daily_agg
# 特征交叉(行为与设备)
behavior_features['click_os_interaction'] = behavior_features['action_type'] * device_features['os']
# 合并所有特征
features = pd.merge(behavior_features, device_features, on='user_id')
features = pd.merge(features, network_features, on='user_id')
return features
5) 【面试口播版答案】
在360安全产品用户画像构建中,特征工程首先整合多源数据(行为、设备、网络),比如设备数据提取操作系统(如Windows、Android)和设备型号,网络数据提取IP地理位置(通过库匹配城市)和连接频率,行为数据按天聚合(日点击次数)捕捉日常行为模式。然后进行标准化(Min-Max)统一量纲,去除冗余特征(如方差选择法筛选高方差特征)。模型选择根据业务目标:若要识别恶意用户(分类任务),选择逻辑回归(处理线性关系,计算高效)或随机森林(处理非线性,抗过拟合),通过5折交叉验证和调参(如C参数)优化;若要发现用户群体(聚类任务),选择K-means(适合球形簇,计算高效)或DBSCAN(适合不规则簇,无需预设簇数),结合业务指标(如准确率、聚类效果)评估。同时,为提升大规模数据处理效率,使用Spark进行特征聚合和标准化,通过分布式计算加速特征工程,确保在海量数据下模型训练的效率。
6) 【追问清单】
7) 【常见坑/雷区】