当前位置: 首页 > news >正文

【机器学习chp4】特征工程

推荐文章1,其中详细分析了为什么L1正则化可以实现特征选择(特征剔除)
【王木头 · L1、L2正则化】三个角度理解L1、L2正则化的本质-CSDN博客
推荐文章2,里面详细分析了奇异值分解
【线性代数】矩阵变换-CSDN博客

本文遗留问题:(1)本文4.5中地那个巧合。(2)附录5.6方差的无偏估计的证明还需理解

目录

前言

一、数据探索

1、对特征类型的探索

2、缺失值

3、特征/目标分布的可视化

4、特征/目标的分布相关的统计量

5、Pandas支持的统计量

6、特征之间的相关性

7、特征与目标之间的关系

二、特征工程——数据预处理

1、数值型特征处理

(1)log变换

(2)区间量化(分箱)

(3)数据缩放:取值范围缩放、规范化

2、类别型特征编码

(1)标签编码

(2)独热编码

(3)计数编码

(4)稀有取值

(5)信息泄露

(6)哈希编码

(7)嵌入编码

三、特征工程——特征构造

四、特征工程——特征抽取

1、为什么要特征抽取?——维度灾难

(1)维度增加带给距离的灾难

(2)维度增加带给余弦相似度的灾难

2、降维概述

(1)高维空间的信息冗余

(2)降维的方法概述

3、主成分分析(PCA)

(1)投影后保留信息要最多——如何实现?

(2)求解优化问题——如何解出投影矩阵W?

(3)最终求解出的投影矩阵W

(4)PCA算法过程

(5)PCA算法图解

(6)使用SVD后的PCA算法过程

 (7)降维后的维数 D′ 在PCA中的影响

4、特征值分解

5、奇异值分解

五、特征工程——特征选择

1、手工选择

2、随机特征选择

3、基于统计量的过滤式选择

(1)基于信息增益 

(2)基于卡方检验 

(3)基于互信息

(4)三种方法对比

4、嵌入式选择

(1)基于L1正则化的特征选择

(2)基于树模型的特征选择

5、包裹式选择

(1)前向搜索

(2)后向搜索

六、⭐⭐全文总结⭐⭐

1、数据探索

2、数据与处理

3、特征构造

4、特征抽取

5、特征选择

附录

1、核密度估计

2、四分位数间距

四分位数间距的定义

四分位数间距的意义

四分位数间距的优缺点

3、余弦相似度

4、样本中心化

5、协方差矩阵

(1)定义

(2)公式推导

数据的中心化

协方差矩阵公式

(3)协方差矩阵的意义

(4)协方差矩阵的几何意义

(5)协方差矩阵的本质

(6)为什么协方差公式中除以的是(n-1)而不是n


 

前言

特征工程是原始数据与学习器的连接器。

        在解决问题时,首先进行数据探索(不属于特征工程的范畴),根据原始数据的特性初步确定学习器的类型,原始数据可能不能直接输入到学习器(例如字符串类型数据不能直接送入到线性分类模型)。然后要进行数据预处理,让数据更符合模型的输入类型或更适合所选择的模型,例如让数值型数据规范化或非数值型数据数值化等。数据处理完成后就要进行特征的选择,如果你是专家,一定情况下可以自己构造特征,但跟一般的情况是从数据中抽取特征,很多数据直接提供的特征的维度都是很高的,例如图像数据的每个像素值都是一个维度,但这些维度并不都是完全独立的,大部分特征都是冗余的,因此要实现降维,主要降维方式是主成分分析PCA。特征降维之后也可以进行特征选择,一些情况下可以随机选择特征,也可以可以凭借经验进行特征选择,凭借经验的选择也可以说是凭借大致的统计量进行的选择,当然也可以凭借严密的计算统计量进行特征选择,可以凭借的统计方式或统计量主要有(特征与标签之间的):相关系数、信息增益、卡方检验、互信息等。也可以通过嵌入式选择如L1正则化剔除不重要特征,在一些要求更高的问题中也可以通过包裹式更精确地选择特征。

 

机器学习项目的开发流程为:

ad99f7d065964a5299fcf772ad3809b4.png

        项目开始时进行数据探索分析是必要的,数据探索有助于选择合适的数据预处理和学习器。数据探索包括以下几种:

  1. 输入特征类型、输出/标签的类型
  2. 输入特征分布、输出/标签的分布:统计量、直方图
  3. 输入特征之间的关系、输入特征与标签之间的关系
  4. 数据的质量:是否有缺失值、是否有噪声点

一、数据探索

下面是对数据探索的详细分析:

1、对特征类型的探索

特征类型分为以下几种:

  • 连续型数值特征(如价格、销售量)与离散型/类别型特征(如性别、教育程度)的区分。
  • 特殊类型特征(如地理位置、时间特征)的特殊处理,视情况可作为连续特征或类别型特征对待。

2、缺失值

缺失值分析

  • 缺失值的统计分析:按行/列统计缺失值数量,计算整个数据集的缺失率。
  • 检测缺失模式。
# 计算每一行有多少个缺失值的值,即按行统计缺失值
row_null = df.isnull().sum(axis=1) 
# 按列统计缺失值
col_null = df.isnull().sum(axis=0)
#统计整个DataFrame的缺失值
all_null = df.isnull().sum().sum()

缺失值处理方法

  • 删除缺失值严重的样本或特征。
  • 对缺失值进行填补,如均值、中值填补等。
  • 使用pandas.fillna()Scikit-learn中的SimpleImputer进行灵活填充。
Pandas库的fillna函数可以对缺失值进行填补,灵活,但重用性较弱。训练集中的缺失值用训练集的统计量填补,测试集中的缺失值也要用训练集的统计量来填补
#用列中值填补
medians = df.median() 
df = df.fillna(medians)
Scikit-learn的SimpleImputer类提供一些常见填补方法
• 均值mean(默认方法)
• 中位数median
• 众数most_frequent,可用于非数值数据
• 指定的常数,用fill_value替换缺失值,可用于非数值数据
#SimpleImputer类
class SimpleImputer( 
missing_values = nan, 
Strategy = 'mean', 
fill_value = None, 
verbose=0, 
copy=True, 
add_indicator=False )
#第1列第2行的的缺失值np.nan被第1列的均值3.5替代
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy="median")
data = im1.fit_transform([[1, 2], 
[np.nan, 3], 
[7, 6]])

 

