| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样) -> 正文阅读 |
|
[人工智能]机器学习算法 03 —— 逻辑回归算法(精确率和召回率、ROC曲线和AUC指标、过采样和欠采样) |
文章目录系列文章机器学习算法 01 —— K-近邻算法(数据集划分、归一化、标准化) 逻辑回归学习目标:
? 1 逻辑回归介绍逻辑回归(Logistic Regression)是机器学习中的?种分类模型,虽然名字中带有回归,但其实是?种分类算法。由于算法的简单和?效,在实际中应??常?泛。 逻辑回归应用场景:
看到上?的这些场景,我们可以发现其中的特点,它们都是属于两个类别之间的判断,逻辑回归就是用来解决?分类问题的。 ? 1.1 逻辑回归原理要掌握逻辑回归,关键是两点:
? 输入逻辑回归的输入其实是一个线性回归的输出,即线性回归计算的结果。 ? 激活函数
? 输出结果解释:假设有两个类别A,B,并且假设我们的概率值为属于A(默认用1表示)这个类别的概率值。现在有?个样本的输?到逻辑回归,并输出结果0.55,这个概率值超过0.5,意味着我们训练或者预测的结果就是A类别。那么反之,如果得出结果为0.3那么,训练或者预测结果就为B(默认用0表示)类别。 当然,阀值是可以改变的。 ? 线性回归中,我们用最小二乘法衡量线性回归的损失,那么在逻辑回归中预测结果不对时,怎么衡量损失呢?例如下面图片(阀值0.6),预测结果和真实结果存在差异,错了三个。 那么如何去衡量逻辑回归的预测结果与真实结果的差异呢? ? 1.2 损失以及优化逻辑回归的损失称为对数释似然损失,公式如下: 其中 y y y是真实结果, h θ ( x ) h_\theta(x) hθ?(x)?是预测结果。根据 y y y的类别(A类 y = 1 y=1 y=1,B类 y = 0 y=0 y=0),这个式子也分为两类。 怎么理解这个式子呢?我们根据 log ? \log log??的函数图像来看,由于两个式子前面都有负号,所以图像是 l o g log log??翻转过来,假设现在 y = 1 y=1 y=1?,损失函数值图像如下。(注:图像的y轴是损失函数值) 首先要明白,无论什么情况,损失函数值都是越小越好,因此现在我们讨论 y y y:
所以,综合一下,完整的损失函数如下:其中, h θ ( x ) h_\theta(x) hθ?(x)是每次预测值,y_i$是每次预测对应的真实值 ? 现在,我们将前面的例子带入这个公式中分析损失: ? 既然知道了损失函数,那么我们同样可以使用梯度下降优化算法来减少损失函数的值,通过不断更新逻辑回归前面对应算法的权重参数,进行优化。提示原本属于1类别的概率,降低原本属于0类别的概率。
? 2 逻辑回归API介绍
默认会将类别数量少的作为正例,同时LogisticRegression?法相当于 SGDClassifier(loss=“log”, penalty=" "),SGDClassifier实现的是?个普通的随机梯度下降学习。?LogisticRegression(实现了随机平均梯度下降) ? 3 案例:肿瘤良性恶性预测原始数据下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/ 网络读取数据地址:https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data 数据描述:
? 步骤分析:
? 代码实现:
可以发现准确率很高,但在这种分类场景中我们并不只是关注准确率,而是需要关注在所有样本中是否有全部样本都被预测出结果!!就像这个肿瘤的例子,虽然高达98%,但最后有两位患者没被预测出来,那么就不完整!! ? 4 分类模型的评估对于分类模型,除了准确率,我们还需要关注其他的评估,例如精确率、召回率、F1-score等,下面进行一一介绍。 ? 4.1 分类评估方法混淆矩阵在一个分类模型运行结果之下,会出现四种情况:预测为真,结果也为真,即真正例TP;预测为假,结果也为假,即真反例TN等等如下图所示。其中,TP是True Positive,FN是False Negative。 根据这四种情况,我们可以分别得出几个评估参数。 ? 准确率准确率:所有结果中,预测正确的结果所占的比例。即 T P + T N T P + F P + T N + F N \frac{TP+TN}{TP+FP+TN+FN} TP+FP+TN+FNTP+TN?? 意义: ? 精确率精确率:预测结果的正例样本中,真正例所占的比例。即 T P T P + F P \frac{TP}{TP+FP} TP+FPTP????。 意义:判断预测的准不准。 ? 召回率召回率:真实结果的正例样本中,真正例所占的比例。即 T P T P + F N \frac{TP}{TP+FN} TP+FNTP?? 意义:判断预测的全不全面 ? F1-scoreF1-score:即 F 1 = 2 T P 2 T P + F N + F P = 2 ? 精 确 率 ? 召 回 率 精 确 率 + 召 回 率 F_1=\frac{2TP}{2TP+FN+FP}=\frac{2\cdot精确率\cdot召回率}{精确率+召回率} F1?=2TP+FN+FP2TP?=精确率+召回率2?精确率?召回率???,公式来源于 2 F 1 = 1 精 确 率 + 1 召 回 率 \frac{2}{F_1}=\frac{1}{精确率}+\frac{1}{召回率} F1?2?=精确率1?+召回率1? 意义:反应模型的稳健性,越大,说明越稳定。 ? 4.2 分类评估API
修改案例,在最后增加代码:
? 4.3 ROC曲线和AUC指标假设样本极其不均衡:有99个恶性肿瘤样本,1个良性肿瘤样本,现在我预测全部都是恶性肿瘤,根据公式计算,准确率是99%,精确率是99%,召回率是100%,F1-score则更离谱。显然这种样本不均衡的情况下,各项指标都不靠谱。此时就要用到ROC曲线和AUC指标。
? TPR与FPR这里TPR、FPR的R是指rate,"概率"的意思。 TPR:所有真实结果为正例的样本中,预测类别为1的样本比例。其实就是召回率,即 T P R = T P T P + F N TPR=\frac{TP}{TP+FN} TPR=TP+FNTP???? ? FPR:所有真实结果为假例的样本中,预测类别为1的样本比例。即 F P R = F P F P + T N FPR=\frac{FP}{FP+TN} FPR=FP+TNFP? ? ROC曲线ROC曲线是接收者操作特征曲线(receiver operating characteristic curve),是反映敏感性和特异性连续变量的综合指标。ROC曲线的横轴是FPR,纵轴是TPR。
? AUC指标AUC(Area Under Curve)是ROC曲线下的面积(对ROC曲线求积分就能得到AUC),显然这个面积的数值不会大于1。ROC曲线一般都处于 y = x y=x y=x??这条直线上方,所以AUC的取值范围一般在0.5和1之间。 使用AUC值作为评价标准是因为很多时候ROC曲线并不能清晰的直接说明哪个模型的效果更好,而AUC作为一个数值,可以更明了。
因此,通常来说,AUC越大的模型(分类器),正确率越高,预测效果越好!! AUC的API如下: 导包: 方法:
? 下面在案例里增加如下代码:
? 绘制ROC曲线现在有数据 假设这6个数据通过模型计算出了 现在对其进行ROC曲线绘制。
? 补充:解决类别不平衡问题前?我们已经初步认识了,什么是数据不均衡(就是类别不平衡)问题,但并没有给出一个较好的解决方案,只是换了评估方法。其实,在现实环境中,采集到的数据往往是?例失衡的。?如?贷数据,逾期还贷的?数?例是极低的(千分之?的?例)。 对于类别不平衡的问题,主要有两种解决方法:
? 1 构造不平衡数据集要想解决数据不均衡问题,我们先得有一个不均衡的数据集。
? 2 解决类别不平衡的方法需要安装 ? 过采样对训练集?的少数类进?“过采样”(oversampling),即增加?些少数类样本使得正、反例数?接近,然后再进?学习。 随机过采样 随机过采样是在少数类中随机选择?些样本,然后复制选择的样本?成样本集,将它们添加到中来扩?原始数据集从?得到新的少数类集合。 缺点:
? SMOTE SMOTE(Synthetic Minority Oversampling)即合成少数类过采样技术,是随机过采样?法的?个改进算法。随机过采样?法是直接对少数类进?重采?,会使训练集中有很多重复的样本,容易造成产?的模型过拟合问题。 我们?图?表达的?式,来描述?下SMOTE算法:
SMOTE算法摒弃了随机过采样复制样本的做法,可以防?随机过采样中容易过拟合的问题,实践证明此?法可以提?分类器(模型)的性能。
? 欠采样对训练集中多数类样本进?“?采样”(undersampling),即去除?些多数类中的样本使得正例、反例数?接近,然后再进?学习。 随机欠采样 随机?采样顾名思义即从多数类中随机选择?些样样本组成样本集,然后将样本集从中移除,构成一个新的数据集。 缺点:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 20:24:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |