ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

速通机器学习 03 | 逻辑回归:信用卡欺诈识别实战

速通机器学习 03 | 逻辑回归:信用卡欺诈识别实战 专栏前言上一节我们学习线性回归专门用来预测连续数字回归任务本节学习逻辑回归虽然名字带 “回归”实际是工业风控最常用的二分类算法用来区分两类数据正常交易 / 欺诈盗刷。案例采用银行信用卡交易数据集完整复现风控建模全流程。1. 什么是逻辑回归1.1 核心原理线性回归输出是无边界的实数不能代表概率。逻辑回归在线性公式外套一层 Sigmoid 函数把数值压缩到(0,1)区间输出结果代表 “属于欺诈交易的概率”。线性组合公式Sigmoid 激活函数1.2 分类判定规则默认判断阈值 0.5→ 正类欺诈交易Class1→ 负类正常交易Class0风控场景可手动下调阈值优先拦截可疑盗刷。1.3 模型参数、损失函数与参数优化初始化参数模型刚创建时会自动随机初始化一组权重和截距此时参数是随机值预测结果完全不准。损失函数逻辑回归使用交叉熵损失函数专门用于二分类任务用来衡量预测概率和真实标签之间的差距损失值越大代表模型预测越离谱。二分类交叉熵核心公式其中为真实标签0/1为模型预测的正类概率n 为样本总数。梯度下降优化参数模型训练本质就是循环执行梯度下降不断微调权重参数持续缩小整体损失值直到损失收敛、预测效果稳定这一步由fit()方法自动完成不需要手动计算。1.4 正则参数 C 与正则化作用sklearn 逻辑回归默认开启 L2 正则C是正则强度的倒数完整带正则项的损失公式如下公式解析前半部分为交叉熵损失负责拟合数据后半部分为 L2 正则惩罚项专门约束权重参数C 越小正则惩罚系数越大正则约束越强大幅限制权重参数的大小压缩参数区间减少模型对训练集噪声的记忆缓解过拟合C 越大正则惩罚系数越小正则约束越弱模型放开参数限制更容易贴合训练数据易出现过拟合。本次实战设置C0.01加大正则力度避免模型在不平衡的信用卡数据集上过拟合。超参数 C 的最优取值无法凭经验直接确定后面我们专门系统学习如何自动筛选最优超参数 C。2. 数据集业务介绍数据集文件creditcard.csv模拟银行贷款 / 信用卡风控数据该数据可以在本文开头下载。数据样例字段说明Time交易时间戳和欺诈无明显关联建模直接删除V1~V28脱敏加密特征银行隐私数据 PCA 处理后结果Amount交易金额数值跨度极大必须标准化Class分类标签0 正常交易1 欺诈交易数据集特点样本极度不平衡绝大多数为正常交易。3. 完整建模流程 代码分步讲解整套流程分为 5 步读取数据→标准化预处理→划分特征标签→拆分训练测试集→训练模型并评估逐段拆解代码含义。3.1 第一步导入 pandas读取本地 CSV 数据import pandas as pd # 读取信用卡交易数据集 data pd.read_csv(rD:\pythoncode2\bigdata_ai40\机械学习\data\creditcard.csv) # 打印前5行数据查看数据结构 print(data.head())讲解import pandas as pd导入表格处理工具机器学习读取 csv 必用pd.read_csv()读取本地 csv 文件填写完整文件路径data.head()输出前 5 行快速核对字段、数据是否读取正常。3.2 第二步数据标准化 删除无用特征# 导入标准化工具 from sklearn.preprocessing import StandardScaler # 创建标准化器对象 scaler StandardScaler() 仅对交易金额Amount做Z-Score标准化 data[Amount] scaler.fit_transform(data[[Amount]]) 删除无关时间特征Time data data.drop([Time],axis1)标准化公式讲解StandardScalerZ-Score 标准化工具把数据缩放为均值 0、方差 1只处理 Amount 字段V1-V28 本身已经脱敏标准化无需重复处理fit_transform()一边计算均值方差一边完成数值缩放drop([Time],axis1)删除 Time 整列axis1 代表按列删除。3.3 第三步分离特征 X 与标签 y# 导入数据集划分工具 from sklearn.model_selection import train_test_split 所有特征去掉分类标签Class x_whole data.drop(Class,axis1) 预测标签是否欺诈 y_whole data.Class讲解机器学习固定格式X 是所有输入特征y 是需要预测的结果标签drop(Class,axis1)把标签列从数据表剔除剩余全部作为特征。3.4 第四步拆分训练集、测试集# 70%训练集30%测试集固定随机种子保证结果可复现 x_train_w,x_test_w,y_train_w,y_test_w train_test_split(x_whole,y_whole,test_size 0.3,random_state1000)讲解test_size0.330% 数据作为测试集70% 用于训练random_state1000固定随机划分规则每次运行拆分结果一模一样方便复现实验训练集用来完成参数初始化、梯度下降优化测试集模拟陌生新数据检验模型真实泛化效果。3.5 第五步创建逻辑回归模型、训练、预测评估# 导入逻辑回归算法 from sklearn.linear_model import LogisticRegression # 初始化模型设置正则系数C0.01 lr LogisticRegression(C0.01) # 使用训练集完成模型训练 lr.fit(x_train_w,y_train_w) 在测试集上预测类别0正常/1欺诈 print(lr.predict(x_test_w)) 输出训练集整体准确率 print(lr.score(x_train_w,y_train_w)) 计算测试集准确率 test_score lr.score(x_test_w,y_test_w) print(test_score)讲解LogisticRegression(C0.01)实例化逻辑回归内部自动完成参数初始化同时通过 C 控制正则化强度.fit(x_train_w,y_train_w)训练核心代码执行梯度下降算法持续优化权重参数最小化交叉熵损失.predict()输入特征输出每条样本预测类别.score()自动计算准确率 预测正确样本数 / 总样本数。重要提醒本数据集正负样本失衡单纯准确率无法客观评价欺诈识别能力后续章节会讲解混淆矩阵、召回率等专业指标。4. 逻辑回归优缺点优点训练速度快适配银行海量交易流水模型可解释每个特征有权重是风控行业标准算法支持正则化能通过 C 灵活控制拟合程度输出概率分值业务可自定义风险阈值。缺点只能学习线性关系复杂非线性数据拟合差对特征尺度敏感金额类特征必须提前标准化原生仅支持二分类多分类任务需要改造。5. 本章小结逻辑回归是二分类模型Sigmoid 函数将线性计算转为 0~1 概率模型流程随机初始化参数→交叉熵损失衡量误差→梯度下降优化参数L2 正则通过超参数 C 控制强弱抑制过拟合下一节讲解最优 C 的筛选方法银行风控建模标准流程读取数据→标准化清洗→拆分数据集→模型训练评估特征标准化是逻辑回归必要步骤解决量纲差距带来的收敛问题不平衡分类场景不能只依靠准确率评估模型效果。
返回列表