3、特征/目标分布的可视化

  • 使用直方图、核密度估计(KDE)等方法直观展示特征分布。(核密度估计见附录1
  • 可通过Seaborn工具包绘制分布图(distplotcountplot)。
对连续特征,seaborn工具包的distplot画直方图
对离散特征,seaborn工具包的countplot画直方图条形图
dataframe的value_counts()得到每个特征取值的样本数目

f89550caab384542aa508f02076a875c.png

4、特征/目标的分布相关的统计量

  • 集中趋势:均值、中值、众数。
  • 离散程度:方差、四分位数间距(IQR)、seaborn.boxplot函数。
  • 数据统计方法:利用pandas.describe()查看数据的统计特性。

四分位数间距见附录2)(seaborn.boxplot函数见附录3

5、Pandas支持的统计量

        Pandas 的 describe() 方法提供了特征的基本统计量,包括均值、标准差、最小值、最大值和四分位数等。这些统计量可以用来快速总结数据的分布特点。

6、特征之间的相关性

  • 通过皮尔逊相关系数(线性相关程度)衡量数值型特征之间的相关性。相关系数值在 -1 到 1 之间:
    • |r| > 0.5 表示强相关;
    • r = 0 表示无线性相关。
  • 使用热力图(sns.heatmap)直观展示特征相关矩阵,颜色深浅反映相关程度。
特征与特征之间强相关意味着信息冗余。可以通过主成分分析(PCA)去除冗余的特征。

 

7、特征与目标之间的关系

  • 使用散点图(sns.pairplot)查看特征与目标变量的关系,以及特征间两两关系。
  • 散点图可以直观显示分类问题中不同类别的分布差异。

通过这些分析步骤,能够更好地了解数据的结构和规律,为后续的机器学习的特征工程,模型建立奠定基础。

 

二、特征工程——数据预处理

不会做特征工程的 AI 研究员不是好数据科学家!上篇 - 连续数据的处理方法,
链接:
不会做特征工程的 AI 研究员不是好数据科学家!上篇 - 连续数据的处理方法 | 雷峰网 (leiphone.com)

1、数值型特征处理

虽然数值型特征输入是大多数机器学习模型能接受的输入,但有时候原始数值和模型假设不吻合。
  • 如一些线性模型假设输入预输出之间是线性关系,但实际不符合线性假设。
常用的数值型特征处理方法有:
• 多项式扩展: PolynomialFeatures
• log变换: np.log1p()
• 区间量化 、二值化
• 数据预处理:缩放、规范化

 

(1)log变换

有时候数值特征并不能直接适用于线性模型,可以选择使用  eq?log%28x%20+%201%29 变换来处理我们的数值特征,其中?表示数值特征。

特点:

  • 可以拉伸较小的值,同时压缩大值,使数据更符合正态分布。
  • 有助于稳定方差,适配线性模型或其他对正态分布有依赖的模型。

优点:

  • 消除极端值对模型的影响。
  • 提高与目标变量的线性相关性。

缺点:

  • 对负值和零值敏感,需先平移或特殊处理。

代码示例:

import numpy as np
df['Feature_log'] = np.log1p(df['Feature'])  # 对数变换

应用案例:

片中广告投放和销量预测的例子:

  • TVSales 数据应用对数变换后,log(TV)log(Sales) 的散点图呈现更强的线性关系。
  • **效果:**不同回归模型性能(R²分数(是用来评估回归模型的性能指标,在后续文章有详细的分析))均提升,显示了log变换的有效性。

99f14852bbc14ca085f6950fcadf9eec.png

(2)区间量化(分箱)

目的: 将连续型变量离散化,例如对收入、年龄等进行分段,以增强线性模型或分类模型的特征表达能力。

方法:

  • 等宽分箱: 将变量划分为等宽的区间(如10个等宽)。
  • 等频分箱: 每个区间样本数相等,适合样本分布不均的情况。
  • 自定义分箱: 基于业务规则或统计知识人为设置分箱。

优点:

  • 增强模型解释性。
  • 改善非线性特征的线性拟合能力。

缺点:

  • 过多分箱可能导致过拟合,过少分箱则损失信息。

代码示例:

# 等频分箱计算四分位数
quantile_list = [0, 0.25, 0.5, 0.75, 1.0]
quantiles = df['Income'].quantile(quantile_list)# 添加分箱标签
df['Income_bin'] = pd.qcut(df['Income'], q=quantile_list, labels=['低', '中', '高', '非常高'])

(3)数据缩放:取值范围缩放、规范化

目的: 对数值范围进行规范化,消除特征之间量纲差异对模型性能的影响。

主要方法:

i、标准化(Standardization): 将特征值调整为均值为0、标准差为1的分布,公式:

                                                                eq?x_%7Bscaled%7D%20%3D%20%5Cfrac%7Bx%20-%20%5Cmu%7D%7B%5Csigma%7D

  • 适用场景:对正态分布或近似正态分布的数据效果较好。
  • 代码示例:
    from sklearn.preprocessing import StandardScaler
    ss = StandardScaler()
    X_train_scaled = ss.fit_transform(X_train)
    X_test_scaled = ss.transform(X_test)
    

ii、归一化(Normalization): 将特征值缩放到[0,1]范围,公式:

                                                             eq?x_%7Bscaled%7D%20%3D%20%5Cfrac%7Bx%20-%20x_%7Bmin%7D%7D%7Bx_%7Bmax%7D%20-%20x_%7Bmin%7D%7D

  • 适用场景:值域跨度大的数据(如图像像素值)。
  • 代码示例:
    from sklearn.preprocessing import MinMaxScaler
    mm = MinMaxScaler()
    X_train_scaled = mm.fit_transform(X_train)
    

iii、最大绝对值缩放(MaxAbsScaler): 将特征值缩放到[-1, 1]范围,保留稀疏数据的零值。

  • 适用场景:稀疏矩阵特征。
  • 代码示例:
    from sklearn.preprocessing import MaxAbsScaler
    mas = MaxAbsScaler()
    X_train_scaled = mas.fit_transform(X_train)
    

iv、RobustScaler缩放

        功能:基于数据的中位数和四分位数对数据进行缩放,减少异常值的影响:

                                                eq?x_%7Bi%2Cj%7D%27%20%3D%20%5Cfrac%7Bx_%7Bi%2Cj%7D%20-%20%5Ctext%7Bmedian%7D_j%7D%7B%5Ctext%7BIQR%7D_j%7D

     其中:

  • eq?%5Ctext%7Bmedian%7D_j​:第 eq?j 列特征的中位数;
  • eq?%5Ctext%7BIQR%7D_j​:第 eq?j 列特征的四分位间距(即 Q3 - Q1)。

 

v、sklearn 的缩放器 API

在 sklearn 中,缩放器属于 preprocessing 模块。所有缩放器的接口统一,主要包括以下方法:

fit():功能:计算缩放所需的统计信息(如均值、标准差、最大值等),但不实际转换数据。

transform():功能:根据 fit() 中计算的统计信息对数据进行转换。

fit_transform():功能:fit()transform() 的结合,适合在训练集上同时计算统计信息并进行转换。

inverse_transform():功能:对已经缩放的数据进行反向变换,恢复原始特征值。

 

vi、缩放器的优缺点

缩放器优点缺点
StandardScaler保持特征的分布特性,适合正态分布数据对异常值敏感
MinMaxScaler结果范围一致,适合范围已知的非正态分布数据对异常值敏感
MaxAbsScaler保持稀疏数据的特性对非稀疏数据的效果不如其他方法
RobustScaler对异常值不敏感,适合有异常值的数据转换后数据并不归一化到固定范围(如 [0, 1])

vii、示例

from sklearn.preprocessing import StandardScaler# Step 1: 初始化缩放器
scaler = StandardScaler()# Step 2: 对训练集进行 fit 和 transform
X_train_scaled = scaler.fit_transform(X_train)# Step 3: 对测试集仅进行 transform(使用训练集的统计信息)
X_test_scaled = scaler.transform(X_test)

2、类别型特征编码

很多机器学习模型只能处理数值型数据。如果给定的数据是不同的类型,必须先将数据变成数值型。实际应用中很多特征都是离散值/类别型特征。如商品类型。
类别型特征编码有以下几种:
  • 0/1编码
  • 标签编码
  • 独热编码
  • 计数编码

(1)标签编码

功能

  • 将类别型特征映射到连续的整数值,通常按其出现顺序分配。
  • 每个类别被分配一个唯一的整数。

sklearn 实现

  • LabelEncoder:适用于单个特征。
  • OrdinalEncoder:适用于多个特征,支持指定顺序。
  • 优点
    • 简单高效,占用存储空间小。
  • 缺点
    • 对模型会引入错误的顺序关系,例如“0”可能比“1”小,而实际上类别间可能没有大小关系。

 

(2)独热编码

功能

  • 将类别型特征扩展为 K 维的稀疏向量,其中  K 为类别数量。
  • 每种类别对应一个独立的二进制特征。

优缺点:

  • 优点
    • 避免引入类别顺序,适合无序类别。
  • 缺点
    • 高基数特征会导致维度爆炸,增加存储与计算成本。
    • 通常不适用于类别数量过多的特征(如用户 ID)。

 

(3)计数编码

功能

  • 将类别型特征的取值替换为其在数据集中出现的频次或概率。
  • 可结合目标变量,通过条件概率 eq?P%28Y%7CX%29 提升编码效果。

优缺点:

  • 优点
    • 对于高基数特征非常高效。
    • 引入统计信息,适用于某些需要类别型特征与目标变量强相关的场景。
  • 缺点
    • 可能引入信息泄露,尤其是将目标变量直接参与编码。
    • 数据不足时,统计信息不准确。

 

(4)稀有取值

        在某些类别型特征中,可能存在样本数量非常少的取值(稀有取值)。如果直接对这些稀有取值进行单独编码,可能会浪费空间,同时这些特征的模型参数难以充分训练。

解决方案

  • 设置阈值:只有当某个类别的样本数量超过设定的阈值时才单独编码。
  • 低于阈值的类别统一归类为“其他”(back-off或后退箱)。

 

(5)信息泄露

问题:在分箱或计数编码中,如果直接使用目标变量 y 的统计信息进行特征编码,可能导致信息泄漏,从而影响模型的泛化性能。

防范措施

  • 使用历史数据进行统计:对当前数据的特征编码时,仅使用之前的数据统计信息。
  • 增加随机扰动:引入拉普拉斯分布的小随机噪声,以掩盖单个数据点的信息。

重要性

  • 防止模型过拟合。
  • 确保编码过程严格符合数据集划分规则。

 

(6)哈希编码

原理

  • 使用哈希函数将大范围类别值映射到一个固定维度的有限集合中。
  • 哈希冲突不可避免,但通过分配到多个“桶”(b维)后可以降低冲突对模型性能的影响。

适用场景

  • 高基数类别型特征(如IP地址、用户ID)。
  • 空间或计算资源有限,无法采用独热编码。

优点

  • 内存高效:固定输出维度。

缺点

  • 哈希冲突:相同哈希值会导致信息丢失。

 

(7)嵌入编码

懂不了。

 

 

三、特征工程——特征构造

如何获取重要特征?
如果是领域专家,知道数据的物理意义,可能可以设计更多特征。

构造特征:从原始数据构造新特征,思考业务逻辑与探索业务数据,往往需要手工创建,是科学与艺术的有机结合。

 

四、特征工程——特征抽取

如果不是领域专家,一些通用的规则:
  • 字符串型特征:Label编码
  • 时间特征:年月日、时间段(早中晚)…
  • 数值型特征:加减乘除,多项式,log, exp
  • 低基数类别型特征:独热编码
  • 高基数类别型特征:计数编码、哈希编码、嵌入编码
  • 深度学习自动学习特征:如用CNN网络提取图像特征

所有此部分主要介绍特征抽取:从原始数据抽取新特征,使用算法自动执行。

  • 将多维的或相关的特征降低到低维,以提取主要信息或生成与目标相关性更高的信息。
  • 非结构化数据:文本特征提取、音频特征提取、图像特征提取、
  • 主成分分析

1、为什么要特征抽取?——维度灾难

随着空间维度的增长,数据点越来越分散,以至于距离和密度的概念变得越来越模糊。

在低维空间(如2维),可以清楚地看到点之间的距离差异;但在高维空间中,几乎所有点的距离都相似。

(1)维度增加带给距离的灾难

下图为2维情况下距离最小的点与距离最大的点,可见距离差别很大,有1500倍:

ae17d544b64b4151bdc069dd35c177a9.png

随着维度的升高,最大距离与最小距离的比值会变小,距离这个概念会变得越来越模糊,如下图:

1f36c68b80bb48b296339408394ac0f0.png

数据点的分布趋于均匀,所有点之间的距离几乎相等。因此,高维空间中,传统的距离测度(如欧几里得距离)可能失去实际意义,因为所有点的距离都趋于一致。

(2)维度增加带给余弦相似度的灾难

没有一种距离函数或相似性函数能在避免高维带来的问题。

余弦相似度的分布:

  • 示例:随机生成的点对其余弦相似度进行统计,发现:
    • 在低维空间,余弦相似度分布较为分散。
    • 随着维度增加,余弦相似度的分布变得越来越集中,几乎所有点的相似度趋于相等。

47197dd3af6e42bd8d1bd45650f6ddd5.png

原因

  • 高维数据空间中,向量的随机分布会导致点与点之间的夹角几乎相同。

结论

  • 在高维空间中,余弦相似度和距离函数的判别力下降,传统方法可能需要重新设计或修正。

2、降维概述

(1)高维空间的信息冗余

降维是将高维数据映射到低维空间,同时保留尽可能多的信息。为什么可以降维,因为高维数据通常是冗余的,内在维度可能远小于表面维度。

下面是两个例子:

例子一、手写数字识别

c5bd578720fc469daaeeb23063d1d03e.png

这几幅图是同一幅图旋转不同角度得到的,每幅图都是28×28维的向量,但是如此高维的向量对于区分这几幅图是高度冗余的,实际潜在的结构参数(如旋转方向)可能只有1维。

例子二、文本文档分析

  • 文本可以用高维向量表示,每个维度代表一个词。
  • 潜在的结构参数可以是“主题”或“话题”,它们可能存在于一个更低维的空间中。

(2)降维的方法概述

数据集通常以矩阵的形式表示,其中每行是一个数据点,每列是一个特征。

降维方法

  1. 特征选择:选择原始特征的一个子集作为新的特征。
  2. 特征抽取:通过组合已有特征,生成新的特征。(PCA)
  • 两种方法的共同目标是将数据从高维空间映射到低维空间中,通常低维空间的维度远小于原始维度。

降维本质

  • 找到一个映射函数eq?f%3A%20%5Cmathbb%7BR%7D%5ED%20%5Crightarrow%20%5Cmathbb%7BR%7D%5E%7BD%27%7D,其中 eq?D%27%20%5Cll%20D 。

 

3、主成分分析(PCA)

在上文Fisher线性判别中提到对向量进行投影的方法,要让一个 eq?D 维向量投影到 eq?D%27 维,可以让这个向量左乘一个 eq?D%5Ctimes%20D%7B%7D%27 的矩阵。要对一系列向量进行投影,只需要一系列向量组成的矩阵与 eq?D%5Ctimes%20D%7B%7D%27 的投影矩阵相乘即可。

PCA的目的就是找到这个投影矩阵。

(1)投影后保留信息要最多——如何实现?

将高维数据投影到低维空间后,尽可能地保留数据的信息,如何来衡量保留的信息呢?这里的衡量方式是将 eq?D 维原样本通过 eq?W%5E%7BT%7D 投影到 eq?D%7B%7D%27维后,再将这个 eq?D%7B%7D%27 维的一系列样本再投影回去(通过eq?W)到 eq?D 维,但这里并不是可逆的,高维到低维投影的信息已经损失,无法挽回,这里第二次投影的升维并没有信息的增加,这里恢复 eq?D 维的原样本的信息是比原来少的。将他们作差,那么这得到的结果就是降维的信息损失,PCA的目的是让这个损失的信息最小,即最小化重建误差

误差函数

定义为原始数据与重建数据之间的误差平方和:

                                          eq?%5Cmin_%7BW%20%5Cin%20%5Cmathbb%7BR%7D%5E%7BD%20%5Ctimes%20D%27%7D%7D%20%5Csum_%7Bi%3D1%7D%5EN%20%5C%7Cx_i%20-%20W%20z_i%5C%7C%5E2

这个最小化这个损失函数等价为最大投影后的方差,即

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?max%20%5Csum_%7Bi%3D1%7D%5EN%20z_i%5ET%20z_i

​为什么最小重构误差等价于最大投影后的方差呢?下面是一个证明:

bd91d600aa9c46c7b1376497b9e2a02a.png

这里解决一个疑问:降维后的样本矩阵再升维这个过程是什么样的?

        这个升维过程是用一组更高维的基去替代较低维的基,映射后的样本向量变为前 eq?D%7B%7D%27 个元素为原来的值,而剩下的 eq?%28D-D%7B%7D%27%29 个元素值都为0。

现实生活中可以形象的认为原样本矩阵是地面上一块橡皮泥,它是3维的,一个大锤从某个方向(这个方向即是投影矩阵)将他砸扁,变成了二维,此时它处于锤子和地面之间的二维空间中,然后这个锤子又收回,但橡皮泥不会再恢复三维,但由于锤子收回了,扁平的橡皮泥又回到了三维空间,仍然可通过三维空间的坐标表示橡皮泥。

(2)求解优化问题——如何解出投影矩阵W?

中心思想:找到一个方向向量 eq?w,使得数据投影到这个方向上的方差最大。

假设数据已中心化,协方差矩阵为 eq?S%20%3D%20XX%5ET

  • 优化目标为: eq?%5Cmax_%7BW%7D%20%5Ctext%7Btr%7D%28W%5ET%20SW%29%2C%20%5Cquad%20%5Ctext%7Bs.t.%20%7D%20W%5ET%20W%20%3D%20I
  • 即找到协方差矩阵 eq?S 的特征值最大对应的特征向量。

使用拉格朗日乘子法,解决约束优化问题:

  • 对第一个投影方向 eq?w_1​,得出特征值方程: eq?S%20w_1%20%3D%20%5Clambda_1%20w_1 最大特征值对应的特征向量 eq?w_1​ 是最佳投影方向。
  • 对第二个方向 eq?w_2​,需满足正交性约束,类似推导得出: eq?S%20w_2%20%3D%20%5Clambda_2%20w_2

(3)最终求解出的投影矩阵W

        通过上面的求解可知,最终求出的投影矩阵 eq?W 为:协方差矩阵 eq?S 的最大的 eq?D%7B%7D%27 个特征值所对应的 eq?D%7B%7D%27 个特征向量组成的矩阵。

(4)PCA算法过程

所以,算法PCA的过程可总结为:

输入

  • 数据矩阵 eq?X%20%3D%20%5C%7Bx_1%2C%20x_2%2C%20%5Cdots%2C%20x_N%5C%7D,其中 eq?x_i​ 是 eq?D-维的样本数据。
  • 希望降维后的目标维度为 eq?D%27eq?D%27%20%3C%20D)。

算法过程

  • 中心化数据

    •   eq?x_i%20%3D%20x_i%20-%20%5Cfrac%7B1%7D%7BN%7D%20%5Csum_%7Bj%3D1%7D%5EN%20x_j
  • 计算协方差矩阵

    • 使用中心化后的数据计算协方差矩阵 eq?Seq?S%20%3D%20XX%5ET
    • 其中 eq?X 是数据矩阵,行代表特征,列代表样本。
  • 特征值分解

    • 对协方差矩阵 eq?S 进行特征值分解,得到特征值和特征向量。
    • 特征向量表示数据在每个主成分方向上的投影方向,特征值表示该方向上的数据方差。
  • 选择主成分

    • 按特征值从大到小排序,选择前 eq?D%27 个特征值对应的特征向量。
    • 将这些特征向量组成矩阵 eq?W%20%3D%20%5C%7Bw_1%2C%20w_2%2C%20%5Cdots%2C%20w_%7BD%27%7D%5C%7D,其中 eq?w_i​ 是对应的特征向量。

输出

投影矩阵 eq?W,用于将高维数据投影到低维空间:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​          eq?z_i%20%3D%20W%5ET%20x_i

其中 eq?z_i​ 是低维空间中的数据表示。

(5)PCA算法图解

cc9456238b734c6090ca800a7162dba5.png

(6)使用SVD后的PCA算法过程

高维情况下,协方差矩阵 eq?S 的大小为 eq?D%5Ctimes%20D ,高维情况下计算非常复杂。

所以高维情况下PCA通过奇异值分解SVD求解,

使用SVD求解PCA算法过程如下:

adc5ba6a8efd424aa30c287ac3da667d.png

 

 (7)降维后的维数 D′ 在PCA中的影响

        很显然,降维后,维数 eq?D%7B%7D%27 越小,损失的信息就越多。

如何选择 eq?D%7B%7D%27 呢?

i、用户指定

  • 用户根据具体需求或者经验,直接指定降维后的目标维数 eq?D%27
    • 例如,根据先验知识选择较小的维数来加速计算或者便于可视化。

 

ii、通过验证选择最优维数

  • 使用简单分类器(如KNN)
    • 在不同的降维维数下,通过交叉验证的方式评估分类器的性能。
    • 根据分类效果选择最优的 eq?D%27,即能够平衡维数降低和分类性能的点。

 

iii、基于累积方差贡献率

  • 使用重建阈值法,即选择前 eq?D%27 个主成分,使其累积方差贡献率达到设定的阈值(例如95%):

                                                                   eq?%5Cfrac%7B%5Csum_%7Bd%3D1%7D%5E%7BD%27%7D%20%5Clambda_d%7D%7B%5Csum_%7Bd%3D1%7D%5ED%20%5Clambda_d%7D%20%5Cgeq%20t 

        其中:

                eq?%5Clambda_d​ 是主成分的特征值(对应解释的方差大小)。

                eq?t 是累积方差贡献率的阈值(通常为0.95或0.99)。​​​​​​​

iv、特征值快速下降的趋势

          c3fbdf22766044698b66f8767418d754.png

  • 从图中可以看到,特征值一般在前几个主成分快速下降,然后趋于平缓。
  • 当特征值或累积方差贡献率曲线趋于平稳时,可以选择对应的 eq?D%27 作为降维的维数。
    • 如右图红色虚线对应的拐点位置,说明此时增加更多主成分的收益很小。

 

(8)PCA降维的优缺点

优点

  • 特征向量方法
  • 没有额外要调节的参数
  • 没有迭代
  • 没有局部最小值

缺点

  • 只用了二阶统计量,不能处理高阶依赖
  • 受限于线性投影

 

4、特征值分解

8a4e6bde0f0d40f4b5478faa6ef41985.png

在线性代数系列中对特征值分解和奇异值分解已有分析,这里不再详细介绍。

5、奇异值分解

33dddb6e1fb74c3f9895d9e0cb6593ca.png

919ee960337b4f29960882b2aa5de153.png
eq?U 是 eq?AA%5E%7BT%7D 的特征向量组成的矩阵(按相应特征值由大到小排列,即谁对应的特征值大,谁排前边)

eq?V 是 eq?A%5E%7BT%7DA 的特征向量组成的矩阵(按相应特征值由大到小排列,即谁对应的特征值大,谁排前边)

eq?%5CSigma 是 eq?U 和 eq?V 的特征值由大到小排列的对角矩阵,巧合的是 eq?U 和 eq?V 的特征值的前 eq?N 个相同。

但是数学没有巧合,这个问题我还没想好。待思考​​​​​​​

​​​​​​​

五、特征工程——特征选择

1、手工选择

        通过领域知识或者经验手动选择特征,例如剔除冗余(高度相关的特征)、不相关(例如文本停用词)、质量差(缺失值超过一定比例的特征)和方差过小的特征。手工选择其实也是粗略地根据统计量的特征选择。

2、随机特征选择

        从高维数据中随机选择一定数量的维度,可以通过 Johnson-Lindenstrauss 定理保证降维后的点近似保持原始距离,但这种方法缺乏理论保证,适用于简单任务。

 

3、基于统计量的过滤式选择

计算特征与目标变量之间的统计关联性,包括互信息、信息增益、卡方检验等。例如:

  • 信息增益通过熵的变化量衡量特征的重要性。
  • 卡方检验用于判断分类变量的独立性。

(1)基于信息增益 

当特征出现或者不出现时,预测的熵的减少,即计算:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?IG%28x_j%29%20%3D%20H%28y%29%20-%20H%28y%7Cx_j%29

        其中,eq?H%28y%29 是目标标签的熵,表示未考虑特征时的不确定性;eq?H%28y%7Cx_j%29 是在特征 eq?x_j​ 给定条件下的熵,表示引入特征后剩余的不确定性。

展开公式为:

        ​​​​​​​        eq?IG%28x_j%29%20%3D%20-%5Csum_c%20p%28y%29%20%5Clog%20p%28y%29%20+%20%5Csum_m%20p%28x_j%29%20%5Csum_c%20p%28y%7Cx_j%29%20%5Clog%20p%28y%7Cx_j%29

    优缺点

  • 优点:简单直观,能够很好地度量特征与目标标签之间的相关性。
  • 缺点:对特征值较多的变量有偏好,可能导致过拟合。

(2)基于卡方检验 

概念:

  • 卡方统计量 (eq?%5Cchi%5E2) 用于检测两个分类变量之间的独立性。
  • 特征选择中,通过检验特征 eq?x_j​ 与目标 eq?y 是否独立,来判断该特征是否有助于分类。

卡方统计量的计算公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5Cchi%5E2%20%3D%20%5Csum%20%5Cfrac%7B%28O%20-%20E%29%5E2%7D%7BE%7D

其中:

  • eq?O 是观察值(即列联表中的实际值:A、B、C、D)。
  • eq?E 是期望值,表示在假设变量独立的情况下,每个单元格的理论频率。

具体来说,期望值的计算方式是:

                                        325f3226b5c040d8adaffb228375fa5f.png

当特征和标签都只有两种取值时

 t=0t=1
c=0A=36B=30
c=1C=14D=25

卡方统计量的计算公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5Cchi%5E2%28t%2C%20c%29%20%3D%20%5Cfrac%7B%28AD%20-%20BC%29%5E2%20%28A+B+C+D%29%7D%7B%28A+C%29%28B+D%29%28A+B%29%28C+D%29%7D

卡方统计量越小,特征与标签越独立。

 

(3)基于互信息

互信息 eq?MI%28X%2CY%29 的数学表达式为:

        ​​​​​​​        ​​​​​​​        eq?MI%28X%3B%20Y%29%20%3D%20%5Csum_%7Bx%20%5Cin%20X%7D%20%5Csum_%7By%20%5Cin%20Y%7D%20p%28x%2C%20y%29%20%5Clog%20%5Cfrac%7Bp%28x%2C%20y%29%7D%7Bp%28x%29p%28y%29%7D

  • eq?p%28x%2C%20y%29:特征值 eq?x 和标签值 eq?y 同时出现的联合概率。
  • eq?p%28x%29:特征值 eq?x 的边际概率。
  • eq?p%28y%29:标签值 eq?y 的边际概率。

互信息的核心思想

  • 如果 eq?Xeq?Y 是完全独立的,则 eq?p%28x%2C%20y%29%20%3D%20p%28x%29p%28y%29,此时互信息为 0。
  • 互信息越大,说明 eq?Xeq?Y 之间的依赖关系越强。

互信息可以被理解为:

  • 测量特征值出现后,对标签熵(不确定性)的减少程度。
  • 也就是说,它衡量了特征值 eq?X 对于预测标签 eq?Y 的信息贡献。
  • 它与信息增益类似。

(4)三种方法对比

方法是否能捕获非线性依赖数据类型适用性计算复杂度对特征间关系考虑
互信息连续/分类较高
卡方检验分类较低
信息增益分类较低

 

4、嵌入式选择

        嵌入式特征选择将特征选择与模型训练结合,能够在模型训练的过程中自动选择重要的特征。这种方法的核心思想是通过模型的权重或重要性得分来评估特征的重要性。常用的嵌入式方法包括:

(1)基于L1正则化的特征选择

至于为什么L1正则化能特征选择,在王木头三种角度分析正则化中有详细分析,如下图

8ff3fafc67fb42eba6c9975e9360043f.png

L1正则化时极值点可能会被拉到坐标轴上,不太重要的特征会直接失去作用,实现了特征选择。

(2)基于树模型的特征选择

  • 方法:树模型(如CART、随机森林、GBDT等)通过特征的重要性(如分裂节点的贡献)来筛选特征。
  • 特点:特征的重要性由模型自动给出,不需要额外计算。
  • 示例:在鸢尾花分类任务中,决策树仅用花瓣长度和花瓣宽度两个特征,就能够完成分类任务。

 

5、包裹式选择

        包裹式特征选择通过指定一个学习器(如KNN、决策树)反复地训练模型并评估特征子集的性能,从而找到最佳的特征集合。这种方法通常比过滤式更准确,但计算成本较高。

(1)前向搜索

  • 方法:从零开始,每次迭代添加一个对性能提升最大的特征。
    • 一次性完成(one pass)或通过迭代式方法逐步优化。
  • 特点:适合需要高性能的场景,但可能会导致过拟合。

(2)后向搜索

  • 方法:从所有特征开始,每次迭代移除一个对性能影响最小的特征。
  • 特点:通过递归式删除,最终只保留对模型性能提升显著的特征。

 

六、⭐⭐全文总结⭐⭐

机器学习项目的开发流程为:

1、数据探索

通过数据的统计量进行可视化,并定性分析数据的特性,对缺失值进行处理,评估特征与特征,特征与标签之间的大致关系。

2、数据与处理

完成数据探索之后要对数据进行预处理,本文主要介绍了对数值型特征进行log变换、对连续型数值特征进行区间量化,还有就是对数值型特征进行缩放等然后就是对非数值型数据进行编码,介绍了7种编码方式,每种都有其自己的适用范围。

3、特征构造

特征构造需要强大的先验知识和对问题的深入理解。

4、特征抽取

特征抽取的原因主要是因为维度升高引发的维度灾难,高维度使得两个样本之间的区别变得模糊。所有的距离函数或相似性函数都不能避免维度升高带来模糊化。所有要进行降维,本文主要讲了主成分分析PCA,即D维的一系列样本向量被将为 eq?D%7B%7D%27 维,他乘的投影矩阵的构成为:每个特征都中心化后的样本组成的矩阵的协方差矩阵的特征值按大小排列的前 eq?D%7B%7D%27 个所对应的特征向量组成的矩阵即为投影矩阵。本文还提到了特征值分解和奇异值分解。

5、特征选择

模型训练前也可以进行特征选择,一些情况下可以随机选择特征,也可以可以凭借经验进行特征选择,凭借经验的选择也可以说是凭借大致的统计量进行的选择,当然也可以凭借严密的计算统计量进行特征选择,可以凭借的统计方式或统计量主要有(特征与标签之间的):相关系数、信息增益、卡方检验、互信息等。也可以通过嵌入式选择如L1正则化剔除不重要特征,在一些要求更高的问题中也可以通过包裹式更精确地选择特征。

 

 

 

 

附录

1、核密度估计

核密度估计是概率密度函数的平滑化。

核密度估计的表达式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5Chat%7Bf%7D%28x%29%20%3D%20%5Cfrac%7B1%7D%7Bn%20h%7D%20%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%20K%5Cleft%28%5Cfrac%7Bx%20-%20x_i%7D%7Bh%7D%5Cright%29

其中:

  • eq?x:估计密度的点。
  • eq?x_i​:样本数据点。
  • eq?n:样本数量。
  • eq?h带宽(bandwidth),控制平滑程度的参数,值越小,估计越贴近数据。
  • eq?K%28%5Ccdot%29核函数,通常是一个对称的概率密度函数,用于平滑数据。

常见的核函数包括:

  • 高斯核:eq?K%28x%29%20%3D%20%5Cfrac%7B1%7D%7B%5Csqrt%7B2%5Cpi%7D%7D%20e%5E%7B-%5Cfrac%7Bx%5E2%7D%7B2%7D%7D
  • 均匀核:eq?K%28x%29%20%3D%20%5Cfrac%7B1%7D%7B2%7D%20%5Cmathbf%7B1%7D_%7B%7Cx%7C%20%5Cleq%201%7D
  • 三角核:eq?K%28x%29%20%3D%20%281%20-%20%7Cx%7C%29%20%5Cmathbf%7B1%7D_%7B%7Cx%7C%20%5Cleq%201%7D

KDE的核心思想

核密度估计通过将每个数据点视为一个核函数的中心,对每个数据点的计算都依赖该点左右对称的一些列点通过核函数的平均,生成一个平滑的密度曲线。这与直方图不同,直方图依赖于固定的分箱,而核密度估计的平滑性由核函数和带宽参数决定。

KDE的优点

  1. 平滑性:相比直方图,核密度估计生成的分布更平滑,避免了由于分箱边界造成的离散性。
  2. 适用于连续数据:能够很好地表示连续变量的分布。
  3. 无分箱偏差:直方图的结果依赖于分箱的数量和位置,而KDE不依赖分箱。

 

2、四分位数间距

四分位数间距是统计学中用来描述数据分布离散程度的一个重要指标。它表示数据集中中间 50% 的范围,是上四分位数(Q3)与下四分位数(Q1)之间的差值。四分位数间距对于检测异常值、评估数据的变异性非常有用,尤其适合非对称分布的数据。

四分位数间距的定义

四分位数间距的公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5Ctext%7BIQR%7D%20%3D%20Q3%20-%20Q1

其中:

  • 下四分位数(Q1):将数据按升序排列后,位于 25% 位置的数据值(第一分位数)。
  • 上四分位数(Q3):将数据按升序排列后,位于 75% 位置的数据值(第三分位数)。
  • 中间的 50% 数据范围就是 eq?Q1eq?Q3 之间的数据。

四分位数间距的意义

  1. 反映数据的离散程度
    • IQR 直接反映了中间 50% 数据的分布范围,数值越大,数据的离散程度越高;数值越小,数据越集中。
  2. 鲁棒性(Robustness)
    • IQR 不受极端值或异常值的影响,因为它只关注数据中间部分,而忽略两端的分布。
    • 相较于标准差,IQR 更适合用于分布偏态或存在异常值的数据。
  3. 数据分布对称性分析
    • 如果数据对称分布,IQR 的范围会相对均衡。
    • 如果数据偏态(如右偏或左偏),IQR 的上下部分可能会不对称。

四分位数间距的优缺点

优点

  1. 抗干扰能力强
    • 不受异常值或极端值影响,适合偏态分布数据。
  2. 简单直观
    • 描述中间 50% 数据的集中趋势,提供对数据离散程度的有效衡量。

缺点

  1. 信息丢失
    • 仅关注中间 50% 数据,忽略了两端数据的分布。

 

3、余弦相似度

余弦相似度是一种用于衡量两个向量之间相似性的指标,通过计算它们夹角的余弦值来反映相似程度。

公式为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5Ctext%7BCosine%20Similarity%7D%20%3D%20%5Ccos%20%5Ctheta%20%3D%20%5Cfrac%7B%5Cmathbf%7BA%7D%20%5Ccdot%20%5Cmathbf%7BB%7D%7D%7B%5C%7C%5Cmathbf%7BA%7D%5C%7C%20%5C%7C%5Cmathbf%7BB%7D%5C%7C%7D

即余弦定理求向量夹角。

 

4、样本中心化

即按特征进行中心化,每个特征的所有值减去这个特征所有值的均值。

 

5、协方差矩阵

(1)定义

协方差矩阵是一种描述多维数据(即多个随机变量)间线性关系的矩阵,用于量化不同变量间的协方差。它是统计学和数据科学中常见的数据表示形式。

对于一个 eq?n%20%5Ctimes%20m 的数据矩阵 eq?Xeq?n 表示样本数,eq?m 表示特征数),协方差矩阵是一个 eq?m%20%5Ctimes%20m 的矩阵,记为 eq?%5CSigma ,定义为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​           eq?%5CSigma%20%3D%20%5Cfrac%7B1%7D%7Bn-1%7D%20X%5ET%20X

其中,协方差矩阵中的每个元素 eq?%5CSigma_%7Bij%7D 表示第 eq?i 个特征和第 eq?j 个特征之间的协方差。

(2)公式推导

假设数据矩阵 eq?X的维度为 eq?n%20%5Ctimes%20m

  • eq?n 是样本数。
  • eq?m 是特征数。

数据的中心化

在计算协方差之前,通常需要先对数据中心化,即将每个特征减去它的均值

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​     eq?X%27%20%3D%20X%20-%20%5Ctext%7Bmean%7D%28X%29

协方差矩阵公式

协方差矩阵 eq?%5CSigma 的每个元素定义为:

        ​​​​​​​        ​​​​​​​        eq?%5CSigma_%7Bij%7D%20%3D%20%5Ctext%7BCov%7D%28x_i%2C%20x_j%29%20%3D%20%5Cfrac%7B1%7D%7Bn-1%7D%20%5Csum_%7Bk%3D1%7D%5E%7Bn%7D%20%28x_%7Bki%7D%20-%20%5Cbar%7Bx%7D_i%29%28x_%7Bkj%7D%20-%20%5Cbar%7Bx%7D_j%29

其中:

  • eq?%5Ctext%7BCov%7D%28x_i%2C%20x_j%29 是第 eq?i 个特征和第 eq?j 个特征的协方差。
  • eq?x_%7Bki%7D​ 是第 eq?k 个样本在第 eq?i 个特征上的值。
  • eq?%5Cbar%7Bx%7D_i​ 是第 eq?i 个特征的均值。

最终可以用矩阵形式简化为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5CSigma%20%3D%20%5Cfrac%7B1%7D%7Bn-1%7D%20X%27%5ET%20X%27

其中 eq?X%27 是中心化后的数据矩阵。

(3)协方差矩阵的意义

  • 协方差矩阵中的每个元素 eq?%5CSigma_%7Bij%7D 表示第 eq?i 和第 eq?j 个特征之间的线性相关性。      
    • eq?%5CSigma_%7Bij%7D%20%3E%200 :两个变量正相关。
    • eq?%5CSigma_%7Bij%7D%20%3C%200 :两个变量负相关。
    • eq?%5CSigma_%7Bij%7D%20%3D%200 :两个变量不相关。
  • 协方差矩阵不仅揭示变量之间的关系,还反映了数据的整体分布,特别是特征的协同变化情况。
  • 协方差矩阵是 PCA 中的核心,用于提取数据的主方向(特征向量)。

 

(4)协方差矩阵的几何意义

  • 分布的形状和范围:
    • 协方差矩阵描述了数据的分布形状(如椭球形)及其在每个维度上的伸展程度。
    • 如果协方差矩阵是单位矩阵 eq?I,表示数据分布是球形且各维度之间独立。
  • 方向性:
    • 协方差矩阵的特征向量表示数据分布的主要方向(主轴)。
    • 特征值表示沿这些主轴的扩展程度。
  • 变换的意义:
    • 协方差矩阵可以被用来通过仿射变换(如旋转或拉伸)将数据标准化或白化。

   如果协方差矩阵的一个特征值远大于其他特征值,说明数据在某个方向上的分布显著延伸。

(5)协方差矩阵的本质

        本质上,协方差矩阵是数据分布的二阶统计量,描述了数据的第二阶统计特性(即两个变量间的协方差)。

  • 统计意义: 协方差矩阵总结了多维数据之间的线性相关性。

  • 线性代数意义: 协方差矩阵是一种对称正定矩阵,其特征值和特征向量定义了数据分布的形状和方向。

  • 几何意义: 协方差矩阵刻画了数据在高维空间中的几何结构。协方差矩阵的特征向量确定了数据的主方向,而特征值的大小则描述了分布在该方向上的扩展程度。

(6)为什么协方差公式中除以的是(n-1)而不是n

        通过样本估计总体的方差,应该是样本围绕总体均值 eq?%5Cmu 的离散程度,但是总体的均值没有,只有样本的均值 eq?%5Cbar%7Bx%7D ,样本数据点偏离 eq?%5Cbar%7Bx%7D 的程度通常会小于它偏离真实的总体均值 eq?%5Cmu 的程度,因此正常估计方差会偏小。如果按照除以n算的话算出的结果会为按照总体均值算出的eq?%5Cfrac%7Bn-1%7D%7Bn%7D倍。

