数据分析实战 45 讲
陈旸
清华大学计算机博士
123928 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
第二模块:数据分析算法篇 (20讲)
第四模块:数据分析工作篇 (2讲)
数据分析实战 45 讲
15
15
1.0x
00:00/00:00
登录|注册

40丨数据挖掘实战(2):信用卡诈骗分析

精确率-召回率曲线
模型评估分数
混淆矩阵可视化
逻辑回归分类
训练集和测试集划分
特征选择
数据规范化
数据可视化
数据探索
F1值
召回率
精确率
准确率
sklearn中的逻辑回归工具
Logistic函数
信用卡违约率分析
模型评估指标
逻辑回归分类器
信用卡诈骗分析
数据挖掘实战

该思维导图由 AI 生成,仅供参考

上一篇文章中,我们用随机森林以及之前讲过的 SVM、决策树和 KNN 分类器对信用卡违约数据进行了分析,这节课我们来研究下信用卡欺诈。
相比于信用卡违约的比例,信用卡欺诈的比例更小,但是危害极大。如何通过以往的交易数据分析出每笔交易是否正常,是否存在盗刷风险是我们这次项目的目标。
通过今天的学习,你需要掌握以下几个方面:
了解逻辑回归分类,以及如何在 sklearn 中使用它;
信用卡欺诈属于二分类问题,欺诈交易在所有交易中的比例很小,对于这种数据不平衡的情况,到底采用什么样的模型评估标准会更准确;
完成信用卡欺诈分析的实战项目,并通过数据可视化对数据探索和模型结果评估进一步加强了解。

构建逻辑回归分类器

