结合基于规则和机器学习的方法构建强大的混合系统

经过这些年的发展,我们都确信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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/6828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nacos本地启动单节点

1.官网下载 Releases alibaba/nacos GitHub 解压文件 unzip nacos-server-2.2.1.zip cd /Users/xiaosa/dev_tools/nacos/bin sh startup.sh -m standalone 启动不成功&#xff0c;报错入如下 原因是下面的配置为空。位置在nacos/config目录下的application.properties文件…

【英语】大学英语CET考试,导学规划与听力题答题技巧笔记(1-2)

文章目录1、课程规划和导学1.1 试卷结构和备考目标1.2 单词&#xff0c;听力&#xff0c;阅读&#xff0c;真题学习方法2、听力技巧课1&#xff08;导学与发音&#xff09;3、听力技巧课2&#xff08;答题技巧&#xff01;重要&#xff01;&#xff09;1、课程规划和导学 主讲…

C语言中宏和函数的9个区别,你都了解吗?

C语言中的宏和函数是非常相似的&#xff0c;它们都可以完成类似的功能。比如&#xff0c;想要求2个数的较大值&#xff0c;使用宏的写法是&#xff1a; // 宏的定义 #define MAX(x, y) ((x)>(y)?(x):(y))// 使用 int m MAX(10, 20);使用函数的写法是&#xff1a; // 函数…

[Golang从零到壹] 1.环境搭建和第三方包管理

文章目录安装go环境go.mod第一种情况&#xff0c;选择GOPATH第二种情况&#xff0c;不选择GOPATH(推荐)GO111MODULEgo module可执行文件位置安装go环境 go在安装时选择好安装目录完成安装之后&#xff0c;还需要设置两个环境变量&#xff1a;GOROOT、GOPATH GOROOT即go的安装…

UnQLite入门

本文介绍UnQLite的基本使用&#xff0c;包括增删改查&#xff0c;事务ACID 文章目录UnQLite介绍UnQLite常用接口函数返回码DemoKey/Value存储数据库游标UnQLite介绍 UnQLite简介 UnQLite是&#xff0c;由 Symisc Systems公司出品的一个嵌入式C语言软件库&#xff0c;它实现了一…

Scrapy-核心架构

在之前的文章中&#xff0c;我们已经学习了如何使用Scrapy框架来编写爬虫项目&#xff0c;那么具体Scrapy框架中底层是如何架构的呢&#xff1f;Scrapy主要拥有哪些组件&#xff0c;爬虫具体的实现过程又是怎么样的呢&#xff1f; 为了更深入的了解Scrapy的相关只是&#xff0…

Chatgpt 指令收集

在使用 ChatGPT 时&#xff0c;当你给的指令越精确&#xff0c;它的回答会越到位&#xff0c;举例来说&#xff0c;假如你要请它帮忙写文案&#xff0c;如果没给予指定情境与对象&#xff0c;它会不知道该如何回答的更加准确。 一、写报告 1、我现在正在 [报告的情境与目的]。…

低代码平台应该具备哪些能力?

什么样的低代码无代码平台才算好的平台呢&#xff0c;Gartner 共列出了低代码平台的11个关键能力维度&#xff1a; 1、易用性。易用性是标识低代码平台生产力的关键指标&#xff0c;是指在不写代码的情况下能够完成的功能的多少。 2、用户体验。一般来说&#xff0c;独立软件开…

2023Q2押题,华为OD机试用Python实现 -【机智的外卖员】

最近更新的博客 华为 od 2023 | 什么是华为 od,od 薪资待遇,od 机试题清单华为 OD 机试真题大全,用 Python 解华为机试题 | 机试宝典【华为 OD 机试】全流程解析+经验分享,题型分享,防作弊指南华为 od 机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目…

Java中的死锁

1.什么是死锁 死锁&#xff1a;多个线程同时被阻塞&#xff0c;它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期的阻塞&#xff0c;线程不可能正常终止。 【举个栗子】滑稽老铁和女生去吃饺子。吃饺子需要醋和饺子。 滑稽老哥抄起了酱油瓶&#xff0c;女生抄起…

