0


【学习笔记、面试准备】机器学习西瓜书要点归纳和课后习题参考答案——第3章

机器学习西瓜书要点归纳

目录地址

第3章 线性模型

3.1 基本形式

线性模型定义:
在这里插入图片描述
其中x是输入向量
在这里插入图片描述
优点:形式简单,易于建模,可解释性好。

3.2 线性回归

输入预处理:连续值可以直接用,离散值若有序,可以按序赋值变连续(如“高,中,低”变为“1,0.5,0”,否则可以单热点码编码。

回归常用MSE,要偏导数为0,当输入是一维时可以算出来:
在这里插入图片描述
在这里插入图片描述

当多元时,矩阵求导,
在这里插入图片描述

在这里插入图片描述

矩阵微分公式见南瓜书
在这里插入图片描述
原理可见:链接

  1. X
  2. T
  3. X
  4. X^TX
  5. XTX满秩,即可逆,可解得:

在这里插入图片描述

当不满秩,有多解,常见是奥卡姆剃刀式引入正则化找简单的,具体根据学习算法偏好决定。

广义线性模型:
在这里插入图片描述
这样子,是拟合

  1. g
  2. (
  3. y
  4. )
  5. g(y)
  6. g(y)。

3.3 对数几率回归

用于二分类任务。
在这里插入图片描述
二分类,理想的函数是红线的二分类函数,但是不可导,

所以要找替代函数(surrogate function),例如黑线:
对数几率函数(logistic function):
在这里插入图片描述
此时的形式为:
在这里插入图片描述
也可以为闭式解。

可以理解为,

  1. y
  2. y
  3. y是正例概率,
  4. 1
  5. y
  6. 1-y
  7. 1y是反例概率,y/(1-y)就是正例比反例更可能的概率。

绿线是给定y的y/(1-y),蓝线是给定y的ln[y/(1-y)],
期望输入一个x,线性模型可以得到一个合适的y。
在这里插入图片描述

求解时,可以用极大似然估计,也就是把每个样本的标签对应的预测求和,让这个和尽可能大。
每个样本都是让下式尽可能接近于1:
在这里插入图片描述

  1. β
  2. \beta
  3. β是要优化的参数,

则是最小化:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二阶导大于0,这是个凸函数,可以梯度下降法或牛顿法等求和。

3.4 线性判别分析

线性判别分析(Linear Discriminant Analysis, LDA):一种二分类方法。

LDA思想:对训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,不同类样例的投影点尽可能远离;对测试集,投影到该直线,根据投影点的位置确定新样本的类别。

在这里插入图片描述
具体方法:
直线就是

  1. y
  2. =
  3. w
  4. x
  5. y=wx
  6. y=wxx是输入w是参数。

要让正例

  1. y
  2. 0
  3. y_0
  4. y0​和反例
  5. y
  6. 1
  7. y_1
  8. y1​的平均值尽可能大,让正反例内的方差尽可能小:

在这里插入图片描述
也就是让J尽可能大,

  1. μ
  2. \mu
  3. μ是平均值向量,
  4. Σ
  5. \Sigma
  6. Σ是协方差矩阵。

定义
类内散度矩阵(within-class scatter matrix):
在这里插入图片描述
类间散度矩阵(between-class scatter matrix):
在这里插入图片描述

在这里插入图片描述
J恰好是

  1. S
  2. b
  3. ,
  4. S
  5. w
  6. S_b,S_w
  7. Sb​,Sw​的广义瑞利商(generalized Rayleigh quotient)。

优化方法:
该商只与w方向有关,与w大小无关。
则不妨让分母为1,优化分子:

在这里插入图片描述
拉格朗日乘子法(具体见南瓜书)得:
在这里插入图片描述
注意,

  1. λ
  2. \lambda
  3. λ只是希望约束和值相切,即垂线平行的,取值不重要,

又由于

  1. S
  2. b
  3. w
  4. S_bw
  5. Sbw的方向是
  6. μ
  7. 0
  8. μ
  9. 1
  10. \mu_0-\mu_1
  11. μ0​−μ1​(因为后面的
  12. (
  13. μ
  14. 0
  15. μ
  16. 1
  17. )
  18. T
  19. w
  20. (\mu_0-\mu_1)^Tw
  21. 0​−μ1​)Tw是标量),所以只要数乘该方向向量
  22. λ
  23. (
  24. μ
  25. 0
  26. μ
  27. 1
  28. )
  29. \lambda(\mu_0-\mu_1)
  30. λ(μ0​−μ1​)即可了。

可得:
在这里插入图片描述

  1. S
  2. w
  3. S_w
  4. Sw​常用奇异值分解表示,为了追求数值稳定性。

可从贝叶斯决策理论角度阐述,可以证明,数据同先验、满足高斯分布且协方差相等,LDA可达最优分类。

推广到多分类任务:
定义:
在这里插入图片描述
Sb变为
在这里插入图片描述
(和之前N=2时的定义相比,只会差一个权重系数

  1. m
  2. 1
  3. m
  4. 2
  5. /
  6. (
  7. m
  8. 1
  9. +
  10. m
  11. 2
  12. )
  13. m_1m_2/(m_1+m_2)
  14. m1m2​/(m1​+m2​),不影响优化结果)

优化目标可为:
在这里插入图片描述
tr是各对角线元素之和,最后

  1. W
  2. T
  3. X
  4. W^TX
  5. WTX是一个
  6. N
  7. 1
  8. N-1
  9. N1维的向量,N是类别数。


在这里插入图片描述

这次的推导也是看南瓜书,原理看链接

W的解是

  1. S
  2. w
  3. 1
  4. S
  5. b
  6. S_w^{-1}S_b
  7. Sw1Sb​的前N-1个最大的广义特征值对应的特征向量,是最小化损失的有损压缩。

d维变成N-1维的向量,也可以作为降维的方法,可以把维度改为任意的d’而不必是N-1,但是

  1. d
  2. N
  3. 1
  4. d'\le N-1
  5. d′≤N−1因为Sb的秩就是N-1。

原因可参考链接,也可以在n=2时验证,理解了2个类别秩为1可以数学归纳法。

之后还是做投影,看和哪个类的距离最近。

3.5 多分类学习

本节介绍了3种模式,通过二分类器达到多分类的目的。
一对一(One vs. One,OvO)
一对其余(One vs. Rest,OvR)
多对多(Many vs. Many,MvM)

OvO和OvR:
在这里插入图片描述
MvM之一:纠错输出码(Error Correcting Output Codes,ECOC)
在这里插入图片描述
C是类别的编码,f是分类器。

还有DAG形式的MvM等。

3.6 类别不平衡问题

对于二分类,因为y/(1-y)是正例/负例出现的概率。
令m+、m-分别是正负例样本数,那么期望概率是m+/m-的时候,要有以m+/m-为阈值而不是原来的1,即:
在这里插入图片描述
具体做法除了以上的“阈值移动(threshold-moving)”,还有反例“欠采样(undersampling)”(这常常结合集成模型防止丢失主要信息),正例“过采样(oversampling)”(这常常使用插值等方法数据增强缓解过拟合)。

此外,令期望出现正例的概率是cost-/cost+也可以作为代价敏感学习的方法,当cost-小时多预测为负,反之亦然。

3.7 阅读材料

习题

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

当全0向量输入时输出应该是0时。

