通过这些年的倒退,咱们都确信 ML 即便不能体现得更好,至多也能够在简直所有中央与前 ML 时代的解决方案相匹配。比如说一些规定束缚,咱们都会想到是否把它们替换为基于树的 ml 模型。然而世界并不总是黑白分明的,尽管机器学习在解决问题上必定有本人的地位,但它并不总是最好的解决方案。基于规定的零碎甚至能够胜过机器学习,特地是在可解释性、健壮性和透明度至关重要的畛域。
在本文中,我将介绍一些理论的案例,以及如何将手动规定和 ML 联合使得咱们的计划变得更好。
基于规定的零碎
基于规定的零碎是通过预约义规定来为决策提供反对,零碎依据存储的规定评估数据,并依据映射执行特定操作。
上面是几个例子:
欺诈检测:在欺诈检测中,基于规定的零碎可用于依据预约义规定疾速标记和考察可疑交易。
比如说国际象棋的作弊者,他们的的根本作法是在另一个窗口中装置计算机象棋应用程序,应用程序进行对弈,对于程序来说无论多简单,每一步都须要 4-5 秒能力实现。所以增加“阈值”来计算玩家每一步的工夫,如果在浮动不大就有可能被判断为是作弊者,如下图所示:
医疗保健行业:基于规定的零碎可用于治理处方和避免用药谬误。它们还能够十分有用地帮忙医生依据先前的后果为患者开出额定的剖析处方。
供应链治理:在供应链治理中,基于规定的零碎可用于生成低库存警报、帮忙治理到期日期或新产品推出。
基于机器学习的零碎
机器学习 (ML) 零碎应用算法从数据中学习并做出预测或采取行动,且无需明确编程。机器学习零碎应用通过大量数据训练取得的常识来对新数据进行预测和决策。随着更多数据用于训练,ML 算法能够进步其性能。机器学习零碎包含自然语言解决、图像和语音辨认、预测剖析等。
欺诈检测:银行可能会应用机器学习零碎从过来的欺诈交易中学习并实时辨认潜在的欺诈流动。或者,它可能会对系统进行逆向工程并寻找看起来十分“异样”的交易。
医疗保健:医院可能会应用 ML 零碎来剖析患者数据,并依据某些 X 射线预测患者患某种疾病的可能性。
比照
基于规定的零碎和 ML 零碎都有各自的长处和毛病
基于规定的零碎的长处很显著:
- 易于了解和解释
- 疾速实现
- 易于批改
- 强壮的
毛病:
- 波及大量变量的问题
- 约束条件多的问题
- 限于现有规定
基于 ml 的零碎的长处也很显著
- 自主学习零碎
- 解决更简单问题的能力
- 与基于规定的零碎相比,缩小了人为干涉,进步了效率
- 通过一直学习,灵便地适应数据和环境的变动
毛病:
- 须要的数据,有时很多
- 仅限于之前看到的数据 ML
- 认知能力无限
通过比照咱们发现,这两种零碎的优缺点并不抵触,并且是互补的,那么有没有一种办法能够将他们的长处联合起来呢?
混合型零碎
混合系统,联合了基于规定的零碎和机器学习算法,最近变得越来越风行。它们能够提供更强壮、精确和无效的后果,特地是在解决简单问题时。
让咱们来看看能够应用租赁数据集实现的混合系统:
特色工程:将楼层转换为三个类别之一:高、中或低,具体取决于建筑物的楼层数。这样能够进步 ML 模型的效率
硬编码规定能够用作特色工程过程的一部分,以辨认和提取输出数据中的重要特色。例如,如果问题畛域清晰明确,规定能够很容易地而精确地定义,硬编码规定能够用来创立新特色或批改现有特色,以进步机器学习模型的性能。尽管硬编码规定和特色工程是两种不同的技术,但它们能够联合应用以进步机器学习模型的性能。硬编码规定能够用于创立新特色或批改现有特色,而特色工程能够用于提取不易通过硬编码规定捕捉的特色。
后处理:四舍五入或归一化最终后果。
硬编码规定能够作为后处理阶段的一部分来批改机器学习模型的输入。例如,如果机器学习模型输入一组预测后果与某些已知规定或约束条件不统一,硬编码规定能够用来批改预测后果,使其合乎规定或约束条件。比方过滤或平滑等后处理技术能够通过打消噪声或谬误,或进步预测的整体准确性来精密机器学习模型的输入。当机器学习模型输入概率预测或输出数据存在不确定性时,这些技术尤其无效。在某些状况下,后处理技术也能够用于应用额定信息加强输出数据。例如,如果机器学习模型是在无限数据集上训练的,后处理技术能够用来从内部起源(如社交媒体或新闻提要)中提取额定的特色,以进步预测的准确性。
案例
医疗保健
让咱们来看看心脏病的数据:
如果咱们用随机森林来预测指标类:
clf=RandomForestClassifier(n_estimators=100, random_state=random_seed
X_train, X_test, y_train, y_test=train_test_split(df.iloc[:, :-1], df.iloc[:, -1], test_size=0.30, random_state=random_seed
)
clf.fit(X_train, y_train))
这里抉择随机森林的起因之一是它的构建特色重要性能力。上面能够看到用于训练的特色的重要性:
看看后果:
y_pred=pd.Series(clf.predict(X_test), index=y_test.index
cm=confusion_matrix(y_test, y_pred, labels=clf.classes_)
conf_matrix=ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=clf.classes_)
conf_matrix.plot())
f1_score(y_test, y_pred): 0.74
recall_score(y_test, y_pred): 0.747
这时一位心脏病专家看到了你的模型。基于他的教训和畛域常识,他认为地中海贫血特色 (thal) 比下面所示的要重要得多。所以咱们决定建设一个直方图并查看后果。
而后指定一个强制性规定
y_pred[X_test[X_test["thal"] == 2].index] = 1
后果的混同矩阵变成这样:
f1_score(y_test, y_pred): 0.818
recall_score(y_test, y_pred): 0.9
后果有了很大的晋升。这就是畛域常识在评估患者得分方面施展了重要作用。
欺诈交易
上面的数据集是银行欺诈交易。
数据集高度不均衡:
df["Class"].value_counts()
0 28431
1 4925
为了创立规定,咱们查看特色的散布箱线图:
咱们们要编写一个本人的 HybridEstimator 类,他将作为咱们手动规定的预估器:
fromhulearn.classificationimportFunctionClassifier
rules= {"V3": ("<=", -2),
"V12": ("<=", -3),
"V17": ("<=", -2),
}
defcreate_rules(data: pd.DataFrame, rules):
filtered_data=data.copy()
forcolinrules:
filtered_data[col] =eval(f"filtered_data[col] {rules[col][0]}{rules[col][1]}")
result=np.array(filtered_data[list(rules.keys())].min(axis=1)).astype(int)
returnresult
hybrid_classifier=FunctionClassifier(create_rules, rules=rules)
咱们能够比拟纯基于规定的零碎和 kNN 办法的后果,这里应用 kNN 的起因是,它能够解决不均衡数据:
能够看到,咱们只写了 3 个规定,就比 KNN 模型的体现好
总结
咱们这里的例子可能并不十分的确切,然而它足以阐明,混合模型提供了理论的益处,例如疾速施行、对异样值的稳健性和减少的透明度。在将业务逻辑与机器学习相结合时,它们是无益的。例如,医疗保健中的混合规定 -ML 零碎能够通过联合临床规定和剖析患者数据的机器学习算法来诊断疾病。机器学习可能在很多工作上获得杰出的后果,然而它也须要畛域常识的补充。畛域常识能够帮忙机器学习模型更好地了解数据,并更精确地进行预测和分类。
混合模型能够帮忙咱们将畛域常识和机器学习模型联合起来。混合模型通常是由多个子模型组成,其中每个子模型都针对特定的畛域常识进行了优化。这些子模型能够是基于硬编码规定的模型,也能够是基于统计办法的模型,甚至能够是基于深度学习的模型。
混合模型能够利用畛域常识来领导机器学习模型的学习过程,从而进步模型的准确性和可靠性。例如,在医学畛域中,混合模型能够联合医生的专业知识和机器学习模型的能力,以诊断患者的疾病。在自然语言解决畛域,混合模型能够联合语言学常识和机器学习模型的能力,以更好地了解和生成自然语言。
总之,混合模型能够帮忙咱们将畛域常识和机器学习模型联合起来,从而进步模型的准确性和可靠性,并且在各种工作中都有宽泛的利用。
https://avoid.overfit.cn/post/b18da20b320a4471b9f0f11f7c59086a