你应该知道的模型评估的五个方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你应该知道的模型评估的五个方法相关的知识,希望对你有一定的参考价值。
你应该知道的模型评估的五个方法好久没更新了,我怕再不更,我要掉粉了,这次来更新的是模型评估的常见的五个方法:1、混淆矩阵。2、提升图
参考技术A 你应该知道的模型评估的五个方法好久没更新了,我怕再不更,我要掉粉了,这次来更新的是模型评估的常见的五个方法:
1、混淆矩阵。
2、提升图&洛伦兹图。
3、 基尼系数
4、ks曲线
5、roc曲线。
1
混淆矩阵
混淆矩阵不能作为评估模型的唯一标准,混淆矩阵是算模型其他指标的基础,后面会讲到,但是对混淆矩阵的理解是必要的。
模型跑出来的“Y”值为每个客户的预测违约概率,可以理解为客户的有多大的可能违约。把概率等分分段,y坐标为该区间的人数,可以得到这样子一个图表。
可以看到图中这条线,一切下去,在左边就算是违约的客户,那么右边就是正常的客户,本身模型没办法百分百的判断客户的状态,所以cd就算是会误判的,d本来是是左边这个小山的客户,那就是坏客户,但是模型预测他的概率比较高别划分到了好客户的这边了,所以d就是被预测为好客户的坏客户,同样的道理,c就是被预测为坏客户的好客户。
2
提升图&洛伦兹图
假设我们现在有个10000的样本,违约率是7%,我们算出这10000的样本每个客户的违约概率之后降序分为每份都是1000的记录,那么在左图中,第一份概率最高的1000个客户中有255个违约的。违约客户占了全部的36.4。如果不对客户评分,按照总体的算,这个分组;理论上有70个人是违约的。
把刚才的图,每组中的随机违约个数以及模型违约个数化成柱形图,可以看到假设现在是p值越大的客户,违约概率越大,那就是说这里第一组的1000个人就是概率倒序排序之后的前1000个人。那么可以看到通过模型,可以识别到第一组的客户违约概率是最高的,那么在业务上运用上可以特别注意这部分客户,可以给予拒绝的处理。
那么洛伦兹图就是将每一组的一个违约客户的个数累计之后连接成一条线,可以看到在12组的时候,违约人数的数量上升是一个比较明显的状态,但是越到后面的组,违约人数上升的越来越少了。那么在衡量一个模型的标准就是这个条曲线是越靠近y轴1的位置越好,那样子就代表着模型能预测的违约客户集中在靠前的几组,所以识别客户的效果就是更好。
3
基尼系数
洛伦茨曲线是把违约概率降序分成10等分,那么基尼统计量的上图是把违约概率升序分成10等分,基尼统计量的定义则为:
G的值在0到1之间,在随机选择下,G取0。G达到0.4以上即可接受。
4
ks值
ks曲线是将每一组的概率的好客户以及坏客户的累计占比连接起来的两条线,ks值是当有一个点,好客户减去坏客户的数量是最大的。那么ks的值的意义在于,我在那个违约概率的点切下去,创造的效益是最高的,就图中这张图来说就是我们大概在第三组的概率的中间的这个概率切下,我可以最大的让好客户进来,会让部分坏客户进来,但是也会有少量的坏客户进来,但是这已经是损失最少了,所以可以接受。那么在建模中是,模型的ks要求是达到0.3以上才是可以接受的。
5
roc
灵敏度可以看到的是判断正确的违约客户数,这里给他个名字为违约客户正确率(tpr),误判率就是判断错误的正常客户数(fpr)。特殊性就是正常客户的正确率,那么roc曲线是用误判率和违约客户数画的一条曲线。这里就需要明确一点就是,我们要的效果是,tpr的越高越好,fpr是越低越好。ROC曲线就是通过在0-1之间改变用于创建混淆矩阵的临界值,绘制分类准确的违约记录比例与分类错误的正常记录比例。具体我们来看图。
我们首先来看A,B点的含义,A点的TPR大概为0.7左右,FPR大概是0.3左右,那么就是说假设我错误的将30%坏客户判断是坏的,那么可以识别70%的客户肯定坏的。B点的TPR大概为0.3左右,FPR大概是0.7左右,那就是我错误的将70%好客户当做坏客户,只能得到30%的客户是确定 坏客户。所以这么说的话,点越靠近左上方,模型就是越好的,对于曲线也是一样的。
总结
我个人建议,要依据不同的业务目的,选取不同的评估方式, 基尼系数、提升图可以用于用人工审批情况的业务目的,不同的分组突出客户的质量的高低,ks、roc可以用于线上审批审核的情况,根据最小损失公式,计算出概率点。
嵌入式新手要知道的五个小窍门-心得
对于很多即将毕业的学生和在社会打拼的底层技术者再说,对于嵌入式的发展和掌握的技术层次是迷茫的?他们不知道如何学习,其实掌握学习嵌入式没有想象中的那么难,学习它也是有窍门的。这边如果你想学习却没有方向可以留下企鹅,话不多说,今天就给大家分享一点干货,带来几个小窍门:
1.使用设计模式
设计模式是一个用来处理那些在软件中会重复出现的问题的解决方案。开发人员可以选择浪费宝贵的时间和预算从无到有地重新发明一个解决方案,也可以从他的解决方案工具箱中选择一个最适合解决这个问题的方案。在微处理器出现之初,底层驱动已经很成熟了,那么,为什么不利用现有的成熟的解决方案呢?
驱动程序设计模式大致分属以下4个类别:Bit bang、轮询、中断驱动和直接存储器访问(DMA)。
Bit bang模式:当微控制器没有内外设去执行功能的时候,或者当所有的内外设都已经被使用了,而此时又有一个新的请求,那么开发者就应该选择Bit bang设计模式。Bit bang模式的解决方案很有效率,但通常需要大量的软件开销来确保其实施的能力。Bit bang模式可以让开发者手动完成通信协议或外部行为。
轮询模式用于简单地监视一个轮询调度方式中的事件。轮询模式适用于非常简单的系统,但许多现代应用程序都需要中断。
中断可以让开发者在事件发生时进行处理,而不用等代码手动检查。
DMA(直接存储器访问)模式允许其它外围设备来处理数据传输的需求,而不需要驱动的干预。
2.了解实时行为
一个实时系统是否能满足实时需求取决于它的驱动程序。写入能力差的驱动是低效的,并可能使不知情的开发者放弃系统的性能。设计者需要考虑驱动的两个特点:阻塞和非阻塞。一个阻塞的驱动程序在其完成工作之前会阻止其他任何软件执行操作。例如,一个USART驱动程序可以把一个字符装入传输缓冲区,然后一直等到接收到传输结束标志符才继续执行下一步操作。
另一方面,非阻塞驱动则是一般利用中断来实现它的功能。中断的使用可以防止驱动程序在等待一个事件发生时拦截其他软件的执行操作。USART的驱动程序可以将一个字符装入传输缓冲区然后等主程序发布下一个指令。传输结束标志符的设置会导致中断结束,让驱动进行下一步操作。
无论哪种类型,为了保持实时性能,并防止系统中的故障,开发人员必须了解驱动的平均执行时间和最坏情况下的执行时间。一个完整的系统可能会因为一个潜在的风险而造成更大的安全问题。
- 重用设计
在时间和预算都很紧张的情况下为什么还要再造轮子呢?在驱动程序开发中,重用、便携性和可维护性都是驱动设计的关键要求。这里面的许多特征可以通过硬件抽象层的设计和使用来说明。
硬件抽象层(HAL)为开发人员提供一种方式来创建一个标准接口去控制微控制器的外设。抽象隐藏实现细节,取而代之的是提供了可视化功能,如 Usart_Init和Usart_Transmit。这个方法就是让任何USART、SPI、PWM或其他外设具备所有微控制器都支持的共同特点。 使用HAL隐藏底层、特定设备的细节,让应用程序开发人员专注于应用的需求,而不是关注底层的硬件是如何工作的。同时HAL提供了一个重用的容器。
4.参考数据手册
微控制器在过去的几年里变得越来越复杂。以前想要完全了解一个微控制器需要掌握由一个大约包含500页组成的单一数据手册。而如今,一个32位微控制器通常包含由部分的数据手册、整个微控制器系列的资料表、每个外设数以百计的资料以及所有的勘误表组成的数据手册。 开发人员如果想要完全掌握这部分的内容需要了解几千页的文件。
不幸的是,所有这些数据手册都是一个驱动程序能真正合理实现所需要的。开发人员在一开始就要对每个数据手册中包含的信息进行收集和排序。通常它们中的每一个都需要被访问以使外设启动和运行。 关键信息被分散(或隐藏)在每种类型的数据手册中。
5.谨防外设故障
最近我刚好有机会把一系列的微控制器驱动移植到其他的微处理器上。制造商和数据手册都表明PWM外设在这两个系列的微控制器之间是相同的。 然而,实际情况却是在运行PWM驱动器的时候两者之间有很大的不同。该驱动程序只能在原来的微控制器工作,而在新系列的微控制器上却无效。
在反复翻看数据手册之后,我在数据手册中一个完全不相关的注脚里发现了PWM外设上电时会处于故障状态,需要将一个隐藏在寄存器中的标志位清零。在驱动程序实现的开始,确认外设可能出现的故障并查看其他看似无关的寄存器错误。
以上5点希望对你学习嵌入式有帮助,当然如果你还是不明白,没关系,谁都有这个时候。这边你可以留企.鹅。我这些年也存了不少干货,相信一定可以帮助你更好的学习,从而更上一层楼
以上是关于你应该知道的模型评估的五个方法的主要内容,如果未能解决你的问题,请参考以下文章