逻辑回归虽然不在我们讲解的十大经典数据挖掘算法里面,但也是常用的数据挖掘算法。
逻辑回归,也叫作 logistic 回归。虽然名字中带有“回归”,但它实际上是分类方法,主要解决的是二分类问题,当然它也可以解决多分类问题,只是二分类更常见一些。
在逻辑回归中使用了 Logistic 函数,也称为 Sigmoid 函数。Sigmoid 函数是在深度学习中经常用到的函数之一,函数公式为:
函数的图形如下所示,类似 S 状:
你能看出 g(z) 的结果在 0-1 之间,当 z 越大的时候,g(z) 越大,当 z 趋近于无穷大的时候,g(z) 趋近于 1。同样当 z 趋近于无穷小的时候,g(z) 趋近于 0。同时,函数值以 0.5 为中心。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何使用逻辑回归算法进行信用卡欺诈分析。通过实战项目展示了对信用卡欺诈数据集的分析流程,包括数据加载、数据探索和可视化、数据预处理、模型构建和评估。文章强调了在处理数据不平衡情况下,采用F1值作为模型评估指标的重要性。通过对混淆矩阵的可视化和精确率-召回率曲线的绘制,读者能够直观地了解模型的性能评估结果。此外,文章还提到了精确率、召回率和F1值在评估不平衡数据集分类模型时的重要性,以及在实际项目中的应用场景。总体而言,本文通过实例详细介绍了逻辑回归算法在信用卡欺诈分析中的应用,对读者进行了技术指导和实践操作。文章内容涵盖了数据处理、模型构建和评估等方面,适合对数据分析和机器学习感兴趣的读者阅读学习。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《数据分析实战 45 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(35)

  • 最新
  • 精选
  • 西湖晨曦
    继续上面的问题。就是,我就是银行信用卡部的工作人员。假设我通过fit()方法得到了信用卡诈骗分析的逻辑回归。假设特征是:性别、收入、是否有房子、是否有车子、是否有助学贷款、是否有公积金这几个特征。我通过fit()方法得到了这个有这些特征的逻辑回归曲线。我如何找到每一个特征前面的系数呢?-----说得直白点,我作为银行信用控制部门工作人员,希望知道上面的特征,哪一个是最重要的,哪一个次重要?哪一个不重要?这样我才能对我的信控工作作出调整。比如我假如知道了是否有助学贷款这个特征不重要,那么我就可以在未来工作中,在银行客户是否允许开信用卡的条件中,取消这个是否有助学贷款的条件,从而给银行信用卡开卡工作带来业务效益。

    作者回复: 很好的问题,你可以进行分类之后,查看下分类器中特征向量的重要程度,然后进行可视化的呈现,比如我们的分类器是clf,使用matplotlib进行可视化,具体代码如下: # 显示特征向量的重要程度 coeffs = clf.feature_importances_ df_co = pd.DataFrame(coeffs, columns=["importance_"]) # 下标设置为Feature Name df_co.index = train_features.columns df_co.sort_values("importance_", ascending=True, inplace=True) df_co.importance_.plot(kind="barh") plt.title("Feature Importance") plt.show()

    2019-09-14
    7
    21
  • 泷泱汰
    X = np.array(data.as_matrix()) 这个方法现在在pandas里面移除了,改成X = np.array(data.values)

    作者回复: 感谢泷泱汰同学的分享!as_matrix()确实已经废弃。可以通过data.values或者data.to_numpy()得到DataFrame的数组。

    2020-07-09
    10
  • 白夜
    试了下SVM 精确率: 0.843 召回率: 0.717 F1值: 0.775 可以通过人的行为(反动言论,购物情况,日常行为)分析预测人群的标签,比如反社会人格,小众爱好者 也可以,反过来通过人的标签(爱喝酒程度,注意力集中度,运动量等)分析人的行为(车祸,罕见疾病的发生)

    作者回复: Good Job

    2019-03-15
    6
  • 王彬成
    1、使用LinearSVC输出的结果: 精确率:0.846 召回率:0.733 F1值:0.786 2、结果代码,把 # 逻辑回归分类 clf=LogisticRegression() clf.fit(train_x,train_y) predict_y=clf.predict(test_x) 更换为: #线性SVM分类 from sklearn import svm model=svm.LinearSVC() model.fit(train_x,train_y) predict_y=model.predict(test_x)

    作者回复: Good Job

    2019-03-15
    6
  • 一语中的
    用SVM的LinearSVC算法进行分类 精确率:0.846 召回率:0.733 F1 值:0.786 如果F1值越大,代表的模型的结果越好,那么SVM应该是优于逻辑回归,但是,从计算时间上来看,用逻辑回归算法比用SVM要节约50多秒(在我本地环境,其他条件不变的情况下)

    作者回复: Good Job

    2019-03-19
    4
  • 西湖晨曦
    对本期的信用卡诈骗分析中,涉及逻辑回归(LogisticRegression)有几点问题,我在网上找了大量资料都找不到答案。特地求助~ 1. 逻辑回归数学公式中,求出的值,是介于(0,1)之间。LogisticRegreesion的predict()方法,会设定一个阈值,比如是0.5,把大于0.5的逻辑回归值,设为1,相反小于0.5的,设置为0。那么我的问题是,为什么要设置0.5?是固定的吗?如果我希望把阈值(threshold)提高到0.6,如何设置?---我看了无数遍API,就是找不到如何设置这个阈值。 2. 如何看逻辑回归的各个参数。假设我通过fit()这个方法对训练集进行训练,得到了逻辑回归的各个target的值,即我已经得到了这个逻辑回归的各个参数了。假设有10个特征。我如何知道每一个特征前面的变量呢?

    作者回复: 0.5是个阈值,一般做二分类的时候,大于0.5可以认为是1,小于0.5认为是0,=0.5的时候 可以是0或者1,概率都是一样的

    2019-09-14
    4
    2
  • 陈锦榕
    ***********The evaluation of split test data.************* Accuracy-Test data: 0.9601 ************************************************************************************************************************ Kappa: 0.07924493469331251 ************************************************************************************************************************ Confusion matrix,↓real laebl, →predict label” 0 1 0 9583 397 1 2 18 ************************************************************************************************************************ precision recall f1-score support 0 1.00 0.96 0.98 9980 1 0.04 0.90 0.08 20 accuracy 0.96 10000 macro avg 0.52 0.93 0.53 10000 weighted avg 1.00 0.96 0.98 10000

    作者回复: Good Job 认真做练习的同学

    2019-07-30
    2
  • third
    0、所有的小概率事件都属于不平衡数集,比如得某种病,出现车祸或者意外 1、LinearSVC结果: 精确率:0.845 召回率:0.732 F1值:0.778 2、结果代码,把 # 逻辑回归分类 clf=LogisticRegression() clf.fit(train_x,train_y) predict_y=clf.predict(test_x) 更换为: #线性SVM分类 from sklearn import svm model=svm.LinearSVC() model.fit(train_x,train_y) predict_y=model.predict(test_x)

    作者回复: Good Job

    2019-03-21
    2
  • 王彬成
    逻辑回归混淆矩阵对应的TP、FP、TN、FN的位置,以输出的混淆矩阵图为例, 1)首先这四个概念的定义 1. TP:预测为正,判断正确; 2. FP:预测为正,判断错误; 3. TN:预测为负,判断正确; 4. FN:预测为负,判断错误。 2)回归原图 1、predicted=1,True=1,代表预测为正,判断正确,所以TP=37 2、predicted=1,true=0,代表预测为正,判断错误,所以FP=7 3、predicted=0,true=1,代表预测为负,判断错误,所以FN=23

    作者回复: 总结的不错

    2019-03-15
    2
  • 拾光
    F1值表示什么呢,没搞明白,模型判断出一笔交易有可能涉嫌欺诈,准确率只有84.1%,不是也很低吗?

    作者回复: 可以把f1当成对Precision和Recall进行整体评价

    2020-12-23
    1
收起评论
显示
设置
留言
35
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部