在这里插入图片描述
在这里插入图片描述
反证法:当b=0,x=1,就是sigmoid函数,显然非凸。
在这里插入图片描述
在书中二阶导>0。
在这里插入图片描述
牛顿迭代法:

  1. import numpy as np
  2. import pandas as pd
  3. Set = pd.read_csv("data.csv")# 数据集
  4. X = np.array(Set[['密度','含糖率']])# 标签
  5. Y = np.where(np.array(Set[['好瓜']])=='是',1,0)
  6. N,Dy = Y.shape
  7. X = np.append(X,np.ones(N).reshape(N,1),axis=1)
  8. _,Dx = X.shape
  9. X=X.T
  10. Y=Y.T
  11. Beta = np.random.random(size=(Dx,1))
  12. T =10for t inrange(T):
  13. p1=np.exp(Beta.T@X)/(1+np.exp(Beta.T@X))
  14. f1=(-np.sum(X*(Y-p1),axis=1)).reshape(3,1)
  15. f2=(X*p1*(1-p1))@X.T
  16. Beta = Beta - np.linalg.inv(f2)@f1
  17. print('t:',t)print('Beta:',Beta)print('p1:',p1)# 可视化import matplotlib.pyplot as plt
  18. plt.scatter(X[0], X[1], s=10, marker='o')
  19. plt.xlabel('x0')
  20. plt.ylabel('x1')
  21. plt.title('Title')for i inrange(N):
  22. plt.text(X[0][i], X[1][i],"{},{:.3f}".format(Y[0][i],p1[0][i]))
  23. x=np.array([0.2,0.9])
  24. a =-Beta[0][0]/Beta[1][0]# 直线斜率
  25. b =-Beta[2][0]/Beta[1][0]# 直线截距
  26. y_line = a * x + b # 直线方程
  27. plt.plot(x, y_line,'r--')
  28. plt.show()

在这里插入图片描述
线右上是预测1,左下是预测0.

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
参考SVM的核函数。

在这里插入图片描述
目标是

  1. m
  2. a
  3. x
  4. (
  5. h
  6. (
  7. c
  8. 0
  9. ,
  10. c
  11. 1
  12. )
  13. +
  14. h
  15. (
  16. c
  17. 0
  18. ,
  19. c
  20. 2
  21. )
  22. +
  23. h
  24. (
  25. c
  26. 0
  27. ,
  28. c
  29. 3
  30. )
  31. +
  32. h
  33. (
  34. c
  35. 1
  36. ,
  37. c
  38. 2
  39. )
  40. +
  41. h
  42. (
  43. c
  44. 1
  45. ,
  46. c
  47. 3
  48. )
  49. +
  50. h
  51. (
  52. c
  53. 2
  54. ,
  55. c
  56. 3
  57. )
  58. )
  59. max(h(c0,c1)+h(c0,c2)+h(c0,c3)+h(c1,c2)+h(c1,c3)+h(c2,c3))
  60. max(h(c0,c1)+h(c0,c2)+h(c0,c3)+h(c1,c2)+h(c1,c3)+h(c2,c3))
  61. h
  62. (
  63. c
  64. i
  65. ,
  66. c
  67. j
  68. )
  69. =
  70. s
  71. u
  72. m
  73. (
  74. a
  75. b
  76. s
  77. (
  78. c
  79. i
  80. c
  81. j
  82. )
  83. )
  84. h(ci,cj)=sum(abs(ci-cj))
  85. h(ci,cj)=sum(abs(cicj))

不失一般性,任意固定c0,其他进行搜索,运算次数O(227)=O(134,217,728),可以暴力枚举。

在这里插入图片描述

之所以要满足这个条件,是因为,如果不是,都会带来更加偏好某一个类的效果。
是否满足该条件?
这个要取决于编码的具体方式,不是二分类能决定的。
但是二分类的分类效果也会影响概率,比如数据不均等。
当编码长度冗余,会影响独立性。
在这里插入图片描述
因为期望上影响相互抵消。
在这里插入图片描述
多分类都可以是二分类的直接套用。
能获得理论最优解,那么"训练集是真实样本总体的无偏采样"要满足。


本文转载自: https://blog.csdn.net/qq_51945248/article/details/129921651
版权归原作者 出尘呢 所有, 如有侵权,请联系我们删除。

“【学习笔记、面试准备】机器学习西瓜书要点归纳和课后习题参考答案——第3章”的评论:

还没有评论