DataWhale集成学习(上)——Task05基本分类模型

使用sklearn构建完整的分类项目

(1)数据集

使用IRIS鸢尾花数据集

from sklearn import datasets
import pandas as pd

iris = datasets.load_iris()
X = iris.data
y = iris.target
feature = iris.feature_names
data = pd.DataFrame(X,columns=feature)
data['target']=y
data.head()

有4个特征

  • sepal length:花萼长度
  • sepal width:花萼宽度
  • petal length:花瓣长度
  • petal width:花瓣宽度
    在这里插入图片描述

(2)评价指标

分类结果混淆矩阵
在这里插入图片描述
查准率/准确率
查全率/召回率
在这里插入图片描述
P-R图直观地显示出学习器在样本总体上的查全率和查准率
如果一个学习器的P-R曲线被另一个学习器的P-R曲线完全“包住” ,则可以断言后者的性能优于前者;如果两个学习器的P-R曲线发生交叉,则难以断言两者孰优孰劣。此时,一个比较合理的判据是比较P-R曲线下面积的大小

由于面积估算比较困难,设计了一些综合考虑查准率、查全率的性能度量
“平衡点(BEP)” 是差准确=查全率时的取值
F1度量 F 1 = 2 × P × R P + R F1=\frac{2\times{P}\times{R}}{P+R} F1=P+R2×P×R
F β F_\beta Fβ

多次训练/测试,在多个数据集上进行训练/测试,多分类任务两两对应一个混淆矩阵——在多个训练矩阵上综合考察查准率和查全率

  • 宏查准率(macro-P)、宏查全率和宏F1
    先在各混淆矩阵上分别计算出P和R,再计算平均值
  • 微查准率(micro-P)、微查全率和微F1
    先将各混淆矩阵的对应元素进行平均,得到TP等的平均值,再基于此计算

在这里插入图片描述

ROC曲线
全称是Receiver Operating Characteristic Curve,中文名为“受试者工作特征曲线”

纵轴为真正例率TPR,横轴为假正例率FPR
在这里插入图片描述

与P-R曲线一致,如果一个学习器的ROC曲线被另一个学习器完全包住,则断言后者性能更优;在交叉的情况下,考虑AUC

AUC(Area Under Curve)

  • AUC=1,完美分类器
  • 0.5<AUC<1,优于随机猜测,设定好阈值存在预测价值
  • AUC<0.5,比随机猜测要差,可以反预测而行

AUC有一个等价的性质,那就是:测试任意给一个正类样本和一个负类样本,正类样本的score有多大的概率大于负类样本的score。

ROC曲线的绘制,以一个二分类模型输出为例
在这里插入图片描述
指定不同的阈值,分别计算FPR和TPR,得到关键点,连接各点,得到如下ROC曲线
在这里插入图片描述
还有一种更为直观的方法
https://www.jianshu.com/p/2ca96fce7e81

在本次案例中 ,选择ROC曲线作为最终评价指标。

(3)选择具体的模型并进行训练

逻辑回归Logistic regression

Logistic 函数/sigmoid函数
可以将线性回归的结果转换到(0,1)区间内
在这里插入图片描述
在这里插入图片描述
一般使用迭代的优化算法:梯度下降法
sklearn实例

from sklearn.linear_model import LogisticRegression
log_iris = LogisticRegression()
log_iris.fit(X,y)
log_iris.score(X,y)

0.96

一些参数

  • penalty {‘l1’, ‘l2’, ‘elasticnet’, ‘none’}, default=’l2’正则化方式
  • dual bool, default=False 是否使用对偶形式,当n_samples> n_features时,默认dual = False。
  • C float, default=1.0
  • solver {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, default=’lbfgs’
  • l1_ratio float, default=None

加入l1正则化,结果还是0.96

线性判别分析(基于概率)

1)基于贝叶斯公式

贝叶斯定理

2)降维分类思想

朴素贝叶斯

对线性判别分析做进一步的模型简化
假设各个特征之间不相关(协方差矩阵中的协方差全部变成0,只保留各自的特征方差)
在这里插入图片描述

