矩阵补全(Matrix Completion)和缺失值预处理

前言

文章转载自:https://www.cnblogs.com/wuliytTaotao/p/10814770.html

1. 矩阵补全

矩阵补全(Matrix Completion),就是补上一个含缺失值矩阵的缺失部分。

矩阵补全可以通过矩阵分解(matrix factorization)将一个含缺失值的矩阵 X X X 分解为两个(或多个)矩阵,然后这些分解后的矩阵相乘就可以得到原矩阵的近似 X ′ X^{\prime} X,我们用这个近似矩阵 X ′ X^{\prime} X 的值来填补原矩阵 X 的缺失部分。

矩阵补全有很多方面的应用,如推荐系统、缺失值预处理。

除了 EM 算法、树模型,机器学习中的大多数算法都需要输入的数据是不含缺失值的。在 deep learning 模型中,通过梯度的计算公式就可以发现,如果 feature 中含有缺失值,那么梯度也会含缺失值,梯度也就未知了。对缺失值的处理是在模型训练开始前就应该完成的,故也称为预处理。

据缺失在实际场景中不可避免,对于一个包含 n n n 个 samples,每个 sample 有 m m m 个 features 的数据集 D,我们可以将该数据集 D 整理为一个 n ∗ m n * m nm 的矩阵 X X X

通过矩阵分解补全矩阵是一种处理缺失值的方式,但在介绍之前,先介绍一些简单常用的缺失值预处理方式。

2. 常用的缺失值预处理方式

2.1 不处理

不进行缺失值预处理,缺了就缺了,找一个对缺失值不敏感的算法(如“树模型”),直接训练。

2.2 剔除

对于矩阵 X X X 中缺失值很多的行或列,直接剔除。

1列代表1个sample,1行代表一个feature。

缺失值较多的行,即一个 sample 的很多 features 都缺失了;缺失值较多的列,即大部分 samples 都没有该 feature。剔除这些 samples 或 features,而不是填充它们,避免引入过多的噪声。

当数据超级多时,我们甚至可以对含有缺失值的样本直接剔除,当剔除的比例不大时,这也完全可以接受。

2.3 填充

2.3.1 简单填充

在矩阵 X X X 的每个缺失位置上填上一个数,来代替缺失值。填一个数也不能乱来,如果 feature 代表年龄,那么肯定要填正数;如果 feature 代表性别,那么填 0 或 1 更合适(0 代表男,1 代表女)。
一般有以下几种简单的填充值:(均值和众数都是在一个 feature 下计算,即在矩阵 X X X 的每一列中计算均值和众数)

  • 填 0
  • 填 均值
  • 填 众数
  • 填 中位数

2.3.2 建模填充

这种方式通过观察缺失的 feature 和其它已有的 features 之间的联系,建立一个统计模型或者回归模型,然后然后预测缺失 feature 的值应该是什么。

用 EM 算法估计缺失值也可以归为这一类。

当然,常用的缺失值处理方式还有许多,这里就不再列举了。可以看看博客http://118.31.76.100:100/math/statics_topic/deal-na/

3. 利用矩阵分解补全缺失值

如果矩阵 X X X 不含缺失值,那么矩阵分解可以将矩阵 X X X 分解成两个矩阵 U U U (大小 m × k m×k m×k)、 V V V (大小 m × k m×k m×k),其中 k < m i n { m , n } k<min\{m,n\} k<min{m,n},则: X = U V T X = UV^T X=UVT
因为 k < m i n { m , n } k<min\{m,n\} k<min{m,n},所以 r a n k ( U ) ≤ k rank(U)≤k rank(U)k r a n k ( V ) ≤ k rank(V)≤k rank(V)k,该矩阵分解又叫做低秩矩阵分解(low-rank matrix factorization)。

为什么 k < m i n { m , n } k<min\{m,n\} k<min{m,n}

  • 在 samples 和 features 之间存在 k k k 个关系,每个关系的具体含义不得而知,但如果 k ≥ m i n { m , n } k≥min\{m,n\} kmin{m,n},那么意味着每个 sample 和 feature 之间可以构建一个的关系,而其它的 samples 或者 features 可以和该关系基本无关,体现在矩阵 U(或 V)中就是某一列仅有一个元素不为0,这是不合理的。(参考矩阵分解用在推荐系统方面的解释)
  • 当 k 越大,计算量也会越大。

