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=1m(f(xi)yi)2=(w,b)argmini=1m(wxi+byi)2=(w,b)argmini=1m(yiwxib)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)bE(w,b)b=i=1m(yiwxib)2=i=1m[b22b(yiwxi)+(yiwxi)2]=mb2i=1m[2b(yiwxi)+(yiwxi)2]=2(mbi=1m(yiwxi))=0=m1i=1m(yiwxi)

复合函数求导法则对 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)wE(w,b)=i=1m(yiwxib)2=i=1m[w2xi22wxi(yib)+(yib)2]=2(wi=1mxi2i=1m(yib)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+ez1

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 ln1yy=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^+} 1yy=1yy×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=1m(yiwxi)
若是满足 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=1m(yiwxi)=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]之间,使其拥有概率意义。

在这里插入图片描述
数据集链接github

"""
可视化数据
"""
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 试推导出多分类代价敏感学习(仅考虑基于类别的误分类代价)使用“再缩放”能获得理论最优解的条件。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