定量计算证明如下:

        错误地用除以 eq?n 计算样本方差的公式

                定义样本数据为 eq?x_1%2C%20x_2%2C%20%5Cdots%2C%20x_n ,样本均值为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?%5Cbar%7Bx%7D%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Csum_%7Bi%3D1%7D%5En%20x_i

                错误地用分母 eq?n 计算样本方差为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?s_%7B%5Ctext%7Bbiased%7D%7D%5E2%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Csum_%7Bi%3D1%7D%5En%20%28x_i%20-%20%5Cbar%7Bx%7D%29%5E2

                我们需要计算 eq?E%28s_%7B%5Ctext%7Bbiased%7D%7D%5E2%29 。

        将样本方差展开

                展开 eq?%28x_i%20-%20%5Cbar%7Bx%7D%29%5E2

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?s_%7B%5Ctext%7Bbiased%7D%7D%5E2%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Csum_%7Bi%3D1%7D%5En%20%5Cleft%28x_i%5E2%20-%202x_i%20%5Cbar%7Bx%7D%20+%20%5Cbar%7Bx%7D%5E2%5Cright%29

                将求和分开,得到:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?s_%7B%5Ctext%7Bbiased%7D%7D%5E2%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Cleft%28%20%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%20-%202%5Cbar%7Bx%7D%20%5Csum_%7Bi%3D1%7D%5En%20x_i%20+%20n%5Cbar%7Bx%7D%5E2%20%5Cright%29

                注意到 eq?%5Csum_%7Bi%3D1%7D%5En%20x_i%20%3D%20n%5Cbar%7Bx%7D ,代入后可简化为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?s_%7B%5Ctext%7Bbiased%7D%7D%5E2%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Cleft%28%20%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%20-%202n%5Cbar%7Bx%7D%5E2%20+%20n%5Cbar%7Bx%7D%5E2%20%5Cright%29

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?s_%7B%5Ctext%7Bbiased%7D%7D%5E2%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Cleft%28%20%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%20-%20n%5Cbar%7Bx%7D%5E2%20%5Cright%29

        样本方差的期望值

                为了计算期望值 eq?E%28s_%7B%5Ctext%7Bbiased%7D%7D%5E2%29,我们分别计算 eq?E%5Cleft%28%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%5Cright%29 和 eq?E%5Cleft%28n%5Cbar%7Bx%7D%5E2%5Cright%29 。

                计算 eq?E%5Cleft%28%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%5Cright%29

                每个 eq?x_i​ 的期望值满足:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?E%28x_i%5E2%29%20%3D%20%5Csigma%5E2%20+%20%5Cmu%5E2

                因此:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?E%5Cleft%28%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%5Cright%29%20%3D%20n%28%5Csigma%5E2%20+%20%5Cmu%5E2%29

                计算 eq?E%28n%5Cbar%7Bx%7D%5E2%29

                样本均值 eq?%5Cbar%7Bx%7D 的期望值满足:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?E%28%5Cbar%7Bx%7D%5E2%29%20%3D%20%5Ctext%7BVar%7D%28%5Cbar%7Bx%7D%29%20+%20%5BE%28%5Cbar%7Bx%7D%29%5D%5E2

                其中 eq?%5Ctext%7BVar%7D%28%5Cbar%7Bx%7D%29%20%3D%20%5Cfrac%7B%5Csigma%5E2%7D%7Bn%7D,且 eq?E%28%5Cbar%7Bx%7D%29%20%3D%20%5Cmu。因此:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?E%28%5Cbar%7Bx%7D%5E2%29%20%3D%20%5Cfrac%7B%5Csigma%5E2%7D%7Bn%7D%20+%20%5Cmu%5E2

                于是:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​   eq?E%28n%5Cbar%7Bx%7D%5E2%29%20%3D%20n%20%5Cleft%28%5Cfrac%7B%5Csigma%5E2%7D%7Bn%7D%20+%20%5Cmu%5E2%5Cright%29%20%3D%20%5Csigma%5E2%20+%20n%5Cmu%5E2

        代入计算 eq?E%28s_%7B%5Ctext%7Bbiased%7D%7D%5E2%29

        ​​​​​​​        ​​​​​​​        ​​​​​​​                 eq?E%28s_%7B%5Ctext%7Bbiased%7D%7D%5E2%29%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Cleft%28%20E%5Cleft%28%5Csum_%7Bi%3D1%7D%5En%20x_i%5E2%5Cright%29%20-%20E%28n%5Cbar%7Bx%7D%5E2%29%20%5Cright%29

        ​​​​​​​        ​​​​​​​        ​​​​​​​                 eq?E%28s_%7B%5Ctext%7Bbiased%7D%7D%5E2%29%20%3D%20%5Cfrac%7B1%7D%7Bn%7D%20%5Cleft%28%20n%28%5Csigma%5E2%20+%20%5Cmu%5E2%29%20-%20%28%5Csigma%5E2%20+%20n%5Cmu%5E2%29%20%5Cright%29

                化简得:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        eq?E%28s_%7B%5Ctext%7Bbiased%7D%7D%5E2%29%20%3D%20%5Cfrac%7Bn-1%7D%7Bn%7D%20%5Csigma%5E2

        得证。

 

 

 

相关文章:

【机器学习chp4】特征工程

推荐文章1,其中详细分析了为什么L1正则化可以实现特征选择(特征剔除) 【王木头 L1、L2正则化】三个角度理解L1、L2正则化的本质-CSDN博客 推荐文章2,里面详细分析了奇异值分解 【线性代数】矩阵变换-CSDN博客 本文遗留问题&#…...

LeetCode螺旋矩阵

快一个月没刷题了,最近工作有些忙,今天闲下来两小时,刷一道 题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4…...

第十五届蓝桥杯JAVA的B组题目详情解析

(第一个填空太简单,就不写了,根本不用代码,直接excel计算) 目录 蓝桥杯第二个填空,类斐波那契循环数 蓝桥杯JAVA.b组第三题 -分布式队列(模拟) 食堂(蓝桥杯D题) ​编辑 星际旅行(Floyd佛洛依德) 其余的有点变态,感觉学了好像…...

在几分钟内将数据从 Oracle 迁移到 ClickHouse

ClickHouse 是一个开源的面向列的数据库管理系统。它在实时数据处理方面的出色性能显着增强了数据分析和业务洞察力。将数据从 Oracle 迁移到 ClickHouse 可以释放数据在决策中的力量,这是单独使用 Oracle 无法实现的。 本教程介绍如何使用 BladePipe 将数据从 Orac…...

ASP.NET MVC宠物商城系统

该系统采用B/S架构,使用C#编程语言进行开发,以ASP.NET MVC框架为基础,以Visual Studio 2019为开发工具,数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…...

完整http服务器

目录 背景目标描述技术特点开发环境WWW客户端浏览发展史服务端http发展史http分层概览 背景 http协议被广泛使用,从移动端,pc浏览器,http无疑是打开互联网应用窗口的重要协议,http在网络应用层中的地位不可撼动,是能…...

【专题】2024AIGC创新应用洞察报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p38310 在科技日新月异的今天,人工智能领域正以前所未有的速度发展,AIGC(人工智能生成内容)成为其中最耀眼的明珠。从其应用场景的不断拓展,到对各行业的深刻变革&#xff0…...

形态学图像处理(Morphological Image Processing)

形态学图像处理(Morphological Image Processing) 前言 ‍ 本博客为个人总结数字图像处理一课所写,并给出适当的扩展和相应的demo。 写博客跟做 checkpoint​ 很像,毕竟个人还不能达到那种信手拈来的境界,忘了就是从零开始训练&#xff0…...

【IDER、PyCharm】免费AI编程工具完整教程:ChatGPT Free - Support Key call AI GPT-o1 Claude3.5

文章目录 CodeMoss 简介CodeMoss 的模型集成如何安装和配置 CodeMossIDER 插件安装步骤 CodeMoss 的实战使用AI 问答功能代码优化与解释优化这段代码解释这段代码 文件上传与对话联网查询与 GPT 助手联网查询GPT 助手 提升开发效率的最佳实践结语更多文献 CodeMoss 简介 CodeM…...

C++11的一些实用特性

1.统一的列表初始化 在C98中,标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。 //统一的列表初始化 struct Date {int year;int month;int day; };void test1() {Date d1 { 2024,11,14 };int array1[] { 1, 2, 3, 4, 5 };int array2[5] { …...

23种设计模式-观察者(Observer)设计模式

文章目录 一.什么是观察者模式?二.观察者模式的结构三.观察者模式的应用场景四.观察者模式的优缺点五.观察者模式的实现(C示例)六.观察者模式的实现(JAVA示例)七.代码解释八.总结 类图: 观察者设计模式类图…...

【CUDA】Branch Divergence and Unrolling Loop

目录 一、避免分支发散 1.1 并行规约问题 1.2 并行规约中的发散 二、UNrolling Loops 一、避免分支发散 控制流有时依赖于 thread 索引。同一个warp中,一个条件分支可能导致性能很差。通过重新组织数据获取模式可以减少或避免 warp divergence。具体问题查看下…...

深度学习:卷积神经网络的计算复杂度,顺序操作,最大路径长度

