在OCI OML中使用关联规则训练模型时遇ORA-40104错误求助
ORA-40104 关联规则模型训练错误解决办法
ORA-40104属于训练数据不符合模型构建要求的错误,针对OCI机器学习(OML)关联规则模型的场景,可从以下方向排查解决:
检查训练数据格式与有效性
关联规则模型要求输入为事务型数据,每个CUST_ID(case_id)需对应多条PRODUCT_NAME(物品)记录,需验证:- 无空值:确保
CUST_ID和PRODUCT_NAME字段无NULL值,执行SQL验证:
若结果大于0,需清理空值数据。SELECT COUNT(*) FROM SALES_TRANS_CUST WHERE CUST_ID IS NULL OR PRODUCT_NAME IS NULL; - 事务完整性:每个
CUST_ID至少对应2个不同PRODUCT_NAME,否则无法生成关联规则,执行SQL验证:
若有结果,需过滤这些无效事务或补充对应数据。SELECT CUST_ID, COUNT(DISTINCT PRODUCT_NAME) AS item_count FROM SALES_TRANS_CUST GROUP BY CUST_ID HAVING COUNT(DISTINCT PRODUCT_NAME) < 2;
- 无空值:确保
验证配置参数合理性
当前设置的ASSO_MIN_SUPPORT='0.04'(4%支持度)可能过高,导致无符合条件的物品组合:- 先统计单个物品的支持度,确认是否有物品满足最低要求:
若结果为空,需降低SELECT PRODUCT_NAME, COUNT(DISTINCT CUST_ID)/ (SELECT COUNT(DISTINCT CUST_ID) FROM SALES_TRANS_CUST) AS support FROM SALES_TRANS_CUST GROUP BY PRODUCT_NAME HAVING support >= 0.04;ASSO_MIN_SUPPORT(如设为0.01)或扩大数据集。
- 先统计单个物品的支持度,确认是否有物品满足最低要求:
确认OML数据对象正确性
- 若
SALES_TRANS_CUST是OML DataFrame,通过SALES_TRANS_CUST.head()查看数据结构是否符合预期; - 若为数据库表,确认表名正确且当前OML用户拥有读取权限。
- 若
简化配置测试
先使用更低的参数阈值尝试训练,验证模型能否正常运行:setting = {'ASSO_MIN_SUPPORT':'0.01', 'ASSO_MIN_CONFIDENCE':'0.05', 'ASSO_MAX_RULE_LENGTH': '2', 'ODMS_ITEM_ID_COLUMN_NAME':'PRODUCT_NAME'} ar_mod = oml.ar(**setting) ar_mod = ar_mod.fit(SALES_TRANS_CUST, case_id = 'CUST_ID')若成功训练,再逐步调高参数至业务需求范围。
内容的提问来源于stack exchange,提问作者Radheya
相关产品推荐
相关产品推荐