如果矩阵 X X X 是完整的,那么矩阵分解 X = U V T X=UV^T X=UVT 完全没问题,但现在 X X X 中含了缺失值,故没有办法用线性代数的知识直接进行矩阵分解,我们需要一种近似的解法——梯度下降法

这个时候我们令 X ≈ X ^ = U V T X≈\hat{X}=UV^T XX^=UVT ∥ X − X ^ ∥ F 2 ∥X−\hat{X}∥^2_F XX^F2 表示含缺失值的原矩阵 X X X 和 还原后的近似矩阵 X ^ \hat{X} X^ 之间误差的平方(Square error),或者称之为 reconstruction error,当然 ∥ X − X ^ ∥ F 2 ∥X−\hat{X}∥^2_F XX^F2 的计算只能在不含缺失值的项上。(∥⋅∥F 表示 Frobenius norm。)

文献中一般会将 reconstruction error ∥ X − X ^ ∥ F 2 ∥X−\hat{X}∥^2_F XX^F2 记为 ∥ R Ω ( X − X ^ ) ∥ F 2 ∥\mathcal{R}_Ω(X−\hat{X})∥^2_F RΩ(XX^)F2,其中 [ R Ω ( X − X ^ ) ] i j = { x i j − x ^ i j , if  ( i , j ) ϵ Ω 0 , otherwise [\mathcal{R}_Ω(X−\hat{X})]_{ij} = \begin{cases} x_{ij}-\hat{x}_{ij}, & \text{if $(i,j) \epsilon Ω$} \\[2ex] 0, & \text{otherwise} \end{cases} [RΩ(XX^)]ij=xijx^ij,0,if (i,j)ϵΩotherwise
其中 Ω Ω Ω 表示非缺失值矩阵元素下标的集合。这里为了简便,直接使用 ∥ X − X ^ ∥ F 2 ∥X−\hat{X}∥^2_F XX^F2,知道只在不含缺失值的项上计算平方和即可。

我们的目标的是找到矩阵 X X X 的近似矩阵 X ^ \hat{X} X^,通过 X ^ \hat{X} X^ 中对应的值来填充 X X X 中缺失的部分。而想要找到 X ^ \hat{X} X^,就是要找到矩阵 U U U V V V。当然 X ^ \hat{X} X^ 要尽可能像 X X X,体现在函数上就是 m i n ∥ X − X ^ ∥ F 2 min∥X−\hat{X}∥^2_F minXX^F2

Loss function J J J
在这里插入图片描述
其中, i , j i,j i,j 分别表示矩阵 X X X 的行和列,要求 x i j ≠ n a n x_{ij}≠nan xij=nan,否则没有办法求最小值了。上式中,未知的就是 u i l u_{il} uil, v j l v_{jl} vjl,也是我们想要求的。

随机初始化矩阵 U U U, V V V,loss function J J J 就可以得到一个误差,基于该误差计算梯度,而想要更新 U U U, V V V,只需要按照梯度下降的公式来即可。
在这里插入图片描述

算法到这里其实就可以用了,但为了更加完美,可以考虑以下步骤,加入正则项偏置

3.1 加入正则项

加入正则项,保证矩阵 U U U, V V V 中元素不要太大,此时 loss function J J J 如下所示:
在这里插入图片描述

3.2 加入偏置

偏置可以理解为每个样本都有其特性,每个feature也有其特点,故可以加入 bias 来控制。bias 分为三种,第一种是矩阵 X X X 整体的的 bias,记为 b b b,那么 b = m e a n ( X ) b=mean(X) b=mean(X),即可以用矩阵 X X X 中存在元素的均值来赋值;第二种是 sample 的 bias,记为 b u i b_{ui} bui;第三种是 feature 的 bias,记为 b v j b_{vj} bvj。 则:
在这里插入图片描述

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

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值