想请教个机器学习PAI问题?有个地方想优化一下,暂时没想到什么好的解决办法?
关于hitrate的计算。。
base表是用户各种行为的序列。希望把后面每个版本的user_emb都加进这一个表里。
新做一版就add col,
v_i版本的 任务增加了user_emb_vi列和关联的数据,但是vi版本不知道v_j,(i<j),
v_j版本也只是增加user_emb_vj列和关联的数据。
这有什么办法实现吗?
不然改v_j版本的时候,要把前面所有版本的insert部分都加上后面的版本的列名
这个问题可以通过使用SQL的UNION ALL操作来解决。首先,你需要为每个版本的user_emb创建一个子查询,然后将这些子查询用UNION ALL连接起来。这样,你就可以得到一个包含所有版本的user_emb的表。
以下是一个示例:
-- 假设v_i和v_j是两个版本号
SELECT user_emb_vi, ... -- 其他列名
FROM base_table
WHERE version = v_i;
UNION ALL
SELECT user_emb_vj, ... -- 其他列名
FROM base_table
WHERE version = v_j;
这样,你就可以得到一个包含所有版本的user_emb的表,而不需要手动添加每一列。当你需要添加新的版本时,只需将新的子查询添加到UNION ALL后面即可。
根据您的描述,您希望在更新不同版本的user_emb时,能够自动将新添加的列添加到base表中。为了实现这个目标,您可以使用以下方法:
首先,为每个版本创建一个函数,该函数将根据当前版本生成相应的user_emb列名和关联数据。例如,对于v_i版本,您可以创建一个名为generate_user_emb_vi
的函数,该函数将返回一个包含user_emb_vi列名和关联数据的字典。
然后,在更新base表时,使用这些函数动态地生成需要添加的列名和关联数据。这样,当您更新v_j版本时,就不需要手动修改前面的插入部分了。
以下是一个简单的示例代码:
# 假设这是您的原始base表
base_table = ...
# 定义一个函数,根据版本生成user_emb列名和关联数据
def generate_user_emb(version):
if version == 'v_i':
return {
'user_emb_vi': '...',
'associated_data': '...'
}
elif version == 'v_j':
return {
'user_emb_vj': '...',
'associated_data': '...'
}
else:
raise ValueError(f"Unsupported version: {version}")
# 更新base表
for version in ['v_i', 'v_j']:
user_emb_info = generate_user_emb(version)
base_table[version] = user_emb_info['user_emb']
base_table[version + '_associated_data'] = user_emb_info['associated_data']
# 现在,base表已经包含了所有版本的user_emb列和关联数据
这样,您就可以在不修改前面插入部分的情况下,自动将新添加的列添加到base表中。
添加新的partition比较好,离线表不像数据库增加列之后,同一行的数据可以关联起来。 ,此回答整理自钉群“【EasyRec】推荐算法交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。