数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度

简介: 数据分享|R语言机器学习预测案例合集:众筹平台、机票折扣、糖尿病患者、员工满意度


在数据驱动的当代社会,机器学习已成为揭示复杂现象、预测未来趋势的重要工具。特别是在商业决策、健康管理、交通出行等多个领域,机器学习技术的应用日益广泛点击文末“阅读原文”获取完整数据

相关视频

image.png

image.png

image.png

本文集合了多个基于R语言、python的机器学习预测案例,涵盖了众筹平台筹款结果、机票折扣预测、糖尿病患者分类以及员工满意度预测等多样化场景,旨在帮助客户展示机器学习在不同领域中的实际应用价值和潜力。

Kickstarter众筹平台筹款结果预测

数据变得越来越重要,其核心应用“预测”也成为互联网行业以及产业变革的重要力量。众筹利用互联网和 SNS 传播的特性,让小企业、艺术家或个人对公众展示他们的创意,争取大家的关注和支持,进而获得所需要的资金援助。随着互联网的发展,众筹成为了现代社会越来越重要的筹款模式。基于项目数据提前预测筹款结果具有较大价值。

解决方案

任务/目标

基于众筹项目基本数据,预测此项目筹款结果是否成功

数据 预处理

将众筹项目数据进行缺失值与极端值处理,同时合并较小分组等,数据预处理便于后续更好进行数据建模分析。


8e373d04c2e7c973faa4a8cc4a4c7219.png

69591ff7bd2b5be4b12566808c6a02ce.png

42a475d65c9e60772eea5057b4a4ab26.png

数据可视化

在对数据进行建模前,我们可以先对数据进行可视化描述初步判断数据分布特征,便于后续模型选择。

e959a44dfc2e97cb0a4fcc4e39150de2.png

接下来看各个种类项目项目设置的奖励物品层次数量和项目预设的目标与最终是否成功的关系散点图。


38c6b678505310d5305937d7688b0867.png



构造

我们大致有如下训练样本(只列举部分特征)。

94679b0c54df318f957e9ba312d81cc2.png

划分训练集和测试集

为了更真实的测试模型效果,以时间来切分训练集和测试集。具体做法如下:随机抽取0.7数据作为训练数据集,0.3数据作为测试数据集。

最终得到实验数据规模如下:

52050aaf4e8be2f48555a87c75d8fdcd.png

建模

Logistic Regression

逻辑回归常用于二分类建模分析,因此适用于本文探究是否成功的建模场景。最终交叉矩阵如下所示:

c3e8088cee1b7065af87cf9682368a16.png KNN Method

KNN 算法的思想是基于某种距离度量找出训练 集中与其最靠近的 k 个实例点,然后基于这 k 个最 近邻的信息来进行预测。对本项目数据分析,找出 最优的 K 值为 9,利用此 K 值建立模型。

Adaboost 算法

Boosting 算法是一种重要的集成学习技术,而Adaboost 是其中的优秀代表。Adaboost 是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。

在此案例中,三个模型准确度都较高,都在0.9以上,其可视化图形如下:

 

Logistic Regression

最终交叉矩阵如下所示:

c3e8088cee1b7065af87cf9682368a16.png

准确度为0.96。

KNN Method

4b1e747e6447dd5d21b4df4eea00b16a.png 准确度为0.94。

Adaboost 算法

6c6cd13b0d19061dc81c450083954f2f.png

0cfb1bca6351bdd58c611cf0d27d4865.png


准确度为0.97。

 

可以看出,是否成功的预测值与真实值在绝大部分的情况下是一致的。

但是评估效果要综合考虑,需要参考业务对接,预测精度,模型可解释性和产业链整体能力等因素综合考虑;不能简单作为企业利润增加的唯一标准我们的经验是,预测结果仅作为参考一个权重值,还需要专家意见,按照一定的权重来计算

繁忙干线中的机票折扣预测——以北京到上海的航班为例

对于繁忙干线上的机票而言,折扣有着不同于其余航线上的特征,如何根据其特征选择合适的模型;在实际的构建模型和预测的过程中,数据量过大成为一个严重的问题,因此合理科学的划分数据成为了必须要解决的问题。

研究方法分为 3 个主要步骤:

  1. 数据清洗与特征提取。
  2. 问题转化与模型运用
  3. 性能的衡量与优化

 

首先就是数据的预处理,本项目所使用的数据集不存在缺失数据的问题,但在探索中发现一部分数据存在错误(如较高的价格对应的折扣为 0等),对于这部分较为明显的错误数据直接去除;对于可识别性的属性(如订单号)和一些与研究不相关的属性(如出发、到达机场、订票时间等)同样不予考虑。为了方便后期的分析,将起飞时间分成了起飞日期和具体时间两个特征。对于航班号,提取了代表航空公司的前两位作为一个新特征。在探索数据时发现,现有数据中中

