1.AUCԴ??
2.python怎么建立数据模型?
3.分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测
4.Toad:基于 Python 的标准化评分卡模型
5.retinaface人脸检测在fddb数据集上的测试
6.基于 Toad 的评分卡模型全流程详解(含 Python 源码)
AUCԴ??
二分类问题的结果有四种:
逻辑在于,你的预测是positive-1和negative-0,true和false描述你本次预测的对错
true positive-TP:预测为1,预测正确即实际1
false positive-FP:预测为1,预测错误即实际0
true negative-TN:预测为0,预测正确即实际0
false negative-FN:预测为0,我的主页源码预测错误即实际1
混淆矩阵
直观呈现以上四种情况的样本数
准确率accuracy
正确分类的样本/总样本:(TP+TN)/(ALL)
在不平衡分类问题中难以准确度量:比如%的正样本只需全部预测为正即可获得%准确率
精确率查准率precision
TP/(TP+FP):在你预测为1的样本中实际为1的概率
查准率在检索系统中:检出的相关文献与检出的全部文献的百分比,衡量检索的信噪比
召回率查全率recall
TP/(TP+FN):在实际为1的样本中你预测为1的概率
查全率在检索系统中:检出的相关文献与全部相关文献的百分比,衡量检索的覆盖率
实际的二分类中,positive-1标签可以代表健康也可以代表生病,但一般作为positive-1的指标指的是你更关注的样本表现,比如“是垃圾邮件”“是阳性肿瘤”“将要发生地震”。
因此在肿瘤判断和地震预测等场景:
要求模型有更高的召回率recall,是个地震你就都得给我揪出来不能放过
在垃圾邮件判断等场景:
要求模型有更高的精确率precision,你给我放进回收站里的可都得确定是垃圾,千万不能有正常邮件啊
ROC
常被用来评价一个二值分类器的优劣
ROC曲线的横坐标为false positive rate(FPR):FP/(FP+TN)
假阳性率,即实际无病,但根据筛检被判为有病的百分比。
在实际为0的样本中你预测为1的概率
纵坐标为true positive rate(TPR):TP/(TP+FN)
真阳性率,即实际有病,但根据筛检被判为有病的百分比。
在实际为1的样本中你预测为1的概率,此处即召回率查全率recall
接下来我们考虑ROC曲线图中的四个点和一条线。
第一个点,(0,1),即FPR=0,TPR=1,这意味着无病的没有被误判,有病的都全部检测到,这是一个完美的分类器,它将所有的样本都正确分类。
第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。
第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,没病的没有被误判但有病的全都没被检测到,即全部选0
类似的,第四个点(1,qq网站php源码1),分类器实际上预测所有的样本都为1。
经过以上的分析可得到:ROC曲线越接近左上角,该分类器的性能越好。
ROC是如何画出来的
分类器有概率输出,%常被作为阈值点,但基于不同的场景,可以通过控制概率输出的阈值来改变预测的标签,这样不同的阈值会得到不同的FPR和TPR。
从0%-%之间选取任意细度的阈值分别获得FPR和TPR,对应在图中,得到的ROC曲线,阈值的细度控制了曲线的阶梯程度或平滑程度。
一个没有过拟合的二分类器的ROC应该是梯度均匀的,如图紫线
ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。而Precision-Recall曲线会变化剧烈,故ROC经常被使用。
AUC
AUC(Area Under Curve)被定义为ROC曲线下的面积,完全随机的二分类器的AUC为0.5,虽然在不同的阈值下有不同的FPR和TPR,但相对面积更大,更靠近左上角的曲线代表着一个更加稳健的二分类器。
同时针对每一个分类器的ROC曲线,又能找到一个最佳的概率切分点使得自己关注的指标达到最佳水平。
AUC的排序本质
大部分分类器的输出是概率输出,如果要计算准确率,需要先把概率转化成类别,就需要手动设置一个阈值,而这个超参数的确定会对优化指标的计算产生过于敏感的影响
AUC从Mann–Whitney U statistic的角度来解释:随机从标签为1和标签为0的样本集中分别随机选择两个样本,同时分类器会输出两样本为1的概率,那么我们认为分类器对“标签1样本的预测概率>对标签0样本的预测概率 ”的概率等价于AUC。
因而AUC反应的是分类器对样本的排序能力,这样也可以理解AUC对不平衡样本不敏感的原因了。
作为优化目标的各类指标
最常用的分类器优化及评价指标是AUC和logloss,最主要的原因是:不同于accuracy,precision等,这两个指标不需要将概率输出转化为类别,而是可以直接使用概率进行计算。
顺便贴上logloss的公式
F1
F1兼顾了分类模型的准确率和召回率,可以看作是模型准确率和召回率的调和平均数,最大值是1,最小值是eclipse 源码反编译0。
额外补充AUC为优化目标的模型融合手段rank_avg:
在拍拍贷风控比赛中,印象中一个前排队伍基于AUC的排序本质,使用rank_avg融合了最后的几个基础模型。
rank_avg这种融合方法适合排序评估指标,比如auc之类的
其中weight_i为该模型权重,权重为1表示平均融合
rank_i表示样本的升序排名 ,也就是越靠前的样本融合后也越靠前
能较快的利用排名融合多个模型之间的差异,而不用去加权样本的概率值融合
贴一段源码:
M为正类样本的数目,N为负类样本的数目,rank为分类器给出的排名。
可以发现整个计算过程中连直接的概率输出值都不需要,仅关心相对排名,所以只要保证submit的那一组输出的rank是有意义的即可,并不一定需要必须输出概率。
python怎么建立数据模型?
Python数据建模的一般过程可以大致分为以下几个步骤: 1. 数据收集:首先需要收集数据。这可能包括从公开数据源、数据库、文件、API等获取数据。你可能需要选择适当的数据收集工具或库,如pandas的read_csv函数或requests库来从网站获取数据。 2. 数据清洗:收集到的数据可能存在缺失值、错误值、重复值等问题,需要进行清洗。这一步通常包括删除重复行、填充缺失值、处理异常值等。可以使用Python的pandas库进行数据清洗。 3. 数据预处理:数据预处理包括数据标准化、归一化、编码转换等步骤,以便于后续的数据分析。可以使用Python的pandas库进行数据预处理。 4. 特征提取:根据研究问题和数据特点,从数据中提取出有用的特征。这可能包括数值特征、分类特征、时间序列特征等。可以使用Python的sklearn库进行特征提取。 5. 模型选择与训练:根据研究问题和数据特点,选择合适的后台管理简单源码机器学习模型进行训练。常见的机器学习模型包括线性回归、逻辑回归、决策树、随机森林、神经网络等。可以使用Python的sklearn库进行模型训练。 6. 模型评估:使用适当的方法对模型进行评估,如准确率、召回率、AUC-ROC等指标。评估结果可以帮助你了解模型的性能,从而进行调整和优化。 7. 模型应用与优化:将模型应用于实际问题中,并根据应用结果对模型进行优化和调整。 拓展知识: Python由荷兰国家数学与计算机科学研究中心的吉多·范罗苏姆于年代初设计,作为一门叫作ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。 Python在各个编程语言中比较适合新手学习,Python解释器易于扩展,可以使用C、C++或其他可以通过C调用的语言扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。分类预测 | Matlab实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测
本文介绍如何使用MATLAB实现CNN-LSTM-SAM-Attention卷积长短期记忆神经网络融合空间注意力机制的数据分类预测模型。模型特点包括多输入,单输出和多分类能力。此模型提供了全面的数据可视化,包括多边形面积PAM、分类准确率、灵敏度、特异性、曲线下面积AUC、Kappa系数和F_measure等指标。
模型实现中包含了完整源码和数据,asp网站导航源码自带数据集以方便使用。在实际应用中,仅需替换数据即可进行预测,确保程序的正常运行。运行环境推荐使用MATLAB及以上版本。
代码设计方面,采用参数化编程,使得参数的更改变得简单方便。程序的编程思路清晰,易于理解和维护。同时,代码配有详细的注释,便于学习和调试。
总之,该模型融合了CNN、LSTM、SAM和Attention机制,提供了强大的数据分类预测能力。其简洁的代码结构和直观的数据分析工具,使其在实际应用中具有较高的实用性和可操作性。无论是初学者还是经验丰富的开发者,均可轻松上手,利用此模型解决复杂的数据分类问题。
Toad:基于 Python 的标准化评分卡模型
大家好,我是东哥。
在信贷风控领域,评分卡模型是最为常见和经典的工具。评分卡通过为信贷客户分配分数,依据不同的业务场景(贷前、贷中、贷后和反欺诈)进行评估,最终通过设置阈值给出评估结果。与XGB等机器学习模型相比,评分卡通常采用逻辑回归,因为它具有很强的特征解释性,属于广义线性回归模型。
今天要介绍的是一个开源评分卡工具——toad,它提供了一条龙服务,包括数据探索、特征分箱、筛选、WOE转换、建模、评估、分数转换等过程,极大地简化了建模人员的工作。toad的基本操作可以通过pip安装完成。
首先,使用read_csv读取数据,了解数据概览。在测试数据中,有万条记录,包含个特征。数据的时间跨度为年5月至7月,我们将使用3月和4月的数据作为训练样本,5月、6月、7月的数据作为跨期样本(OOT)进行验证。
接下来,通过toad的EDA功能进行数据探索分析,包括统计性特征、缺失值、unique values等信息。在进行变量筛选时,可以使用toad的quality功能计算各种指标,如iv值、gini指数、熵等,结果按照iv值排序。对于数据量大或高维度数据,建议使用iv_only=True。同时,要删除主键、日期等高unique values且不用于建模的特征。
在完成初步筛选后,通过toad.selection.select函数进一步筛选变量,根据阈值设置进行特征选择,最终保留个变量,并得到筛选后的数据集和被删除的变量列表。
接下来是分箱过程,toad提供了多种分箱方法,包括等频分箱、等距分箱、卡方分箱、决策树分箱和最优分箱等。分箱结果对于WOE转换至关重要,toad支持数值型和离散型数据的分箱,并能单独处理空值。
在完成分箱后,进行WOE转换,将数据转换为更容易解释的分数形式。通过观察分箱结果并进行调整,确保WOE转换后的分数具有良好的单调性。
随后,应用逐步回归方法筛选特征,支持向前、向后和双向筛选。逐步回归通过使用sklearn的REF实现,通常情况下direction='both'效果最好。参数设置如正则化、样本权重等不在详细介绍范围内。
完成建模后,使用逻辑回归对数据进行拟合,并计算预测结果。风控模型常用评价指标包括KS、AUC、PSI等。toad提供了快速实现这些评价指标的方法。
评分卡转换是最后一步,将逻辑回归模型转换为标准评分卡,支持传入逻辑回归参数进行调整。
toad还支持GBDT编码,作为GBDT与LR建模的前置,以提高模型学习效果。
总结而言,toad提供了一套便捷的评分卡建模流程,大大简化了建模工作。在实际应用中,可以参考源码进行优化或扩展功能。
retinaface人脸检测在fddb数据集上的测试
近期对retinaface人脸检测算法在fddb数据集上的表现进行了测试,以下为测试过程记录。
首先,为了满足fddb数据集的格式要求,对retinaface官方代码进行了修改,将检测结果保存为fddb格式。由于mxnet框架的限制,在输入尺度变化时,会重新选择最优的CUDNN,导致测试过程耗时较长,此问题尚未解决。为了保证输入图像尺度一致,将所有图像统一设置为x像素(FDDB数据集中所有图像最长边),不满足大小要求的图像通过copyMakeBorder补全,并将检测结果保存。
其次,直接下载fddb官方测试源码,并使用C/C++代码进行测试。由于习惯使用Windows系统,建立了VS工程并配置了opencv,即可运行测试。需要注意的是,官网代码对应的opencv版本较旧,使用opencv3时需要添加一些头文件。编译过程中遇到问题,可查阅相关资料解决。运行后,保存了两个文档,分别是*ContROC.txt和*DiscROC.txt。
最后,下载Python源码,计算第二步ROC曲线的AUC。将txt文件放入对应文件夹,即可运行得到结果。整个过程没有遇到问题,以下为测试结果(temp)。
基于 Toad 的评分卡模型全流程详解(含 Python 源码)
欢迎关注@Python与数据挖掘 ,专注于 Python、数据分析、数据挖掘、好玩工具!
toad 是一个专为风险评分卡建模而设计的工具包,它功能强大且使用便捷,能简化模型构建过程中的多个步骤,包括数据探索、特征筛选、分箱、WOE变换、建模、模型评估、分数转换等,深受行业用户的喜爱。如果您在使用过程中遇到任何问题,欢迎在文末进行技术交流。
以下是基于 toad 的评分卡模型构建流程详解:
首先,要安装 toad,使用 pip 命令即可完成。
导入库和数据读取:演示数据包含条记录,个特征,其中个为特征变量,一列为主键和一列为标签(Defaulter)。数据中有离散型和连续型变量,且存在一定数量的缺失值。为了模型检验,使用 sklearn 的 train_test_split 函数将数据划分为训练集和测试集。
数据探索:使用 toad.detect 方法检测数据情况,获取每列特征的统计信息,如缺失值、唯一值、数值变量的平均值、离散型变量的众数等。此外,通过 toad.quality 方法输出每个变量的 iv 值、gini 指数、熵值和唯一值,结果按 iv 值排序。
特征筛选与分箱:使用 toad.selection.select 方法筛选变量,根据缺失值占比、iv 值、相关性进行变量选择。筛选后,从个特征中选出个变量。接着,使用 toad.transform.Combiner 类进行分箱,支持多种分箱方法,如卡方分箱、决策树分箱、等频分箱、等距分箱和最优分箱。根据实际需求调整参数,完成变量分箱。
WOE 转换:在分箱调整完成后,使用 WOE 转换方法。仅转换被分箱的变量,并确保所有变量经过 WOE 转换。
逐步回归特征筛选:使用 toad.selection.stepwise 方法进行特征筛选,调整参数以获得最佳结果。使用 toad.metrics.PSI 函数检验 WOE 转换后的特征稳定性。
建模与评估:首先使用逻辑回归(LR)构建模型,评估模型结果,常用指标包括 KS(Kolmogorov-Smirnov)值、AUC(曲线下面积)和 PSI(预测分箱稳定性指数)。使用 toad.metrics.KS_bucket 函数评估模型预测分箱后的信息,包括分数区间、样本量、坏账率和 KS 值。
评分转换:使用 toad.ScoreCard 函数将逻辑回归模型转换为标准评分卡。调整参数以适应实际需求,包括基准评分、比率、基准奇偶比等。
至此,通过使用 toad,可以快速完成评分卡模型的全流程构建。在实际工作中,根据数据特性和需求调整参数,以满足特定任务需求。本文提供了 toad 的功能介绍和评分卡建模基础流程,实际应用时,只需根据实际情况调整流程和参数即可。
关注@Python与数据挖掘,获取更多优质文章与技术交流。