首页 文章 精选 留言 我的

精选列表

搜索[机器学习],共10007篇文章
优秀的个人博客,低调大师

机器学习 | 基于机器学习的银行电话营销客户购买可能性预测分析

数据集:uci下载的某家银行电话营销与是否购买定期存储的数据。 模拟目标:知道客户数据,预测购买理财产品概率 我认为将电话营销的数据消除只保留基本属性可以模拟实际银行能够获取的数据。 电话营销数据代表一些对用户决定由影响但是获取难度较大的数据。比如说,买房、买车、小孩上学,这些数据银行不能立刻获得,或者获取成本较高。这里不使用这些数据参与预测。虽然预测准确度会降低,但是更符合实际情况。 然后定期存储是一种产品,可以当做一种理财,如果能对一种进行预测行进实现和验证,那么可以扩展到多种产品的预测 数据情况,见下表 Age 年龄 Job 工作 Marital 婚姻情况 Education 教育情况 Default 违约情况 - no 无违约 yes 有违约 Balance 账户余额 House 是否买房子 - no 无房产 yes 有房子 Loan 贷款 - no 无贷款 yes 有贷款 数据处理 数据清洗常规套路(空值检查,去重,去异常值) 由于数据集较好,基本不需要处理,但实现数据很有可能需要清洗,比如说,年龄缺失不能简单补0。 balance处理的尝试 1.balance的分布在较大值较少,需要处理 2.balance不处理 对数据one-hot encoding,对yes,no等2分类用0,1替换 处理之后数据为 使用lightgbm建模,参数如下 对测试集预测的结果左边为客户序号,predict为预测购买的可能性(推荐度),real为真是购买情况(0为未购买,1为已购买) 评价模型的好坏,对于少部分人购买(大部分预测都低于百分之50),很难用accurate去评价 举个例子, 真实情况是A类人购买率0.1,B类人购买率0.2,C类人购买率0.2。 即真实100个A, 100个 B, 100个 C 分别购买为10,20,20 2个模型经过训练对A,B,C,3类人的购买可能性预测为0.3 ,0.2, 0.1;0.15, 0.2, 0.2模型认为A,B,C三类人都不会购买。 accurate为预测正确人数/总人数 accurate(模型1)=accurate(模型2)=250(250没买东西,模型预测所有人都不会购买)/300=83% 如果用accurate去评价,模型1的性能是等于模型2的。 但是显然模型2更符合真实情况,所以这里不再使用accurate来作为标准。 这里使用的方法是,对预测值进行排序,如果预测准确,那么可能性高的人一定会多买产品。通过下图来衡量模型的好坏,红色为随机推荐,绿色为安概率排序后推荐。 如果绿线开始上升越快,说明模型效果越好。 这图除了来衡量模型好坏,也是一个有用的结论: 对一个人群范围,可以先通过模型排序,然后选取一定范围进行营销活动,提高转换率。 这里用1000的人来做标准,之后的模型也使用这个数据来做判断标准。排序前推荐1000人,购买率为104/1000=10.4%,排序后推荐1000人,购买率为270/1000=27%,差距最大点为1362。在推荐1362人是使用排序算法都购买人数和随意推荐差距最大。 特征值的重要程度如下图,可以看出账户余额和年龄是最重要的2个特征值 通过dnn和xgboost建模(具体见py代码) 3种建模的效果比较 1000人时,实际购买人数如下图 3种取现 结论分析在目前的参数设置来说 效果为xgboost>lightgbm>dnn 对比试验,之前的数据集是认为只有客户的基础属性,然后对客户的购买可能性做出预测。 现在增加电话营销的数据,来模拟一些营销数据(比如说发过几封推荐邮件)。 新增3个参数为 Duration:最后一次通话持续时间 Campaign:在这一次推广活动中,练习次数 Poutcome:之前的推广活动的结果,success为成功,failure为失败,unknown和other不是很清楚是什么属性 使用lightgbm建模结果如下 特征值的重要程度如下图,新增的特征值duration(持续通话时间)和campaign(联系次数)对预测有相当重要的影响。 对比没有这3个特征值时的预测(同样使用lightgbm) 这个对比说明了,在有效的特征值越多的情况下,预测越准确。

优秀的个人博客,低调大师

Python机器学习小知识:lambda

关于Lambda的定义:Lambdas are one line functions. They are also known as anonymous functions in some other languages. You might want to use lambdas when you don’t want to use a function twice in a program. They are just like normal functions and even behave like them. 大意为:lambda函数也叫匿名函数,即没有具体名称的函数,它允许快速定义单行函数,可以用在任何需要函数的地方。这区别于def定义的函数。 lambda调用方式为:lambda [arg1 [, agr2,.....argn]] : expression) lambda与def函数的区别: 1)lambda只是一个表达式,而def则是一个语句。lambda一般用来定义简单的函数,而def可以定义复杂的函数。 2)def创建的方法是有名称的,而lambda没有。 3)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个函数名。 4)lambda表达式的冒号(:)后面,只能有一个表达式,def则可以有多个。 5)像if或for或print等语句不能用于lambda中,def可以。 例如:add = lambda x, y: x + y print(add(3, 5)) Output: 8 List排序a = [(1, 2), (4, 1), (9, 10), (13, -3)]a.sort(key=lambda x: x[1])print(a) Output: [(13, -3), (4, 1), (1, 2), (9, 10)]

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册