#《机器学习》_周志华(西瓜书)&南瓜书__第3章 线性模型
5.24
待做:
- 习题整理
- 补充
https://scikit-learn.org/stable/user_guide.html
第3章 线性模型
线性模型的基本形式
d d d个属性, 示例 x = ( x 1 ; x 2 ; . . . ; x d ) x=(x_1;x_2;...;x_d) x=(x1;x2;...;xd)
x i x_i xi是 x x x在第 i i i个属性的取值
线性模型试图学得一个通过属性的线性组合来进行预测的函数。
f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b f(x)=w_1x_1+w_2x_2+...+w_dx_d+b f(x)=w1x1+w2x2+...+wdxd+b
向量形式: f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b
待学习参数:b和 w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)
线性模型: 简单、易于建模
非线性模型 = 线性模型+层级结构/高维映射。
3.2 线性回归(linear regression)
数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\left\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\right\} D={(x1,y1),(x2,y2),...,(xm,ym)},
其中 x i = ( x i 1 , x i 2 , . . . , x i d ) x_i = (x_{i1},x_{i2},...,x_{id}) xi=(xi1,xi2,...,xid)
y i ∈ y_i\in yi∈ R \mathbb{R} R
线性回归学习目标:
f ( x ) = w x i + b , 使 得 f ( x i ) ≃ y i f(x)=wx_i+b, 使得f(x_i)\simeq y_i f(x)=wxi+b,使得f(xi)≃yi

