tensorflow sigmoid 如何计算训练数据的正确率_数据分析|信用卡欺诈分析

7bd3c76fec2a1570d8dca510d54c383c.png

相比于信用卡违约,信用卡欺诈发生比例更小,但危机更大!如何通过以往的交易数据分析出每笔交易是否正常,是否存在盗刷是我们这次的任务!

本次任务内容:

1、了解逻辑回归
2、用逻辑回归分析信用卡欺诈属于二分类问题,但欺诈交易在所有数据中的比例很小,对于这种数据不平衡的情况,采用什么样的模型评估标准会更准确。

逻辑回归其实不是回归算法,是一个分类算法,用条件概率分布的形式表示 P(Y|X),这里随机变量 X 取值为 n 维实数向量,例如x=(x(1),x(2),...,x(n)),Y 取值为 0 或 1;假设有一个二分类问题,输出为y∈{0,1}y∈{0,1},二线性回归模型z=wTx+b是个实数值,我们希望有一个理想的阶跃函数来帮我什么实现z值到0/1值的转化,于是找到了Sigmoid函数来代替:

有了 Sigmoid 函数之后,由于其值取值范围在[0,1]。就可以将其视为类 1 的后验概率估计 p(y=1|X)。说白了,就是如果有了一个测试点 x,那么就可以用Sigmoid函数算出来的结果当作该点 x 属于类别 1 的概率大小。

于是,非常自然地,我们把 Sigmoid 函数计算得到的值大于等于0.5的归为类别1,小于0.5的归为类别0;

至于如何求Z中的w值,我们需要定义误差损失函数,模型线性回归最小误差平方和,logistic回归的回归就是模型线性回归中的最小误差平方和。

求解算法,没有用距离算法,因为非凸!采用了极大似然估计来估计参数w!

是一个用于二分分类的算法。虽然逻辑回归也可以用于多分类问题,只是二分类更常见一些!

输入:一维离散值或多维离散值(多个特征)

输出:{直接输出分类结果:比较两个分类标签的概率,谁大输出谁;输出分类标签的概率值;输出模型的评分}

逻辑回归与线性回归的不同:

线性回归:输入多个连续特征,输出拟合曲线;逻辑回归输入多个离散特征,输出分类标签的概率值。
线性回归:R方评价拟合程度;逻辑回归准确率,召回率来评价模型准确性!

逻辑回归采用了sigmoid函数,sigmoid函数常出现在神经网络中,函数公式:

38bcedb665924012180edecfdcb5a608.png

246a4800e85335ee92617240f041e26b.png
输出在(0,1);当z-->
时,输出-->1,函数z=0时,输出为0.5!

利用z=0的特性,若输入特征的预测值<0.5,就认为其是负例;>0.5,那么认为其是正例!

sklearn中的逻辑回归参数:

e123e96012d3c2201a68ccbb6ee75f30.png
Penalty:惩罚项目,L1,L2,默认L2.当模型参数满足高斯分布时,用L2;当模型参数参数满足拉普拉斯分布,使用L1;
Solver:逻辑回归损失函数。Libliner,lbfgs,newton-cg,sag,saga.默认libliner,适用于数据量小的数据集,当数据集大,使用sag,或saga法
Max_iter:最大迭代次数,默认为10
N_jobs:拟合,预测时,选择cpu的核数,默认是1.

模型评估:

之前很多模型,都可以使用准确率或召回率进行评估,但信用卡欺诈分析不行,训练集中的正负样本100:1极不均衡!

所以,我们综合准确率与召回率两个指标的特性,定义一个新的指标:

TP:预测为正,判断正确; FP:预测为正,判断错误;
TN:预测为负,判断正确;FN:预测为负,判断错误

精确率 P = TP/ (TP+FP)

召回率 R = TP/ (TP+FN)

a5e4b9d254db608d26648ded805f6b74.png
F1 作为精确率 P 和召回率 R 的调和平均,数值越大代表模型的结果越好。
F1值一定程度上可以可以适用不均衡分类!

数据说明:

