机器学习基本参数的学习以及PR曲线以及ROC曲线的绘制
基本参数
**过拟合:**学习器把训练样本训练的太好了,把训练样本自身一些特点当成所有潜在样本都具有的一些性质。(用于评估模型的泛化能力)
造成的原因:
算法学习能力比较强
怎么解决呢?
增加训练种类、增加训练集(训练集多了,总不可能全学会了吧)
**欠拟合:**学习器训练的不太好,一般性质都没训练出来。(用于评估模型的泛化能力)
造成的原因:
算法学习能力低下
怎么解决呢?
优化算法、增大训练次数(我算法好一点学多一点、或者我不搞算法,我多两次总会好点)
直观比较如下图:
**性能度量:**衡量模型泛化能力的评价标准。
错误率: 分类错误的样本数量占样本总数的比例。
精度: 预测正确的样本数量占样本总数的比例。
**查准率:**正确预测的样本数量占预测正确的样本的比例 (单位1:预测正确的样本数量)
**查全率:**正确预测的样本数量占正确样本的比例 (单位1:正确的样本)
对于这两个度量,一般来说一个高了另一个就低了。
误差: 学习器的实际预测输出与样本的真实输出之间的差异。
训练误差:学习器在训练集上的误差。
泛化误差:新样本的误差。
几种曲线的介绍
PR曲线
定义:以查全率为横轴,查准率为纵轴的二维坐标轴
作用:直观显示学习器在样本总体上的查全率、查准率,在进行比较是可以比较两个曲线与两个坐标轴之间的面积来判断哪一个学习器比较好(面积大的好)。
例图如下:
ROC曲线(受试者工作特征)
根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为整理进行预测,每次计算TPR和FPR作为横纵坐标从而绘制得到的二维坐标图。(TPR和FPR计算公式如下)
AUC:ROC曲线与横纵坐标轴的面积,进行判断两个曲线的优劣情况。
PR曲线以及ROC曲线代码实现
PR曲线
这里借鉴一篇博客中PR曲线的实现;
关于数据集:乳腺癌数据集的原型是一组病灶造影图片,该数据集的提供者在收集到这些图片的初期,首先对图片进行了分析,从每张图片中提取主要的特征,然后编写图片处理程序,从图片中抽取这些特征。本数据集只关注了10个原始特征,然后又求得每个原始特征的标准差和最大值作为两个衍生特征,这样,最终数据集呈现出的效果便是30个特征。是一个典型的二分类问题!(数据集描述来源:https://blog.youkuaiyun.com/m0_54510474/article/details/124581706)
# 乳腺癌数据集
from sklearn.metrics import precision_recall_curve
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt
data = load_breast_cancer() # load_breast_cancer()是sklearn的数据集,下面的X&