2021-04-30

金融风控训练营task4学习笔记

Task 4 建模和调参

一、学习知识点概括

  • 学习在金融分控领域常用的机器学习模型
  • 学习机器学习模型的建模过程与调参流程

二、学习内容

1.逻辑回归模型:

1)理解逻辑回归模型:

       逻辑回归是应用非常广泛的一个分类机器学习算法,它将数据拟合到一个logit函数(或者叫做logistic函数)中,从而能够完成对事件发生的概率进行预测。

2)逻辑回归模型的应用:

       线性回归能对连续值结果进行预测,而现实生活中常见的另外一类问题是,分类问题。最简单的情况是是与否的二分类问题。比如说医生需要判断病人是否生病,银行要判断一个人的信用程度是否达到可以给他发信用卡的程度,邮件收件箱要自动对邮件分类为正常邮件和垃圾邮件等等。

3)逻辑回归的优缺点:

优点:

  • 训练速度较快,分类的时候,计算量仅仅只和特征的数目相关;
  • 简单易理解,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响;
  • 适合二分类问题,不需要缩放输入特征;
  • 内存资源占用小,只需要存储各个维度的特征值;

缺点:

  • 逻辑回归需要预先处理缺失值和异常值;

  • 不能用Logistic回归去解决非线性问题,因为Logistic的决策面是线性的;

  • 对多重共线性数据较为敏感,且很难处理数据不平衡的问题;

  • 准确率并不是很高,因为形式非常简单,很难去拟合数据的真实分布


     

2.树模型:

1)理解树模型:

        决策树由结点(node)和有向边(directed edge)组成。结点有两种类型:内部结点(internal node)和叶结点(leaf node)。内部结点表示一个特征或属性,叶结点表示一个类。

        可以把决策树看成一个if-then规则的集合。

2)树模型的应用:

       例如:眼科医生判断患者是否需要佩戴隐形眼镜,以及类型

3)树模型的优缺点:

优点:

  • 简单直观,生成的决策树可以可视化展示
  • 数据不需要预处理,不需要归一化,不需要处理缺失数据
  • 既可以处理离散值,也可以处理连续值

缺点:

  • 决策树算法非常容易过拟合,导致泛化能力不强(可进行适当的剪枝)
  • 采用的是贪心算法,容易得到局部最优解

     

3.集成模型

  • 基于bagging思想的集成模型

Bagging方法的训练集是从原始集中有放回的选取,所以从原始集中选出的各轮训练集之间是独立的

Bagging方法使用均匀取样,所以每个样本的权重相等

Bagging方法中所有预测函数的权重相等

Bagging方法中各个预测函数可以并行生成

  • 基于baggin思想的集成模型有:
  1. 随机森林模型
  2. 基于boosting思想的集成模型

Boosting方法需要每一轮的训练集不变,只是训练集中每个样本在分类器中的权重发生变化,权值是根据上一轮的分类结果进行调整

Boosting方法根据错误率不断调整样本的权值,错误率越大则权重越大

Boosting方法中每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重

Boosting方法各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果

1.模型对比与性能评估:

1)相关模型有:回归模型,树模型与集成模型。

2)模型评估方法:

  • ①留出法

    留出法是直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T。需要注意的是在划分的时候要尽可能保证数据分布的一致性,即避免因数据划分过程引入额外的偏差而对最终结果产生影响。为了保证数据分布的一致性,通常我们采用分层采样的方式来对数据进行采样。

    Tips: 通常,会将数据集D中大约2/3~4/5的样本作为训练集,其余的作为测试集。

  • ②交叉验证法

    k折交叉验证通常将数据集D分为k份,其中k-1份作为训练集,剩余的一份作为测试集,这样就可以获得k组训练/测试集,可以进行k次训练与测试,最终返回的是k个测试结果的均值。交叉验证中数据集的划分依然是依据分层采样的方式来进行。

    对于交叉验证法,其k值的选取往往决定了评估结果的稳定性和保真性,通常k值选取10。

    当k=1的时候,我们称之为留一法

  • ③自助法

    我们每次从数据集D中取一个样本作为训练集中的元素,然后把该样本放回,重复该行为m次,这样我们就可以得到大小为m的训练集,在这里面有的样本重复出现,有的样本则没有出现过,我们把那些没有出现过的样本作为测试集。

    进行这样采样的原因是因为在D中约有36.8%的数据没有在训练集中出现过。留出法与交叉验证法都是使用分层采样的方式进行数据采样与划分,而自助法则是使用有放回重复采样的方式进行数据采样

模型评价结果:

       选用auc作为模型评价标准:ROC曲线越接近左上角,该分类器的性能越好,其泛化性能就越好。而且一般来说,如果ROC是光滑的,那么基本可以判断没有太大的overfitting。

选择更优的方法:

1)如果模型A的ROC曲线完全包住了模型B的ROC曲线,那么我们就认为模型A要优于模型B;

2)如果两条曲线有交叉的话,我们就通过比较ROC与X,Y轴所围得曲线的面积来判断,面积越大,模型的性能就越优,这个面积我们称之为AUC(area under ROC curve)

2.模型调参:

贪心调参方法:

       先使用当前对模型影响最大的参数进行调优,达到当前参数下的模型最优化,再使用对模型影响次之的参数进行调优,如此下去,直到所有的参数调整完毕。

       缺点:可能会调到局部最优而不是全局最优

       解决方法:一步步的进行参数最优化调试即可

