| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> kaggle——信用卡欺诈检测项目实战 -> 正文阅读 |
|
[人工智能]kaggle——信用卡欺诈检测项目实战 |
笔记第一步:了解题目,确定任务信用卡欺诈是指故意使用伪造、作废的信用卡,冒用他人的信用卡骗取财物,或用本人信用卡进行恶意透支的行为。 常见信用卡欺诈使用的情况有: 1.失卡冒用:失卡一般有三种情况,一是发卡银行在向持卡人寄卡时丢失,即未达卡;二是持卡人自己保管不善丢失;三是被不法分子窃取。 本项目通过利用信用卡的历史交易数据,通过数据预处理,变量选择,建模分析预测等方法,构建简单的信用卡反欺诈预测模型,提前发现客户信用卡被盗刷的事件。 本项目通过利用信用卡的历史交易数据——进行机器学习,构建信用卡反欺诈预测模型——提前发现客户信用卡被盗刷的事件。 确定任务:即通过用户的历史信息,建立一个反欺诈预测模型,当有新的用户刷卡信息来的时候,模型能准确的预测出这是正常的刷卡行为还是盗刷行为即预测持卡人的信用卡是否被盗刷。 第二步:场景分析
如何处理这份数据进行我们最后的验证:数据是全部打标好的数据,可以通过交叉验证的方法对训练集生成的模型进行评估。70%的数据进行训练,30%的数据进行预测和评估。
第三步:数据预处理原始数据为个人交易记录,但是考虑数据本身的隐私性,已经对原始数据进行了类似PCA的处理,现在已经把特征数据提取好了,接下来的目的就是如何建立模型使得检测的效果达到最好,这里我们虽然不需要对数据做特征提取的操作,但是面对的挑战还是蛮大的。 看是否有缺失值
查看样本类别分布看看样本的分布是如何的,是不是不平衡样本,也就是不同的类对应的数量相差极大。 注意,在数据分析阶段,先不对数据样本数量进行调整,否则会干扰后续的特征工程。在模型训练阶段,用训练样本训练模型的时候,再进行样本不均衡调整。 数据不均衡解决办法处理这个不平衡问题,可以从数据和算法两个层面入手。 很简单的实现方法,在属于0的数据中,进行随机的选择,就选跟class为1的那类样本一样多就好了。让多的跟少的一样 过采样:让少的跟多的一样 1、数据层面:欠采样、过采样、欠采样和过采样结合 改变评价标准,以下标准可以更加深入地洞察模型的准确率 混淆矩阵:将要预测的数据分到表里来显示正确的预测(对角线),并了解其不正确的预测的类型(哪些类被分配了不正确的预测); 使用不同的算法 数据值标准化/归一化amount序列数值浮动比较大待会要做标准化或归一化,因为计算机对于数值较大的值会误认为该特征的权重大,要把数据的大小尽量均衡 第四步:特征工程1)查看特征分布情况,把不同类别下特征分布相差不大的特征删除掉1)先查看盗刷与正常刷卡的刷卡金额分布图 2)正常刷卡与盗刷时间分布 信用正常刷卡与盗刷时间分布从大体上看并没有太大差别,由此推测盗刷者为了减小被识别的风险,将盗刷时间放在正常刷卡时间集中区域。因此建立模型预测时,可以将该特征过滤。 3)查看其它特征分布 我们将选择在不同信用卡状态下的分布有明显区别的特征变量。因此剔除变量V8、V13 、V15 、V20 、V21 、V22、 V23 、V24 、V25 、V26 、V27 和V28变量这也与我们开始用相关性图谱观察得出结论一致,同时剔除变量Time。 2)特征缩放可以明显看到金额特征的值和其他特征的值相差加大,所以进行特征缩放 3)特征重要性分析利用随机森林的feature importance对特征的重要性进行排序 第五步:模型训练第一种:先划分训练集测试机,然后对训练集进行下采样/过采样,测试集是正常的样本。 处理不平衡样本1)简单的方法——下采样 上面我们可以看到我们制造的样本均衡的数据比较小,在做测试是测试集不足以代表样本的整体性,所以真正测试时还是用原来数据集的测试集比较符合原始数据的分布 2)使用SMOTE算法做数据过采样 k折交叉验证或者网格搜索调优参数(grid search)求取最好的模型参数最好的取值为c=10 第六步:模型评估不同的目标任务,对应着不同的模型指标。 我们的目的是什么呢?是不是要检测出来那些异常的样本呀! 因为不同的评估方法会得出不同的答案,一定要根据问题的本质,去选择最合适的评估方法。 使用下采样数据训练与测试
使用下采样数据训练与测试(不同的阈值对结果的影响)对于阈值,设置的太大不好,设置的太小也不好,所以阈值设定地越适当,才能使得模型拟合效果越好。 使用下采样数据训练,原始数据进行测试
原始数据进行K折交叉验证
使用原始数据进行训练和测试查看ROC曲线Roc曲线:即接收者操作特征曲线(receiver operating characteristic curve),反映了真阳性率(灵敏度)和假阳性率(1-特异度)之间的变化关系。Roc曲线越趋近于左上角,预测结果越准确。 逻辑回归阈值选择对于逻辑回归算法来说,我们还可以指定这样一个阈值,也就是说最终结果的概率是大于多少我们把它当成是正或者负样本。不用的阈值会对结果产生很大的影响。 阈值较小,意味着我们的模型非常严格宁肯错杀也不肯放过,这样会使得绝大多数样本都被当成了异常的样本,recall很高,精度稍低 当阈值较大的时候我们的模型就稍微宽松些啦,这个时候会导致recall很低,精度稍高, 综上当我们使用逻辑回归算法的时候,还需要根据实际的应用场景来选择一个最恰当的阈值! 如何设置阈值没有固定的标准,更多的结合业务来判断(因为不同的阈值,对召回率和精确率是有影响的),就看我们的业务到底希望提升那个指标为参考。例如:信用卡欺诈这种业务,更希望召回率高些(意思就是把可能欺诈交易全部拦截) 如果是想要召回率高,就把阈值设置的低点,宁可错杀100,也不能放过1个。 过采样总结确定任务——分析场景(监督/无监督、二分类/多分类,采用什么算法)——数据预处理(看有没有缺失值,不同类别的数据量相差大不大,归一化标准化)——特征工程(删除不同类的特征数据分布相差不大的,构造新的特征类)——训练模型(先划分训练集测试集,在这里处理一下数据分布,如果遇到数据不均衡则考虑把训练集下采用,下采样会把很多正确的分成错误的。或过采样,然后训练集进行训练,利用k折交叉验证找到模型的最优参数)——评估模型(不同任务对应不同的评估指标,如该项目就是考虑召回率,有多少盗用信用卡的用户被我们检测到了)——评判结果(评估指标好,就说明可以了,模型可以用了。如果评估指标不好,想着其他解决办法,对于逻辑回归算法来说,取值不同的阈值对我们最终的结果也是有影响的。找到最佳阈值。如果找最佳阈值评估指标也不是很高,那么就尝试其他算法,改其他方法) 该项目也可以看作异常检测,用autoencoder来进行异常检测。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:35:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |