机器学习理论1(b站课程重点归纳)

本文介绍了在Jupyter中使用sklearn进行机器学习实践,包括numpy、pandas的数据处理,多特征建模、交叉验证、混淆矩阵、F1分数、ROC曲线分析,以及线性回归、多项式回归、正则化和逻辑回归的原理与应用。重点讲解了参数调整和模型评估策略,如学习率、minbatch和正则化方法。
摘要由CSDN通过智能技术生成

其中的代码实现 课程中大多在Jupter中仿真实现 用的是sklearn的工具包

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

头文件名称作用
numpy数值计算、文件输入输出、快速排序和索引
pandas读取数据
matplotlib.pyplot数据画图

多特征建模

重点在于输入数据上多引了一行
作用:减小误差、减小损耗

交叉验证

  • 定义

将train数据集分成n个部分,然后将n各部分,按一定顺序分成训练组和测试组,逐一进行验证得到结果。
例如n=3,则12 3;13 2;23 1。

混淆矩阵confusion matrix【2*2】

  • 定义

以100个学生中,80个男生,20个女生。现在需要找出所有女生,结果从班级中选择了50个人,其中有20个女生,还选择了30个男生。
T是正确,F是错误;P(positive)是代表目标类型,例如这里就是女生当作女生选出来。
TP:把女生当作女生选出来选对了。应正确选择女生20人,实际上正确选择女生20人。TP=20
FP(存伪):把女生当作女生选出来选错了。应错误选择男生0人,实际上错误选择男生30人。FP=30
TN:正确的把男生当作男生拿出来。这里还剩50人没被选出来,那就是TN=50
FN(去真):把女生当作男生选出来选错了。FN=0
【这里需要自己加强理解】

完美的分类器应该使得FP FN尽可能为0
precision= T P T P + F P \frac {TP}{TP+FP} TP+FPTP

recall= T P T P + F N \frac {TP}{TP+FN} TP+FNTP【判断成女生的所有情况中,判断对的】

将上面两个参数结合到一个F1 score的指标调和平均值给予低值更多的权重
F1= 2 1 p r e c i s i o n + 1 r e c a l l \frac {2}{\frac{1}{precision}+\frac{1}{recall}} precision1+recall12

  • 阈值对结果的影响

原本的分类器直接通过分类得分来进行分类,我们使其直接传出得分暂不分类,然后自己去设置t值
阈值越低,recall值越高,精度越低

ROC曲线

  • 定义

二元分类中常用的评估方法,绘制true positive rate(TPR)和false positive rate(FPR)
TPR=recall= T P T P + F N \frac {TP}{TP+FN} TP+FNTP;FPR= F P T N + F P \frac {FP}{TN+FP} TN+FPFP
要绘制ROC曲线需要先使用roc_curve()函数计算各种阈值的TPR FPR
一个好的ROC曲线应该尽量偏向左上方,远离从原点出发的y=x的射线。比较分类器的一种方法是测量曲线下的面积(AUC),完美分类器的面积趋向于1。不好的曲线趋于0.5。

对于线性回归的进一步处理/应用

回归方程: y ^ = θ 0 + θ 1 x 1 + . . . + θ n x n \hat{y}=\theta_0+\theta_1x_1+...+\theta_nx_n y^=θ0+θ1x1+...+θnxn[第一项为偏置项‘; θ 为权重项 \theta为权重项 θ为权重项]
MSE( X ⃗ , h θ \vec{X},h_{\theta} X ,hθ)= 1 m ∑ i = 1 m ( θ T ⋅ x ( i ) − y ( i ) ) 2 \frac1{m}\sum_{i=1}^{m}(\theta^T·x^{(i)}-y^{(i)})^2 m1i=1m(θTx(i)y(i))2
由上面两个式子可以得到
θ ^ = ( x ˉ T ⋅ x ˉ ) − 1 ⋅ x ˉ T ⋅ y ˉ \hat{\theta}=(\bar{x}^T·\bar{x})^{-1}·\bar{x}^T·\bar{y} θ^=(xˉTxˉ)1xˉTyˉ
构造随机数——>适当在左侧补1——>根据式子进行处理——>得到 θ \theta θ的估计矩阵

在这里插入图片描述
数据标准化处理特别重要,基本上拿到数据都需要做标准化处理。因为数据大小不同,适当的处理是会节约时间的

学习率对结果的影响

影响是比较大的,当学习率小,消耗的时间比较长,但是准确率比较高。学习率应该不断的衰减,范围越小后应该越精确。

  • Minbatch

所需选取数据的多少。如:Minbatch = 10;X = A[i:i+Minbatch];

多项式回归

对于不是单调变化的数据趋势,需要加入多次方来使得曲线拟合更好。在sklearn中调用了degree,degree不应该特别高,会造成【过拟合】。基本上degree取值2~3足够

那么如果避免结果过拟合呢?

测试样本个数对总体数据的拟合结果的影响,由此可以得出:训练的时候结果不一定要很好,最后选择的应该是训练和测试都达到一个较为理想的方向。即两个MSE之间的间隙要小一些,出错就比较小。
在这里插入图片描述
由此可得,当样本量比较大的时候,出现过拟合的风险就会小一些。【样本比较少实际上会出现的是欠拟合

正则化

定义:对权重参数进行惩罚,让权重参数尽可能平滑一些
θ 1 = [ 1 , 0 , 0 , 0 ] \theta_1 =[1,0,0,0] θ1=[1,0,0,0]
θ 2 = [ 1 4 , 1 4 , 1 4 , 1 4 ] \theta_2 =[\frac{1}{4},\frac{1}{4},\frac{1}{4},\frac{1}{4}] θ2=[41,41,41,41]
x = [ 1 , 1 , 1 , 1 ] x =[1,1,1,1] x=[1,1,1,1]
当x和 θ \theta θ结合过后,结果都等于1,但是并不代表两个 θ \theta θ都是值得选择的。因此,我们需要使用正则化,使得程序能够对 θ \theta θ进行正确选择。

正则化计算公式: J ( θ ) = M S E ( θ ) + α 1 2 ∑ i = 1 n θ i 2 J(\theta)=MSE(\theta)+\alpha\frac{1}{2}\sum_{i=1}^{n}\theta_i^2 J(θ)=MSE(θ)+α21i=1nθi2
其中:MSE为损失函数值。求和部分是对 θ \theta θ进行平方上面的计算作为正则损失。但是我们希望整体的损失值即 J ( θ ) J(\theta) J(θ)是越低越好,浮动的值越小越好。

岭回归(加上一个平方项)

在这里插入图片描述
我们可以从图二中看到,当alpha越大的时候,整个起伏会小一些。

Lasso(加上一个绝对值)

线性回归总结

  • 当作是一个巧合求出了 θ \theta θ ,机器学习中心思想是迭代更新。

  • 梯度下降是一种优化方式,不光在线性回归中,一些神经网络上也能用上。【重点在于学习率尽可能小,尤其是在迭代次数越来越大的时候,学习率也应该越来越小,】

  • minbatch中,一般情况下batch的数量应当越大越好

  • 多项式回归中,degree越大,抖动的程度会越大,也就是结果越复杂。一个数据的特征变换越复杂(高次项),得到结果过拟合风险越高。特征维度高一些没有关系(x—>3*x+1)。

  • 数据量越少,训练集效果越好,但是实际测试效果一般。

  • 正则化中,当惩罚力度越大,即alpha的值越大的时候,得到的决策方程越平稳。有两种不同的方法:岭回归和lasso

———————————分割线———————————————————

逻辑回归(一个经典的二分类算法,解释性很强

  1. 机器学习算法选择(先用逻辑回归再用复杂的),基本上会使用逻辑回归算法先建立一个baseline,对比算法、参数看性能提升多少
  2. 逻辑回归的决策边界可以是非线性的,可以通过非线性的曲线选取区域

Sigmoid函数:(是一个万金油)

g ( z ) = 1 1 + e − z g(z) = \frac{1}{1+e^{-z}} g(z)=1+ez1
自变量取值范围为任意实数,值域为[0,1]
意义:随便输入是什么,映射到0到1的区间上,我们在线性回归中可以得到一个预测值,再将该值映射到sigmoid函数中,这样就完成了一个由值到概率的转换,也就是分类任务。

  • 预测函数: h θ ( x ) = g ( θ T x ) = 1 1 + e − θ T x h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}} hθ(x)=g(θTx)=1+eθTx1【把预测值映射到sigmoid函数中】
    其中 θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = θ T x \theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n=\theta^Tx θ0+θ1x1+θ2x2+...+θnxn=θTx