网格调参方法:

       sklearn 提供GridSearchCV用于进行网格搜索,只需要把模型的参数输进去,就能给出最优化的结果和参数

       优点:相较于贪心调参,结果会更优

       缺点:只适合于小数据集,量级一旦上去,则很难得出结果

贝叶斯调参方法:

       在使用之前需要先安装包bayesian-optimization,运行如下命令即可:

pip install bayesian-optimization

贝叶斯调参的主要思想是:给定优化的目标函数(广义的函数,只需指定输入和输出即可,无需知道内部结构以及数学性质),通过不断地添加样本点来更新目标函数的后验分布(高斯过程,直到后验分布基本贴合于真实分布)。简单的说,就是考虑了上一次参数的信息,从而更好的调整当前的参数。

 

模型调参小总结

集成模型内置的cv函数可以较快的进行单一参数的调节,一般可以用来优先确定树模型的迭代次数

数据量较大的时候(例如本次项目的数据),网格搜索调参会特别特别慢,不建议尝试

集成模型中原生库和sklearn下的库部分参数不一致,需要注意,具体可以参考xgb和lgb的官方API

xgb原生库APIsklearn库下xgbAPI

lgb原生库API, sklearn库下lgbAPI

三、学习问题与解决

       对于建模方法一开始并不是很了解,但是本节课很贴心的给了相关基础知识内容的博客,所以这方面的问题得到了很好的解决。

四、学习思考与总结

       在Task4中,主要完成了建模与调参的工作

1.在建模的过程中通过划分数据集、交叉验证等方式对模型的性能进行评估并通过可视化的方法绘制ROC曲线。

2.在调参中学习到了贪心调参、网络调参以及贝叶斯调参三种调参方法

学习仍在继续,加油!!!!

 

摘自:https://tianchi.aliyun.com/notebook-ai/detail?spm=5176.20850282.J_3678908510.8.f2984d57PA0kEh&postId=170951

附加内容:逻辑回归模型:https://blog.csdn.net/han_xiaoyang/article/details/49123419

决策树模型:https://blog.csdn.net/c406495762/article/details/76262487

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用以下代码将该XML实例转换为application/x-www-form-urlencoded格式的模型: ``` using System.Net.Http; using System.Text; using System.Xml; // 将XML实例转换为application/x-www-form-urlencoded模型 var xmlString = @"<OTA_InventoryCheckRQ EchoToken='487ef6b0-3526-45e3-81e7-0eac31754c10' Password='abc888888' PrimaryLangID='en-us' TimeStamp='2021-04-20 10:30:59' UserName='guowang' Version='1.000'> <POS> <Source> <RequestorID ID='elongID' Type='2'/> </Source> </POS> <HotelReservations> <HotelReservation> <RoomStay> <RoomTypes> <RoomType RoomTypeCode='5412309'/> </RoomTypes> <RatePlans> <RatePlan RatePlanCode='4674478'/> </RatePlans> <GuestCounts> <GuestCount AgeQualifyingCode='10' Count='2'/> <GuestCount AgeQualifyingCode='8' Count='0'/> </GuestCounts> <BasicPropertyInfo HotelCode='2525137'/> </RoomStay> <ResGlobalInfo> <RoomCount>10</RoomCount> <MemberLevel>V1</MemberLevel> <TimeSpan End='2021-04-30' Start='2021-04-29'/> </ResGlobalInfo> </HotelReservation> </HotelReservations> </OTA_InventoryCheckRQ>"; var xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlString); var formContent = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("Message", xmlDoc.OuterXml) }); var encodedString = formContent.ReadAsStringAsync().Result; Console.WriteLine(encodedString); ``` 输出结果为: ``` Message=%3COTA_InventoryCheckRQ%20EchoToken%3D%22487ef6b0-3526-45e3-81e7-0eac31754c10%22%20Password%3D%22abc888888%22%20PrimaryLangID%3D%22en-us%22%20TimeStamp%3D%222021-04-20%2010%3A30%3A59%22%20UserName%3D%22guowang%22%20Version%3D%221.000%22%3E%3CPOS%3E%3CSource%3E%3CRequestorID%20ID%3D%22elongID%22%20Type%3D%222%22%2F%3E%3C%2FSource%3E%3C%2FPOS%3E%3CHotelReservations%3E%3CHotelReservation%3E%3CRoomStay%3E%3CRoomTypes%3E%3CRoomType%20RoomTypeCode%3D%225412309%22%2F%3E%3C%2FRoomTypes%3E%3CRatePlans%3E%3CRatePlan%20RatePlanCode%3D%224674478%22%2F%3E%3C%2FRatePlans%3E%3CGuestCounts%3E%3CGuestCount%20AgeQualifyingCode%3D%2210%22%20Count%3D%222%22%2F%3E%3CGuestCount%20AgeQualifyingCode%3D%228%22%20Count%3D%220%22%2F%3E%3C%2FGuestCounts%3E%3CBasicPropertyInfo%20HotelCode%3D%222525137%22%2F%3E%3C%2FRoomStay%3E%3CResGlobalInfo%3E%3CRoomCount%3E10%3C%2FRoomCount%3E%3CMemberLevel%3EV1%3C%2FMemberLevel%3E%3CTimeSpan%20End%3D%222021-04-30%22%20Start%3D%222021-04-29%22%2F%3E%3C%2FResGlobalInfo%3E%3C%2FHotelReservation%3E%3C%2FHotelReservations%3E%3C%2FOTA_InventoryCheckRQ%3E ``` 其中,key为"Message",value为对该XML实例进行URL编码后的字符串。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值