from sklearn.naive_bayes import GaussianNB
NB_iris = GaussianNB()
NB_iris.fit(X,y)
NB_iris.score(X,y)

0.96

决策树

给定一个观测值,因变量的预测值为它所属的终端结点内训练集最常出现的类

常用以下三种确定分裂的准则
1)信息增益
2)增益率
3)基尼系数
在这里插入图片描述
剪枝
剪枝是决策树学习算法对付“过拟合”的主要手段。
采用留出法,预留一部分数据用作“验证集”

  • 预剪枝
  • 后剪枝

对于连续变量,可以采用二分法对连续属性离散化(C4.5)

from sklearn.tree import DecisionTreeClassifier
tree_iris = DecisionTreeClassifier(min_samples_leaf=5)
tree_iris.fit(X,y)
tree_iris.score(X,y)
  • criterion:{“gini”, “entropy”}, default=”gini”
  • max_depth:树的最大深度。
  • min_samples_split:拆分内部节点所需的最少样本数
  • min_samples_leaf :在叶节点处需要的最小样本数。

SVM

最大间隔超平面,找到一个超平面使得距离超平面最近的观测点最远。
一个点距离分类超平面的远近可以表示分类预测的确信程度,符号表示分类是否正确。

函数间隔:即以 γ ^ i = y i ( w ⋅ x i + b ) \hat\gamma_i=y_i(w \cdot x_i+b) γ^i=yi(wxi+b)表示分类的正确性及确信度
几何间隔:对超平面的法向量 w w w加约束,如规范化, ∣ ∣ w ∣ ∣ = 1 \mid\mid w \mid\mid = 1 w=1,此时函数间隔成为几何间隔。 γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) \gamma_i=y_i(\frac{w}{\mid\mid w \mid\mid}\cdot x_i+\frac{b}{\mid\mid w \mid\mid}) γi=yi(wwxi+wb)

几何间隔最大的分离超平面
在这里插入图片描述
在这里插入图片描述

非线性支持向量机
将数据投影至高维度,变成线性可分的问题
在这里插入图片描述
常用的核函数
1 多项式核函数
K ( X i , X j = ( < X i , X j > + c ) d ) K(X_i,X_j = (<X_i,X_j>+c)^d) K(Xi,Xj=(<Xi,Xj>+c)d)
C用来控制低阶项的强度

2 高斯核函数(RBF核函数)
K ( X i , X j ) = e x p ( − ∣ ∣ X i − X j ∣ ∣ 2 2 2 σ 2 ) K(X_i,X_j)=exp(-\frac{\mid\mid X_i-X_j \mid\mid_2^2 }{2\sigma^2}) K(Xi,Xj)=exp(2σ2XiXj22)
需要将特征标准化

3 Sigmoid核函数
K ( X i , X j ) = t a n h ( α X i T X j + c K(X_i,X_j)=tanh(\alpha X_i^TX_j+c K(Xi,Xj)=tanh(αXiTXj+c)
此时相当于没有隐藏层的简单神经网络

4 余弦相似度
K ( X i , X j ) = X i T X j ∣ ∣ X i ∣ ∣ ∣ ∣ X j ∣ ∣ K(X_i,X_j)=\frac{X_i^TX_j}{\mid\mid X_i \mid\mid \mid\mid X_j \mid\mid} K(Xi,Xj)=XiXjXiTXj

参考文献:
DataWhale开源资料
拓展学习资料:简单理解线性判别分析https://zhuanlan.zhihu.com/p/66088884
Python实现决策树https://zhuanlan.zhihu.com/p/65304798
数学估计方法——最小方差、极大似然与贝叶斯https://zhuanlan.zhihu.com/p/41015902
机器学习之sklearn基本分类方法https://zhuanlan.zhihu.com/p/173945775
机器学习优化算法之贝叶斯优化https://zhuanlan.zhihu.com/p/146329121
机器学习之简单分类模型https://zhuanlan.zhihu.com/p/137215803
全面了解ROC曲线
机器学习基础(1)- ROC曲线理解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值