转机场这一属性只有空和“LYA”两种情况,所以讲其转化成更方便处理的布尔量。另外,将2019 年所有节假日放入文档,根据起飞日期对是否是节假日做了判断,并放入数据集中,对每个航班是否处于节假日做了判断。而后通过以上属性对折扣的可视化及相关性分析,进一步去除了数据量较少的类别,同样也证实了其对折扣是高度相关的,这与相关文献的研究相吻合,证明了用这些变量来预测机票折扣的合理性。

解决数据量过大有两种思路,一是随机抽取一部分数据划分训练集测试集。另一种思路就是预设用户使用场景,在用户确定出行时间以后,提前购买的天数和自己想要购买的舱位必然是确定的信息,不妨使用提前天数和舱位对数据进行划分。显然第一种方法可以将影响变量更全面的考虑进去,第二种方法更为贴近实际情况,但却无法考虑提前天数和舱位对其的影响。在处理后,不同种类的数据量降低到了几千条,适合进行操作。

 

对于本项目中的研究数据来说,并不满足使用时间序列的充分条件。所以本文先采用线性回归进行预测,而后选用集成算法来提升准确度。在线性回归模型中,先将所有特征加入模型进行回归,发现 F 统计量呈极高度显著,但反映回归系数显著性的 t 统计量对于某些变量不显著,在第二次线性回归中,将不显著的变量(p值>0.05)去除,再次得到回归结果,此时所有变量呈高度显著,由此得出线性回归方程,从而在测试集上得到预测结果。

集成算法可以分为 bagging 和 boosting 两种集成方式。Bagging 独立训练(可并行)多个基分类器,基分类器相互之间独立,然后用方法(投票法、平均法、stack⁃ing)把基分类器集成起来。代表算法为随机森林,也即本文使用的集成算法。

因数据量较大,先提取部分数据(去除相关性不高的变量),使用随机森林模型对不同参数的重要程度做了模拟。

11352fda0218ae13a8a39920c57bb016.png 可以看出,在随机森林重要性度量中,航空公司的重要性最高,其次是 OTA 平台,再次是提前购买天数。

08ee55cc65a9c8eb3f6321c35d45f992.png

错误率在树的数目在 100 左右时达到一个相对最优值,因此保持了 mtry 值的保持默认,ntree为 100。

对比随机森林和线性回归模型的 MAE 及 RMSE,可以看到随机森林算法在准确度上表现较为优秀。通过分析各个变量对模型的贡献程度,我们可以大致得到影响北京上海机票折扣的重要变量,进而合理地为顾客做推荐,选择合适的 OTA 平台对于购买到合适折扣的机票尤为重要;对于价格敏感的顾客来说,可以选择折扣较大的航空公司;针

对北京上海的机票而言,提前购买天数影响因素较小,所以顾客可以无需考虑提前安排行程。模型还有进一步优化的空间,可尝试模型融合来提高预测准确度。

基于机器学习和神经网络对糖尿病患者二分类

现如今,用机器学习中的ML经典算法以及各种神经网络制作分类器,这些技术已经相对成熟。

解决方案

任务/目标

根据现有的被检者特征以及个体的诊断结果制作分类器,并选出一个最优分类器出来。

数据源准备

数据是经过处理过的。定量变量的异常值用样本特征值(平均值、中位数等)或者拉格朗日插值或者线性模型修改过,缺失值都被填补过(当然,个体缺失值过多便直接删除)。

特征转换

基于这些特征去构建分类器,前期工作是直接调用决策树和随机森林去进行变量筛选,发现最终筛选出来的显著特征不超过三个(以显著性0.1去筛选,第一张图为决策树筛选图,第二张图为随机森林筛选图):

6ced7f097a8a9eb6189f05fc2bc79d0b.png

5cca703bbaee0c83494b2ea6b0c28e54.png

并且,做出来的分类效果并不理想,在不设置随机种子的情况下大部分分类器的ACC还不超过60%,特征维度太低,数据不容易分开,所以特征选择这一工作在进行完之后被跳过。

构造

以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。


a296ae2b4c7b389fb802787b3e97c127.png

划分训练集和测试集

设定随机种子,先随机选择其中的600个个体作为训练集,之后分开特征与分类结果。

建模

BP 神经网络, 最原始的神经网络模型,理论上只要隐藏层的层数大于1,便可逼近任意一个函数,所以,我们可以根据这一性质制作出我们想要的分类器

