我有这样一个问题:客户手工创建订单,这可能是错误的。提交错误的订单代价高昂,这就是我们努力降低错误率的原因。
我需要检测导致错误的因素,以便创建新规则,例如产品“A”和类型“B”不能放在一起。所有解释变量都是分类的。
我有2个问题:
下面是一个示例数据集和我采用的一种简单方法——找到错误比例高的变量作为规则提出。我手工创建了一个交互项(基于先验知识,但我可能遗漏了其他项)。
我也尝试过使用分类模型(LASSO、决策树、RF),但我遇到了一个问题:1. 高维度(尤其是当包含许多交互时),2. 提取简单规则,因为模型即使使用正则化也使用许多系数。
import pandas as pd
# Create sample dataset for task
df = pd.DataFrame(data={'error':[0,1,0,0,0,0,0,1,1,1],
'product':[1,2,1,2,2,3,4,2,2,2],
'type':[1,1,2,3,3,1,2,1,4,4],
'discount_level':[5,3,3,4,1,2,2,1,4,5],
'extra1':[1,1,1,2,2,2,3,3,3,3,],
'extra2':[1,2,3,1,2,3,1,2,3,1],
'extra3':[6,6,9,9,8,8,7,7,6,6]
})
# Variable interaction based on prior knowledge
groups = df['product_type'] = df['product'].astype(str) + '_' + df['type'].astype(str)
X = df.drop('error', axis=1)
# Find groups with high portion of errors
groups_expl = pd.DataFrame()
for col in X.columns:
groups = df.groupby(col).agg(count_all=('error', 'count'),
count_error=('error', 'sum'))
groups['portion_error'] = groups['count_error'] / groups['count_all']
groups['column'] = col
# Save groups with high portion of errors
groups_expl = pd.concat([groups_expl, groups.loc[groups['portion_error']>0.8, :]], axis=0)
groups_expl['col_val'] = groups_expl.index
print(groups_expl)
谢谢你的帮助!