近几年,伴随着互联网的发展,在线食品配送业务成为了新潮流。
在此背景下,我们帮助客户对“在线食品交付偏好-班加罗尔地区”数据开展研究,建立印度在线食品配送平台消费者的用户画像,研究影响顾客购买意愿的因素,并给出相应的预测。
本文结合一个Python预测不平衡破产数据实例的代码数据,为读者提供一套完整的实践数据分析流程。
在此背景下,我们帮助客户对“在线食品交付偏好-班加罗尔地区”数据开展研究,建立印度在线食品配送平台消费者的用户画像,研究影响顾客购买意愿的因素,并给出相应的预测。
在此背景下,我们帮助客户对“在线食品交付偏好-班加罗尔地区”数据开展研究,建立印度在线食品配送平台消费者的用户画像,研究影响顾客购买意愿的因素,并给出相应的预测。
特征转换
由于数据集是问卷的形式,因而在数据预处理阶段将部分描述程度的变量转化为了整数,我们根据用户的意愿按程度进行给分:
Strongly agree (Very important): 2
Agree (Important): 1
Neutral (Moderately important): 0
Disagree (Slightly important): -1
Strongly disagree (Unimportant): -2
视频
逻辑回归Logistic模型原理和R语言分类预测冠心病风险实例
视频
Boosting集成学习原理与R语言提升回归树BRT预测短鳍鳗分布生态学实例
视频
KMEANS均值聚类和层次聚类:R语言分析生活幸福质量系数可视化实例
视频
支持向量机算法原理
建模
模型的目标是对output(用户是否愿意再次线上下单)进行预测,并对研究各变量对output的影响。
基于AIC的模型初步筛选
由于原数据集有55个自变量,为了让模型有更好的解释性,我们利用逻辑回归和AIC准则初步筛选得到9个自变量。如下所示:
Age
Ease.and.convenient
Time.saving
Late.Delivery
Unaffordable
Order.placed.by.mistake
Politeness
Freshness
Temperature
根据这九个自变量重新尝试搭建模型,得到的预测准确率为88%,AUC为94%
模型优化
由于数据集中因变量output为0和1的数据量有较大差异,为1:3,为了保证样本的平衡性,引入smote采样法(Smote采样简而言之是通过对原样本进行线性变换得到新的模拟样本,与bootstrap不同)经过采样,得到了数据量更大且具有较好平衡性的样本。通过此方法重新进行逻辑回归,模型的AUC从94%提升至97%,模型的表现得到了提升。
除了基于Smote采样的逻辑回归以外,在模型的探索过程中还引入了决策树、朴素贝叶斯以及加入交叉项等方法,得到的结果如下所示
综上,我们可以发现,就测试集合的准确率而言,C5.0决策树的准确率最高,为92.31%,其次是朴素贝叶斯模型,准确率为91.45%;
然而, 由于他们不是线性模型,这两者模型不具有可观的解释性;
特别的,通过之前的描述性统计与常识可以知道,年龄分布是类似正态的,因此有必要考虑年龄的二次项使得模型更加有效,而上表也进一步证实了引入年龄二次项使得模型的精度有较为显著的提高。
值得注意的是, 在具体选择模型的时候,需要结合具体所研究的数据特征进行选择模型; 例如,没有smote采样的模型由于训练的样本不平衡, 在测试集上的准确率较高但是在训练集上的AUC较少, 容易发生误判, 对于未知Output的分布未知的数据, 则Smote的采样显得必要了。
SMOTE逻辑回归、SVM、随机森林、AdaBoost和XGBoost分析严重不平衡的破产数据
本文旨在探讨如何有效处理并分析严重不平衡的破产数据,采用XGBoost模型作为主要分析工具。数据集包含实体的多种特征和财务比率,目标变量为公司未来几年是否破产(1表示破产,0表示未破产)。通过一系列预处理步骤,包括缺失值处理、多重共线性检查、异常值分析以及通过K-means聚类探索数据分布,本文最终实现了对不平衡数据的有效重采样,并评估了多种机器学习模型在破产预测任务上的性能。
数据预处理
数据导入与探索
首先,使用pandas库导入数据集,并设置实体ID为索引:
df = pd.read_csv('train.csv')df.set_index('ID', inplace = True)df.head()
数据不平衡性
fig, ax = plt.subplots(figsize=(16,12))
plt.xticks(rotation=90)
随时关注您喜欢的主题
数据是多种多样的,许多实体分布在特征空间中。
因此,我们的数据可能属于 2 个以上的类,因为在聚类 = 2 时,方差似乎有点偏离。
数据重采样
SMOTE技术
针对数据的高度不平衡性,应用SMOTE(Synthetic Minority Over-sampling Technique)技术进行过采样。通过生成少数类(破产)的合成样本,平衡数据集,从而提高模型对少数类的识别能力。
X_res, Y_res = sm.fit_sample(X_train, Y_train)
模型评估与选择
模型应用
将逻辑回归、SVM、随机森林、AdaBoost和XGBoost等模型应用于处理后的数据集,评估它们在破产预测任务上的性能。
pd.DataFrame(predictors).T
性能比较
通过多次实验调整SMOTE中的过采样比率,并对比不同模型在召回率上的表现。结果显示,XGBoost模型在0.11214的打击率下取得了最高的召回率,表明其在处理不平衡数据方面的优势。
smote_values = np.linspace(0.065, 0.125, num= 15)smote_values
召回分数是我们感兴趣的。召回率显示了我们的模型将正值预测为正值的能力。由于我们的数据高度不平衡,因此任何模型都很难获得更好的召回率。有时模型忽略了少数群体。
结论
综上所述,XGBoost模型在破产预测任务中表现优异,特别是在处理严重不平衡的数据集时,其高召回率证明了其在识别少数类(破产公司)方面的有效性。通过合理的数据预处理、重采样策略以及模型选择,本文为类似的不平衡分类问题提供了一种有效的解决方案。未来的研究可以进一步探索更多先进的重采样技术和模型优化策略,以提升模型的整体性能。
分析师
Yimeng Li是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在南京大学完成了数学系统计学专业的学位,专注数理统计、机器学习领域。擅长R语言、Python、Tableau。
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!