概率神经网络(PNN

最简单的概率神经网络为高斯判别模型,判别思路与PNN一样,严格来讲PNN比高斯判别更为广义,PNN只有一层隐藏层,隐藏层的神经元个数为样本个数,不仅可以做二分类分类器、也能做多分类分类器。

支持向量机(SVM)

SVM原理很简单,只需找到一个超平面将两类样本分隔开即可,使得支持向量(离超平面最近的那个样本)与超平面的距离达到最大,也被广泛用于二分类问题。

费雪线性判别

将两类样本通过线性变换映射到一维直线上(降维),计算两类样本映射后的平均值,通过平均值之间的欧式距离达到最大求出该线性变换,从而得到一条直线,判断样本映射后距离两类样本均值的大小,做出分类。

模型优化

1.    BP网络不需要用来优化,其作用就是用来模型比对的;PNN其中需要估计的参数为平滑性参数,从数理统计的角度来看,平滑性参数为正态分布的协差阵,在这里我采用矩估计参数优化平滑性参数,这一优化是有大数定理作为保证的。(即便该方式优化效果已取得不错的成绩,该项目至今还在进行,对平滑性参数作贝叶斯估计、以及条件似然估计)

  1. 传统SVM估计超平面的处理方法是理由凸优化进行问题转化,进而估计超平面,实际数据远没有理论那么理想,所以,一反常态,python本身能做SVM,但无法改变其中已封装好的包的算法,所以我用excel做了一套SVM分类器,对其超平面采用演化算法以及非线性算法直接进行求解。

1.PNN在给定平滑性参数都为0.1的情况下ACC正确率为67.7%,用矩估计估计的平滑性参数ACC正确率高达81.3%,即使重新设定随机种子,平均正确率也不低于80%,这次优化是一个质的飞跃。

2.SVM效果并不是很理想,excel功能强大,弊端在于处理数据量大的数据集,效率过于低下,我并没有放弃SVM算法的改进,现阶段还在进行凸优化中KKT条件的代码编写,以便对超平面直接求解。

3.BP神经网络ACC正确率为77%,远不及改进过后的矩估计PNN。

4.费雪判别训练集ACC为78.4%,稳定在78%左右。

综上所述,矩估计优化后的PNN分类器优化效果是这几个模型中最好的。

预测分析·员工满意度预测

员工满意度又称雇员满意度,是团队精神的一种参考,也就是个体对他所从事的工作的一般态度。是组织成员对其工作特征的认知评价,是员工通过比较实际获得的价值与期望获得的价值之间的差距后,对工作各方面满足与否的态度和情绪反映。通过持续的员工满意度调查,企业可以对自身管理中所存在的问题进行“诊断”,进而系统地解决问题,改善企业的管理,提高生产效率、降低人员流失率。因此,科学的员工满意度分析对于提高企业管理的有效性意义重大,但人是多思维生物,需要考虑到各种多条件。用机器学习达到精准计算的实现很困难,预测的精准性永远是痛点。

解决方案

任务/目标

通过持续的员工满意度调查,运用多种数据源分析实现精准销量预测。

数据源准备

沙子进来沙子出,金子进来金子出。无数据或数据质量低,会影响模型预测效果。在建立的一个合理的模型之前,对数据要进行收集,搜集除已有调查数据之外的额外信息(比如病假情况,不可因素的离职等),再在搜集的数据基础上进行预处理。

有了数据,但是有一部分特征是算法不能直接处理的,还有一部分数据是算法不能直接利用的。

特征转换

把不能处理的特征做一些转换,处理成算法容易处理的干净特征举例如下:

是否有工伤,用数字0表示没有,数字1表示有。

过去5年是否升职,用数字0表示没有,数字1表示有。

构造

以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。

499ccc99d6366a60a1c913ac7278f76c.png

划分训练集和测试集

考虑到最终模型会预测将来的某时间段的销量,为了更真实的测试模型效果,以统计序号来切分训练集和测试集。具体做法如下:假设我们有序号15000以内相关数据。以1-12000的调查人数据作为训练,12001-15000的数据作为测试。

建模

a)       模型选用随机森林和支持向量机(SVR);

b)      模型训练结束后,使用训练集来验证模型的预测准确度,准确度以mse计算;

c)       对测试集进行预测,在文档中展示部分预测结果;

模型优化

1.相关数据显示

f0456f983dea4bb981117b885410cca1.png

2.各因素的可视化结果

满意度

ca31345fffe56c4211c3a97a28faacaa.png

b. 项目数量