确定 w w w和 b b b的关键在于: 如何衡量 f ( x ) f(x) f(x)与 y y y之间的差别。
回归任务, 均方误差(平方损失, square loss)
均方误差最小化:
均方误差
欧几里得距离, 欧式距离(Euclidean distance)
最小二乘法(least square method): 基于均方误差最小化来进行模型求解的方法。
- 线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小。
均方误差最小化:
( w ∗ , b ∗ ) = arg min ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 = arg min ( w , b ) ∑ i = 1 m ( w x i + b − y i ) 2 = arg min ( w , b ) ∑ i = 1 m ( y i − w x i − b ) 2 \begin{aligned}(w^*,b^*) &= \mathop{\arg\min}\limits_{(w,b)}\sum\limits_{i=1}^m(f(x_i)-y_i)^2\\ &=\mathop{\arg\min}\limits_{(w,b)}\sum\limits_{i=1}^m(wx_i+b-y_i)^2 \\ &=\mathop{\arg\min}\limits_{(w,b)}\sum\limits_{i=1}^m(y_i-wx_i-b)^2 \end{aligned} (w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2=(w,b)argmini=1∑m(wxi+b−yi)2=(w,b)argmini=1∑m(yi−wxi−b)2
先求 b b b(法1:展开后求导;法2:复合函数求导法则)
E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 = ∑ i = 1 m [ b 2 − 2 b ( y i − w x i ) + ( y i − w x i ) 2 ] = m b 2 − ∑ i = 1 m [ 2 b ( y i − w x i ) + ( y i − w x i ) 2 ] ∂ E ( w , b ) ∂ b = 2 ( m b − ∑ i = 1 m ( y i − w x i ) ) 令 上 式 = 0 b = 1 m ∑ i = 1 m ( y i − w x i ) \begin{aligned} E_{(w,b)}&=\sum_{i=1}^m(y_i-wx_i-b)^2 \\ &=\sum_{i=1}^m[b^2-2b(y_i-wx_i)+(y_i-wx_i)^2]\\ &=mb^2-\sum_{i=1}^m[2b(y_i-wx_i)+(y_i-wx_i)^2]\\ \frac{\partial{E_{(w,b)}}}{\partial{b}}&=2(mb-\sum_{i=1}^m(y_i-wx_i))\\ 令上式&=0\\ b&=\frac{1}{m}\sum_{i=1}^m(y_i-wx_i) \end{aligned} E(w,b)∂b∂E(w,b)令上式b=i=1∑m(yi−wxi−b)2=i=1∑m[b2−2b(yi−wxi)+(yi−wxi)2]=mb2−i=1∑m[2b(yi−wxi)+(yi−wxi)2]=2(mb−i=1∑m(yi−wxi))=0=m1i=1∑m(yi−wxi)
复合函数求导法则对 b b b求偏导:

######################################################
E ( w , b ) = ∑ i = 1 m ( y i − w x i − b ) 2 = ∑ i = 1 m [ w 2 x i 2 − 2 w x i ( y i − b ) + ( y i − b ) 2 ] ∂ E ( w , b ) ∂ w = 2 ( w ∑ i = 1 m x i 2 − ∑ i = 1 m ( y i − b ) x i ) 令 上 式 = 0 , 同 时 将 b 代 入 \begin{aligned} E_{(w,b)}&=\sum_{i=1}^m(y_i-wx_i-b)^2 \\ &=\sum_{i=1}^m[w^2x_i^2-2wx_i(y_i-b)+(y_i-b)^2]\\ \frac{\partial{E_{(w,b)}}}{\partial{w}}&=2(w\sum_{i=1}^mx_i^2-\sum_{i=1}^m(y_i-b)x_i)\\ 令上式&=0,同时将b代入\\ \end{aligned} E(w,b)∂w∂E(w,b)令上式=i=1∑m(yi−wxi−b)2=i=1∑m[w2xi2−2wxi(yi−b)+(yi−b)2]=2(wi=1∑mxi2−i=1∑m(yi−b)xi)=0,同时将b代入
求 w w w:
复合函数求导法则对 w w w求偏导:
######################################################
多变量线性回归
f ( x i ) = w T x i + b , 使 得 f ( x i ) ≃ y i f(x_i)=w^Tx_i+b,使得f(x_i)\simeq y_i f(xi)=wTxi+b,使得f(xi)≃yi
多元线性回归(multivariate linear regression)

对数线性回归
l n y = w T x + b lny=w^Tx+b lny=wTx+b
对数函数的作用: 将线性回归模型的预测值与真实标记联系起来。
- 这样映射是为了处理分类问题,后面3.3会涉及。
3.3 对数几率回归(逻辑斯蒂回归,logistic regression)_分类:
线性模型可以进行回归学习
如何用线性模型处理分类任务呢?
- 找一个单调可微函数将分类任务的真实标记 y y y与线性回归模型的预测值联系起来。
对于二分类任务:
1、输出标记 y ∈ { 0 , 1 } y\in\left\{0,1\right\} y∈{0,1}
2、线性回归模型产生的预测值 z = w T x + b z=w^Tx+b z=wTx+b
目的:将实值 z z z转换为0/1值。
思路一:使用单位阶跃函数
- 存在的问题:单位阶跃函数不连续,不能求逆映射。
思路二:找近似单位阶跃函数,单调可微的函数:对数几率函数(logistic function)
- y = 1 1 + e − z y=\frac{1}{1+e^{-z}} y=1+e−z1
Sigmoid函数: 形似S的函数。

1、 y = 1 1 + e − ( w T x + b ) y=\frac{1}{1+e^{-(w^Tx+b)}} y=1+e−(wTx+b)1 ,用线性回归模型的预测结果去逼近真实标记的对数几率。
2、 l n y 1 − y = w T x + b ln\frac{y}{1-y}=w^Tx+b ln1−yy=wTx+b
对数几率回归优点
1、直接对分类可能性进行建模,无需事先假设数据分布。
- 避免假设分布不准确。
2、不仅预测出"类别",而且可得到近似概率预测。
- 可用于需利用概率辅助决策的任务
3、对率回归求解的目标函数是任意阶可导的凸函数。
@此处有一个推导: 极大似然法P59
3.4 线性判别分析(LDA)

LDA的思想:
1、将训练样例投影到一条直线上
2、使得同类样例的投影点尽可能接近,异类样例的投影点尽可能远离。
3、对新样本进行分类时:
- 投影到这条直线上,根据投影点的位置来确定新样本的类别。

从贝叶斯决策理论的角度阐释LDA:
- 当两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类。
LDA + 多分类:
投影 减小 样本点的维数 -> 降维
投影过程使用了 类别 -> 监督
3.5 多分类学习
基本思路: 拆解法
关键: 如何对多分类任务进行拆分,以及如何对多分类任务进行集成。
数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i = { C 1 , C 2 , . . . , C N } D=\left\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\right\},\\ y_i=\left\{C_1, C_2, ...,C_N\right\} D={(x1,y1),(x2,y2),...,(xm,ym)},yi={C1,C2,...,CN}
| 拆分策略 | 特点 |
|---|---|
| 一对一(One vs. One,OvO) | N(N-1)/2个分类结果,投票 |
| 一对其余(One vs. Rest, OvR) | 每次将一个类的样例作为正例,其他类的样例作为反例训练N个分类器。预测置信度 |
| 多对多(Many vs. Many, MvM) | – |
OvO VS OvR:
1、OvR需要训练N个分类器,而OvO需训练N(N-1)/2个分类器,OvO的存储开销和测试时间开销通常比OvR更大。
2、 类别很多时,OvO的训练开销比OvR小。
- 训练时,OvR的每个分类器均使用全部训练样例,OvO的每个分类器仅使用两个类的样例。
3、预测性能取决于具体的数据分布,多数情形下两者差不多。
纠错输出码(Error Correcting Output Codes, ECOC)
3.6 类别不平衡问题
再平衡策略
m + 表 示 正 例 数 目 , m − 表 示 负 例 数 目 m^+表示正例数目,m^-表示负例数目 m+表示正例数目,m−表示负例数目
y ′ 1 − y ′ = y 1 − y × m − m + \frac{y^{'}}{1-y^{'}}=\frac{y}{1-y}×\frac{m^-}{m^+} 1−y′y′=1−yy×m+m−
998个反例,2个正例
1、反例欠采样
2、正例过采样
3、阈值移动,再缩放。
过采样不能简单地进行重复采样,会导致严重的过拟合。
- SMOTE 插值
欠采样若随机丢弃反例,可能丢失一些重要信息。
- EasyEnsemble 集成学习机制
稀疏表示 L0范数的优化,
LASSO通过L1范数来近似L0范数
二分类问题可通过“再缩放”获得理论最优解。
多标记学习
习题:
3.1
3.1 试析什么情形下式(3.2) 中不必考虑偏置项b。
答:
式(3.2): f ( x ) = w T x + b f(x)=w^Tx+b f(x)=wTx+b
式(3.8): b = 1 m ∑ i = 1 m ( y i − w x i ) b=\frac{1}{m}\sum\limits_{i=1}^{m}(y_i-wx_i) b=m1i=1∑m(yi−wxi)
若是满足 1 m ∑ i = 1 m ( y i − w x i ) = 0 \frac{1}{m}\sum\limits_{i=1}^{m}(y_i-wx_i)=0 m1i=1∑m(yi−wxi)=0,则不用考虑 b b b
3.2
3.2 试证明,对于参数 w w w,对率回归的目标函数(3.18)是非凸的,但其对数似然函数(3.27)是凸的。
答:
关于凸函数的两个定义:
1、对区间[a, b]上定义的函数 f f f,若它对区间中任意两点 x 1 , x 2 x_1,x_2 x1,x2均有 f ( x 1 + x 2 2 ) ≤ f ( x 1 ) + f ( x 2 ) 2 f(\frac{x_1+x_2}{2})\leq\frac{f(x_1)+f(x_2)}{2} f(2x1+x2)≤2f(x1)+f(x2),则称 f f f为区间[a, b]上的凸函数。
2、对实数集上的函数,可通过求二阶导数来判别:若二阶导数在区间上非负,则称为凸函数;若二阶导数在区间上恒大于0,则称为严格凸函数。
矩阵转置求偏导运算法则参考链接