卷积层的计算复杂度 在深度学习中,卷积层的计算复杂度主要取决于卷积核的大小、输入和输出的通道数量、以及输入序列的长度。具体来说,卷积层的计算复杂度可以通过以下几个因素来计算: 卷积核大小 k:卷积核的大小决定了每次卷积操…...

springboot 配置文件中 multipart.max-file-size 各个版本的写法

由于springboot具有几个版本,不同版本对于文件上传最大限制的配置也有所不同。 所以要注意springboot本身的版本,不然会一直报错 在springboot1.3版本中: multipart.maxFileSize在springboot1.4与springboot1.5版本中: spring…...

linux 中mysql查看慢日志

1、到mysql容器,先登录到数据库,查看是否开启 mysql -h 127.0.0.1 -uroot -p SHOW VARIABLES LIKE slow_query_log; 2、如果没有开启,需要先开启 set global slow_query_log ON; 3、查看慢日志文件 SHOW VARIABLES LIKE slow_query_log…...

单片机的基本组成与工作原理

单片机(Microcontroller Unit, MCU)是一种将计算机的主要部分集成在一个芯片上的小型计算机系统。它通常包括中央处理器(CPU)、存储器(Memory)、输入输出接口(I/O Ports)、定时器/计…...

智慧隧道和智慧交通

通过引入先进的物联网技术,将各种硬件设备如传感器、摄像头、控制系统等有效地连接并管理起来,以实现道路安全和交通流畅的目标。这些设备将能够实时监控和控制隧道内的各种设备和系统,从而提高道路安全、提升驾驶体验并降低管理成本。 在这个…...

List、Set、Map详解和区别

在 Java 中,List、Set、Map是常用的集合类型,它们各自具有不同的特点和用途,以下是对它们的详细介绍及区别分析: List(列表) 特点: 有序性:List中的元素是有序的,即元素…...

界面控件DevExpress WinForms v24.2新功能预览 - 支持.NET 9

DevExpress WinForms 拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…...

Postman之pm.test断言操作

Postman之pm.test断言操作 1.断言方法2.连接符3.条件判断符 用于验证请求的响应数据是否符合预期 1.断言方法 pm.test():定义一个测试函数,接受两个参数,一个字符串参数用来描述该测试,一个返回True/False的函数 语法格式&#…...

对数几率回归

对数几率回归简介 对数几率回归(Logistic Regression)是一种用于解决分类问题的经典统计模型,其核心思想是利用逻辑函数(Sigmoid函数)将线性回归模型的输出值映射到概率范围 [0, 1],从而实现分类预测。对数…...

docker 配置同宿主机共同网段的IP 同时通过通网段的另一个电脑实现远程连接docker

docker配置网络 #宿主机执行命令 ifconfig 查询对应的主机ip 子网掩码 网关地址 #[网卡名称]:inet[主机IP] netmask[子网掩码] broadcast[网关地址]这里需要重点关注:eno1[网卡名称]以及【192.168.31.225】网关地址 在宿主机执行docker命令创建一个虚拟…...

4-7-1.C# 数据容器 - LinkedList(LinkedList 的定义、LinkedList 结点的遍历、LinkedList 的常用方法)

LinkedList 概述 LinkedList<T> 通过节点&#xff08;Node&#xff09;来存储数据&#xff0c;每个节点包含数据和指向下一个节点的引用 LinkedList<T> 存储的元素是可重复的 LinkedList<T> 支持泛型&#xff0c;可以指定存储的元素的类型 LinkedList<…...

「三」体验HarmonyOS端云一体化开发模板——使用DevEco Studio直接创建端云一体化工程

关于作者 白晓明 宁夏图尔科技有限公司董事长兼CEO、坚果派联合创始人 华为HDE、润和软件HiHope社区专家、鸿蒙KOL、仓颉KOL 华为开发者学堂/51CTO学堂/CSDN学堂认证讲师 开放原子开源基金会2023开源贡献之星 「目录」 「一」HarmonyOS端云一体化概要 「二」体验HarmonyOS端云一…...

确保以管理员权限运行 Visual Studio 开发者命令提示符

文章目录 解决方法&#xff1a;1. 以管理员身份运行命令提示符2. 改变目录权限3. 改变项目目录位置4. 检查文件系统权限 总结&#xff1a; ********************************************************************** ** Visual Studio 2022 Developer Command Prompt v17.12.0 …...

命令执行简单(棱角社区有毒)

前言&#xff1a;小迪安全2022第一节反弹shell&#xff0c;小迪用的是两台都是云服务器&#xff0c;没有服务器可以在自己的主机上搭建也是可以的&#xff0c;主机上搭两个网站 思路&#xff1a;生成一个木马文件&#xff0c;下载到本机&#xff0c;然后利用本机上传到目标主机…...

Keil基于ARM Compiler 5的工程迁移为ARM Compiler 6的工程

环境&#xff1a; keil版本为5.38&#xff0c;版本务必高于5.30 STM32F4的pack包版本要高于2.9 软件包下载地址&#xff1a;https://zhuanlan.zhihu.com/p/262507061 一、更改Keil中编译器 更改后编译&#xff0c;会报很多错&#xff0c;先不管。 二、更改头文件依赖 观察…...

Kafka-创建topic源码

一、命令创建topic kafka-topics --create --topic quickstart-events --bootstrap-server cdh1:9092 --partitions 2 --replication-factor 2 二、kafka-topics脚本 exec $(dirname $0)/kafka-run-class.sh org.apache.kafka.tools.TopicCommand "$" 脚本中指定了…...

【网络安全】(一) 0成本添加访问级监控

互联网的安全感这个概念源于阿里。顾名思义&#xff0c;让互联网的用户对于web产品能够产生足够的信任和依赖。特别是涉及到用户资金交易的站点&#xff0c;一次严重的用户资料泄露就可以彻底毁掉你的品牌。 然而当前阶段除了bat大部分互联网行业的企业对于网络安全给的重视都…...

【Three.js基础学习】26. Animated galaxy

前言 shaders实现星系 课程回顾 使用顶点着色器为每个粒子设置动画 a属性 &#xff0c; u制服 &#xff0c;v变化 像素比&#xff1a;window.devicePixelRatio 自动从渲染器检索像素比 renderer.getPixelRatio() 如何尺寸衰减&#xff0c; 放大缩小视角时&#xff0c;粒子都是同…...

局域网创建网站/有趣的软文

出版社链接&#xff1a;http://shop.oreilly.com/product/0636920044765.do 代码链接&#xff1a;https://github.com/oreillymedia/Learning-OpenCV-3_examples 前言&#xff1a; 本书目的&#xff1a;目前&#xff0c;4方面趋势使得图像处理成为一个发展迅速的领域1 人手一手…...

深圳小程序开发定制公司/搜索引擎营销就是seo

阅读目录(Content)MTV模型Django基本命令1、下载Django&#xff1a;2、创建一个django project3、在mysite目录下创建应用4、启动django项目5、同步更改数据库表或字段6、清空数据库文件配置1.静态文件配置static配置&#xff1a;media配置&#xff1a;2.其他配置模板路径配置(…...

建筑案例网站/seo百度关键词排名

重新注册新的名称&#xff0c;真的想要重新开始了&#xff0c;走过了彷徨与不安。也要开始我的新的生活。也许人最应该经受的不是成功而是失败&#xff0c;这回真的很失败&#xff0c;不过相信我会从失败中真正的走出来的。寻找自己真正的位置。被ACM集训队踢了出来&#xff0c…...

网站建设教程书籍免费下载/百度一下你就知道官网

为了在原有MFC程序上支持WPF的Ink功能&#xff0c;看了N天的.Net相关知识。我的机器上&#xff0c;开发环境实在是令人发指&#xff0c;如果有人碰到了我现在的问题&#xff0c;希望这篇文章能够对他有所帮助。我安装了Visusal Studio 2005&#xff0c;.Net Framework 2.0, 3.5…...

河北网站建设就业考试/焦作seo推广

...

宁波应用多的建站行业/百度数据研究中心

相关文章导航Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))<视频聊天,会议开发实例8> 今天发现一个好地方,可以提供MSN在线状态代码&#xff0c;还…...