50bee23b31c77530792eb213a5c0513a.png c. 工龄

2cd6d990ec6f19ff44694a2714cb80eb.png

该厂96.27%的员工工龄在2~6。

d. 福利

bb2360c6536bbb1a579b30454ac5773a.png e.

83da308c00e21525a40c159710521eda.png

四种满意度数据分布图:

e398ea3905a36b2fdfebb4730269bb65.png


员工的工龄集中于2~5年,大于5以上的工龄数量变少,说明该公司员工的留存率低。

评价非常不满意的员工中,负责项目数量为6个或7个(多),工龄集中在4年5年,并且福利待遇偏低。同时评价不满意的员工中负责2个项目的人数增多,评价为满意和非常满意的员工的项目项目数集中于3到5个。公司应考虑设定负责项目数量的上限,和调整相对应的福利体系。

相关文章
|
5月前
|
机器学习/深度学习 数据采集 算法
量子机器学习入门:三种数据编码方法对比与应用
在量子机器学习中,数据编码方式决定了量子模型如何理解和处理信息。本文详解角度编码、振幅编码与基础编码三种方法,分析其原理、实现及适用场景,帮助读者选择最适合的编码策略,提升量子模型性能。
436 8
|
存储 人工智能 大数据
AI开发新范式,PAI模型构建平台升级发布
本次分享由阿里云智能集团产品专家高慧玲主讲,聚焦AI开发新范式及PAI模型构建平台的升级。分享分为四个部分,围绕“人人可用”和“面向生产”两大核心理念展开。通过降低AI工程化门槛、提供一站式全链路服务,PAI平台致力于帮助企业和开发者更高效地实现AI应用。案例展示中,介绍了多模态模型微调在文旅场景的应用,展示了如何快速复现并利用AI解决实际问题。最终目标是让AI技术更普及,赋能各行业,推动社会进步。
|
10月前
|
机器学习/深度学习 算法 数据挖掘
PyTabKit:比sklearn更强大的表格数据机器学习框架
PyTabKit是一个专为表格数据设计的新兴机器学习框架,集成了RealMLP等先进深度学习技术与优化的GBDT超参数配置。相比传统Scikit-Learn,PyTabKit通过元级调优的默认参数设置,在无需复杂超参调整的情况下,显著提升中大型数据集的性能表现。其简化API设计、高效训练速度和多模型集成能力,使其成为企业决策与竞赛建模的理想工具。
370 12
PyTabKit:比sklearn更强大的表格数据机器学习框架
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
510 88
|
10月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
机器学习/深度学习 数据采集 算法
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
机器学习在生物信息学中的创新应用:解锁生物数据的奥秘
960 36
|
机器学习/深度学习 人工智能
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
Diff-Instruct 是一种从预训练扩散模型中迁移知识的通用框架,通过最小化积分Kullback-Leibler散度,指导其他生成模型的训练,提升生成性能。
345 11
Diff-Instruct:指导任意生成模型训练的通用框架,无需额外训练数据即可提升生成质量
|
机器学习/深度学习 传感器 运维
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
本文探讨了时间序列分析中数据缺失的问题,并通过实际案例展示了如何利用机器学习技术进行缺失值补充。文章构建了一个模拟的能源生产数据集,采用线性回归和决策树回归两种方法进行缺失值补充,并从统计特征、自相关性、趋势和季节性等多个维度进行了详细评估。结果显示,决策树方法在处理复杂非线性模式和保持数据局部特征方面表现更佳,而线性回归方法则适用于简单的线性趋势数据。文章最后总结了两种方法的优劣,并给出了实际应用建议。
790 7
使用机器学习技术进行时间序列缺失数据填充:基础方法与入门案例
|
11月前
PAI-Rec推荐平台对于实时特征有三个层次
PAI-Rec推荐平台针对实时特征有三个处理层次:1) 离线模拟反推历史请求时刻的实时特征;2) FeatureStore记录增量更新的实时特征,模型特征导出样本准确性达99%;3) 通过callback回调接口记录请求时刻的特征。各层次确保了实时特征的准确性和时效性。
355 0
|
11月前
|
机器学习/深度学习 传感器 数据采集
基于机器学习的数据分析:PLC采集的生产数据预测设备故障模型
本文介绍如何利用Python和Scikit-learn构建基于PLC数据的设备故障预测模型。通过实时采集温度、振动、电流等参数,进行数据预处理和特征提取,选择合适的机器学习模型(如随机森林、XGBoost),并优化模型性能。文章还分享了边缘计算部署方案及常见问题排查,强调模型预测应结合定期维护,确保系统稳定运行。
1079 0