40丨数据挖掘实战(2):信用卡诈骗分析
40丨数据挖掘实战(2):信用卡诈骗分析
讲述:陈旸
时长11:28大小10.52M
构建逻辑回归分类器
模型评估指标
对信用卡违约率进行分析
总结
赞 7
提建议
精选留言(35)
- 西湖晨曦2019-09-14继续上面的问题。就是,我就是银行信用卡部的工作人员。假设我通过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()
共 7 条评论20 - 泷泱汰2020-07-09X = np.array(data.as_matrix()) 这个方法现在在pandas里面移除了,改成X = np.array(data.values)
作者回复: 感谢泷泱汰同学的分享!as_matrix()确实已经废弃。可以通过data.values或者data.to_numpy()得到DataFrame的数组。
8 - 白夜2019-03-15试了下SVM 精确率: 0.843 召回率: 0.717 F1值: 0.775 可以通过人的行为(反动言论,购物情况,日常行为)分析预测人群的标签,比如反社会人格,小众爱好者 也可以,反过来通过人的标签(爱喝酒程度,注意力集中度,运动量等)分析人的行为(车祸,罕见疾病的发生)展开
作者回复: Good Job
6 - 王彬成2019-03-151、使用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
6 - 一语中的2019-03-19用SVM的LinearSVC算法进行分类 精确率:0.846 召回率:0.733 F1 值:0.786 如果F1值越大,代表的模型的结果越好,那么SVM应该是优于逻辑回归,但是,从计算时间上来看,用逻辑回归算法比用SVM要节约50多秒(在我本地环境,其他条件不变的情况下)展开
作者回复: Good Job
4 - 换个调调2020-03-171.置信分数是一个什么概念呢? 2.为什么计算PR值取 score_y 而不是 pred_y? 3.像SVC、LogisticRegression没有 feature_importances 如何判断各个特征的重要性呢?共 1 条评论2
- 西湖晨曦2019-09-14对本期的信用卡诈骗分析中,涉及逻辑回归(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,概率都是一样的
共 4 条评论2 - 陈锦榕2019-07-30***********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 认真做练习的同学
2 - third2019-03-210、所有的小概率事件都属于不平衡数集,比如得某种病,出现车祸或者意外 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
2 - 王彬成2019-03-15逻辑回归混淆矩阵对应的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展开
作者回复: 总结的不错
2 - 建强2020-04-04思考题: 1.不平衡的数据:历年飞机空难和正常飞行的数据,历年发生重大事故的企业和正常生产的企业 2.使用SVM模型对信用卡数据集分类,计算效率比逻辑回归模型低很多,精确率要低于逻辑回归、但召回率和F1都要高于逻辑回归模型,这三个指标分别为 精确率: 0.793 召回率: 0.767 F1值: 0.780展开
作者回复: Good Job
1 - feng2022-08-25 来自湖南逻辑回归模型的求解这里不做介绍,我们来看下如何使用 sklearn 中的逻辑回归工具。在 sklearn 中,我们使用 LogisticRegression() 函数构建逻辑回归分类器,函数里有一些常用的构造参数:penalty:惩罚项,取值为 l1 或 l2,默认为 l2。当模型参数满足高斯分布的时候,使用 l2,当模型参数满足拉普拉斯分布的时候,使用 l1; 请问老师这个模型的参数是满足高斯分布还是拉普拉斯分布,为什么?
- 杨博2022-02-14问题一:本文中PCA如何判断降维到28是较适合?维度不同对结果的影响很大。 问题二:在其他的场景进行回归预测,1954条数据,20个特征变量,但是在sklearn中的几个典型的回归模型中R2分值差别很大,集成类的模型打分0.93+,有的0.7+,有的0.8+,请教是数据存在一定问题?还是模型不合适的问题?
- 拾光2020-12-23F1值表示什么呢,没搞明白,模型判断出一笔交易有可能涉嫌欺诈,准确率只有84.1%,不是也很低吗?
作者回复: 可以把f1当成对Precision和Recall进行整体评价
- 非同凡想2020-11-30reg = LinearSVC() reg.fit(train_x, train_y) pred_y = reg.predict(test_x) cm = confusion_matrix(test_y, pred_y) class_names = [0,1] plot_confusion_matrix(cm, classes=class_names, title='混淆矩阵' ) show_metrics(cm) precision:0.830 recall:0.650 f1:0.729展开
- Geek_00acb12020-11-16请问:1、如果现实中不能等到正常交易和异常交易样本的数据都收集完后,才进行模型训练。比如目前只收集了正常样本的数据。是否可以利用正常数据的进行学习,得到正常样本的模型。然后每次交易都和这个模型进行比较。比如利用,高斯混合模型求出正常交易的样本分布情况,每次交易都和正常模型分布进行比较,这种模型训练的方式是否可行?2、文中提到用linearsvm进行模型训练,是否可以用oneclasssvm进行模型训练,oneclasssvm是否适用该数据不均衡的分类问题?展开
- JustDoDT2020-04-21交作业: https://github.com/LearningChanging/Data-analysis-in-action/tree/master/40-%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98%E5%AE%9E%E6%88%98%EF%BC%882%EF%BC%89%EF%BC%9A%E4%BF%A1%E7%94%A8%E5%8D%A1%E8%AF%88%E9%AA%97%E5%88%86%E6%9E%90
- Simon2020-04-14正负样本极不均衡,为什么在train_test_split时,没有分层采样:stratify=y?
作者回复: 演示的时候没有使用分层采样。你也可以尝试分层,实际应用中是否需要分层,根据在测试集上的表现选择即可
- Simon2020-04-14为什么v1~v28没有做归一化?只是"Amount"做了。因为v1~v28量纲差不多?
作者回复: 是的。Amount量级太大,不利于模型收敛,所以进行了标准化。
- 张贺2020-03-28精确率: 0.846 召回率: 0.733 F1值: 0.786
作者回复: 很棒!