【技术教程】在EasyCVR平台中打开第三方桌面端应用的实现过程

EasyCVR视频融合平台基于云边端协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台支持海量视频汇聚管理&#xff0c;可支持多协议接入&#xff0c;包括市场主流标准协议与厂家私有协议及SDK&#xff0c;如&#xff1a;国标GB28181、RTMP、RTSP/Onvif、海…

vue 引入高德地图当前定位失败 Get ipLocation failed.Geolocation permission denied.

getCurrentPosition 返回的 message 原因解析 &#xff1a; Get ipLocation failed&#xff1a;IP 精确定位失败&#xff0c;精确IP定位服务目前无法完全覆盖所有用户 IP&#xff0c;失败率在5%左右。sdk 定位失败&#xff1a;检查 sdk的 key 是否设置好&#xff0c;以及 webv…

如何远程连接SQLServer数据库

如何远程连接SQLServer数据库 准备工作 1.打开 选中如下的连接方式 连接成功后就会出出现 2.连接成功后&#xff1a;右键设置属性 安全性设置&#xff1a;如下图所示 设置连接属性&#xff1a; 设置完成之后点击完成&#xff01;&#xff01;&#xff01; 3.打开 启动sqlSe…

华为OD机试用JS实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q2 押题)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:查找树中的元素 or 查找二叉树…

2023年南京晓庄学院五年一贯制专转本食品科学与工程专业考试大纲

2023年南京晓庄学院五年一贯制专转本食品科学与工程专业考试大纲 专业科目一 &#xff1a;微生物学基础 【参考书目】《食品微生物学》&#xff0c;杨玉红主编&#xff0c; 中国质检 出版社/中国标准出版社&#xff0c;2017(十三五高职高专院校规划教材) 【考试大纲】 ( 一) 考…

jsp054ssm高校学生成绩管理系统hsg421010A5程序

系统主要包含了学生信息管理、成绩信息管理等多个功能模块。下面分别简单阐述一下这几个功能模块需求。不同的权限对应相应的功能模块的需求&#xff0c;管理员权限的级别是最高的&#xff0c;所以所对应的需求是最多的&#xff0c;下面根据不同的权限分别简单阐述一下各个权限…

神奇智能搜索引擎:perplexity智能搜索引擎(ChatGPT与Edge合体——联网版chatGPT)

目录前言一、Perplexity AI网站介绍二、优点介绍2-0、界面介绍2-1、纯净、时效性、来源说明2-2、基于AI对话形式的搜索引擎三、使用方法介绍总结前言 ChatGPT背后的语言大模型OpenAI GPT 3.5&#xff0c;和微软的必应检索系统整合在一起&#xff1b;同时吸取这二者的长处&#…

Python爬虫|西安地铁客流人次获取与分析(一)

一、目标 通过Python编写爬虫程序,爬取西安地铁发布的客流数据,并保存到CSV文件中,并进行数据可视化与分析。 本次使用的库包括:requests、BeautifulSoup、xpath、csv、json、Pycharts等。 二、爬取思路分析 1、WB网页版 打开XLWB主页网址。 图1.新浪微博手机端网址 …

智慧水利整体解决方案2022(ppt可编辑)

业务场景与痛点分析 聚焦场景&#xff1a; 水工监控、水利监管、城市治水、基层防汛业务场景。 痛点分析&#xff1a; 水工监控中&#xff0c;全国水库共有9.8万座&#xff0c;其中超过50%处于病险状态&#xff1b; 水利监管中&#xff0c;运行管理薄弱、设备老化、预报预警不…

弱监督语义分割的token对比笔记

Token Contrast for Weakly-Supervised Semantic Segmentation 摘要 目的&#xff1a; 使用图像级标签的弱监督语义分割(WSSS)通常利用类激活映射(CAM)生成伪标签。受CNN局部结构感知的限制&#xff0c;CAM通常不能识别整体目标区域。虽然最近的视觉转换器(ViT)可以弥补这一…