数据集包括了 2013 年 9 月份两天时间内的信用卡交易数据284807 笔交易中,一共有 492 笔是欺诈行为。

数据集包括time列,V1-V28是经过PCA变换后得到的数据,amount交易价格列,以及class列(0表示正常,1表示欺诈)。

所谓监督学习,就是知道训练集中哪些数据是正常的,哪些是欺诈,这样才可以训练出分类器,当输入一组数据,我们可以判定其是正常还是欺诈!

从数据中你能看到欺诈行为只占到了 492/284807=0.172%,也就是正负样本不均衡!所以,我们不能采用正确率来评价模型,而是采用F1值来评判模型。

# -*- coding:utf-8 -*-
首先我们自定义了混淆矩阵,模型评估指标F1值,以及精确率 - 召回率曲线函数
我们对数据进行了拆分:V1-V28为train x,显然Class为train_y.然后划分了训练集与测试集 之后就是调包进行模型预测! 混淆矩阵:也称误差矩阵。实际上它就是 TP、FP、TN、FN 这四个数值的矩阵表示,帮助我们判断预测值和实际值相比,对了多少。从这个例子中,你能看出 TP=37,FP=7,FN=23。

可视化结果如下:

2412de3c5af0209e9adcf210bffa3e52.png

e05c1487fa7bbaba2d4a9fd56c81db9f.png

726958381d357d68fd97785456d4a509.png

f7c1e79456606c2d033a55e5aed0ca0b.png

927ae4da0f5fd53e6e8e0c55f9944eac.png

d783180227955af384fa54a4f72467f7.png

总结:

对于284807*29=8259403的数据量,logistic回归的训练速度远远超过支持向量机(线性支持向量机的训练速度要比传统支持向量机快)。

生活中还有哪些不均衡的数据集了?

1.欺诈预测(欺诈的数量远远小于真实交易的数量)
比如,本节内容的信用卡欺诈交易
2.自然灾害预测(不好的事情远远小于好的事情)
3.买彩票中奖(小概率)
4.在图像分类中识别恶性肿瘤(训练样本中含有肿瘤的图像远比没有肿瘤的图像少)

现实中有很多类别不均衡问题,它是常见的,并且也是合理的,符合人们期望的。

一般而已,如果类别不平衡比例超过4:1,那么其分类器会大大地因为数据不平衡性而无法满足分类要求的。因此在构建分类模型之前,需要对分类不均衡性问题进行处理。

解决分类不均衡问题:

一类是从训练集入手 , 通过改变训练集样本分布 ,降低不平衡程度 .另一类是从学习算法入手 , 根据算法在解决不平衡问题时的缺陷。

重采样方法是通过增加稀有类训练样本数的上采样 (up-sampling)和减少大类样本数的下采样(down-samplings)使不平衡的样本分布变得比较平衡,从而提高分类器对稀有类的识别率 .

Chawla等人提出的SMOTE(蒙特卡洛方法)是一种简单有效的上采样方法,该方法首先为每个稀有类样本随机选出几个邻近样本,并且在该样本与这些邻近的样本的连线上随机取点,生成无重复的新的稀有类样本。
scikit-learn-contrib/imbalanced-learn

下采样通过舍弃部分大类样本的方法 , 降低不平衡程度 。

重采样方法的缺陷:

首先,在模型调优过程中,对重采样过程中生成的保留样本也进行了粗略的分析,不一定能反映出未来预测所遇到的类不平衡。这可能导致对业绩的估计过于乐观。
其次,次采样过程可能会导致更多的模型不确定性。在不同的子样本下,模型的结果会有所不同吗?如上所述, 重采样统计数据更有可能使模型看起来比实际更有效。

参考文献

https://blog.csdn.net/mingyuli/article/details/81188122 (如何解决数据不均衡方法)

如何处理不均衡数据 - 搜索结果

11 Subsampling For Class Imbalances | The caret Package(基于R的不均衡数据处理)

机器之心:机器学习中如何处理不平衡数据?

https://blog.csdn.net/qq_41577045/article/details/80302991 (逻辑回归算法原理)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值