由对数几率函数的图像(P57),可知 y y y在开区间(0,1)之间,由推导里的图,二阶导无法保证在该区间内非负,因此是非凸函数。
下面的部分存疑,待确认
使用 d X d X T = I \frac{dX}{dX^T}=I dXTdX=I运算法则
3.3
3.3 编程实现对率回归,并给出西瓜数据集3.0α上的结果。
UCI数据集链接:http://archive.ics.uci.edu/ml/index.php
对数几率回归(P58), 逻辑斯蒂回归(logistic regression):在线性模型的基础上,使用Sigmoid函数,将线性模型的结果压缩到[0,1]之间,使其拥有概率意义。
"""
可视化数据
"""
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
data_path = r'D:\2022_study_ml&dl\dataset\watermelon3_0_Ch.csv'
#
data = pd.read_csv(data_path).values
is_good = data[:, 9] == '是'
is_bad = data[:, 9] == '否'
X = data[:, 7:9].astype(float)
y = data[:, 9]
y[y == '是'] = 1
y[y == '否'] = 0
y = y.astype(int)
plt.scatter(data[:, 7][is_good], data[:, 8][is_good], c='k', marker='+')
plt.scatter(data[:, 7][is_bad], data[:, 8][is_bad], c='r', marker='_') ## 这里没法用负号,用下划线替代
plt.xlabel('密度')
plt.ylabel('含糖率')
plt.legend(["好瓜", "坏瓜"],loc='upper left')
plt.tick_params(direction='in') ## 坐标刻度朝里
plt.show()

https://www.jianshu.com/p/14818a5d2360
https://zhuanlan.zhihu.com/p/431723454
3.4
3.4 选择两个UCI数据集,比较10折交叉验证法和留一法所估计出的对率回归的错误率。
3.5
3.5 编程实现线性判别分析,并给出西瓜数据集3.0α上的结果。
3.6
3.6 线性判别分析仅在线性可分数据上能获得理想结果,试设计一个改进方法,使其能较好地用于非线性可分数据。
3.7
3.7 令码长为9,类别数为4,试给出海明距离意义下理论最优的ECOC二元码并证明之。
3.8
3.8 ECOC编码能起到理想纠错作用的重要条件是:在每一位编码上出错的概率相当且独立。试析多分类任务经ECOC编码后产生的二分类分类器满足该条件的可能性及由此产生的影响。
满足的可能性:
产生的影响:
3.9
3.9 使用OvR和MvM将多分类任务分解为二分类求解时,试述为何无需专门针对类别不平衡属性进行处理。
答:
OvR:每次将一个类的样例作为正例、所有其他类的样例作为反例来训练N个分类器。
MvM:
对每个类进行了相同的处理,其拆解出的二分类任务中类别不平衡的影响会相互抵消,因此通常不需专门处理。
3.10
3.10 试推导出多分类代价敏感学习(仅考虑基于类别的误分类代价)使用“再缩放”能获得理论最优解的条件。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐




所有评论(0)