分类任务: P ( y = 1 ∣ x ; θ ) = h θ ( x ) ; P ( y = 1 ∣ x ; θ ) = 1 − h θ ( x ) P(y=1|x;\theta)=h_\theta(x); P(y=1|x;\theta)=1-h_\theta(x) P(y=1∣x;θ)=hθ(x);P(y=1∣x;θ)=1hθ(x)
整合后可得: P ( y ∣ x ; θ ) = h θ ( x ) y ( 1 − h θ ( x ) ) 1 − y P(y|x;\theta)=h_\theta(x)^y(1-h_\theta(x))^{1-y} P(yx;θ)=hθ(x)y(1hθ(x))1y
解决逻辑
1)似然函数构建,即 P ( y ∣ x ; θ ) P(y|x;\theta) P(yx;θ)进行乘积运算得到 L ( θ ) L(\theta) L(θ)
2)对数似然:由 L ( θ ) L(\theta) L(θ)得到 l ( θ ) l(\theta) l(θ)
3)通过梯度下降得到求导结果: − 1 m ∑ i = 1 m ( y i − g ( θ T x i ) ) x i j -\frac{1}{m}\sum_{i=1}^{m}(y_i-g(\theta^Tx_i))x_i^j m1i=1m(yig(θTxi))xij【g就是sigmoid函数】
4)参数更新: θ j = θ j − α 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \theta_j=\theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_\theta(x_i)-y_i)x_i^j θj=θjαm1i=1m(hθ(xi)yi)xij
————softmax是用来解决多分类问题的
如果遇到了三个类别(红蓝绿)具体分类方法为:区分出红色【100】;区分出蓝色【010】;区分出绿色【001】。再通过三个结果同时判断三种类别[0.7 0.2 0.3]——>那就是红色
θ \theta θ的建立=【 θ \theta θ个数(几个二分类,各分类的概率值);特征数目】

!!具体代码部分见b站《机器学习入门到精通》P44-50

鸢尾花数据集iris.csv【150*4】

  • 三分类任务数据集,有四个特征向量(花瓣长度、宽度;花萼长度、宽度)
  • 通过长度宽度来分析花朵属于三个类别中的哪一个
    具体数据情况属性在下面的网址中

https://scikit-learn.org/stable/modules/generated/sklearn.datasets.load_iris.html#sklearn.datasets.load_iris

非线性决策边界

polynomial_degree(使得特征更为复杂一些)
!!具体代码部分见b站《机器学习入门到精通》P55

——————————————————分割线——————————

回归和分类任务的相互转换

  • 逻辑回归中主要是通过sigmoid函数完成了数值映射,通过概率值比较来完成分类任务
  • 以鸢尾花数据集为例:
    在这里插入图片描述

构建棋盘点

np.meshgrid(np.linspace(1,2,2).reshape(-1,1),np.linspace(10,20,3).reshape(-1,1)
得到的就是( [ [1.,2.],[1.,2.],[1.,2.] ] )和( [ [10.,10.],[15.,15.],[20.,20.] ] )
再进行np.c_[x0.ravel(),x1.ravel()]
得到第一个数据和第二个数据中的所有可能组合(1,10)(2,10)(1,15)(2,15)…

??如何将二分类任务转换为所类别分类??
softmax【将二分类任务转换为多分类任务】
softmax计算概率: p ^ k = σ ( s ( x ) ) k = exp ⁡ ( s k ( x ) ) Σ j = 1 K exp ⁡ ( s j ( x ) ) \hat{p}_k=\sigma(\mathbf{s}(\mathbf{x}))_k=\frac{\exp\left(s_k(\mathbf{x})\right)}{\Sigma_{j=1}^K\exp\left(s_j(\mathbf{x})\right)} p^k=σ(s(x))k=Σj=1Kexp(sj(x))exp(sk(x))
(1)分子是用来放大每一类的得分,分母是综合,由此来得到类别概率 【放大差异 再求归一化】

损失函数(交叉熵): J ( Θ ) = − 1 m ∑ i = 1 k = 1 m y k ( i ) log ⁡ ( p ^ k ( i ) ) J(\Theta)= -\frac{1}{m}\sum_{i = 1 k = 1}^{m}y_{k}^{(i)}\log\left(\hat{p}_{k}^{(i)}\right) J(Θ)=m1i=1k=1myk(i)log(p^k(i))
(1) y k ( i ) y_{k}^{(i)} yk(i)仅当属于当前正确类别的时候等于1
(2) log ⁡ ( p ^ k ( i ) ) \log\left(\hat{p}_{k}^{(i)}\right) log(p^k(i))概率越小,幂函数值越大,越接近1的时候,幂函数的值越小
(3)负号负负得正,属于正确类别的概率越高,损失越低

总结

  1. 对于传统逻辑回归,是对标签进行多变换。属于当前类别为1,反之为0。随之输入特征数质的变化,结果概率也会随之变化。
  2. 决策边界绘制:
    (1)构建坐标数据,在合理的范围当中,不可过于精确造成过拟合。
    (2)整合坐标数据,得到所有测试输入数据坐标点
    (3)预测,得到所有点的概率值
    (4)绘制等高线
  • 28
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值