二维数据的机器学习算法?

数据挖掘 机器学习 降维
2021-10-14 13:54:32

我正在寻找一种可以将二维数据用于输入和输出的监督学习算法。作为与我的数据类似的示例,请考虑带有一些稀疏白点的黑色图像。使用全范围的灰度模糊该图像。然后创建一台可以将模糊图像作为输入并产生原始清晰图像作为输出的机器。

我可以通过在原始锐点周围取一个区域/半径来制作一些样本一维数据,但我不知道确切的半径。这将是大量的数据重复和大量的猜测。

这个问题有什么好的算法建议吗?谢谢你的时间。

2个回答

您可以简单地将M x N矩阵(您的图像)转换为MN维向量。例如,如果您有 10 个图像,每个图像 10x10 像素,您可以将它们转换为 10 个向量,每个向量包含 100 个元素(您可以按行或按列进行,没关系)。然后将所有这些向量放在一起构造一个n x d矩阵,其中n是图像的数量,d是每个图像中的像素数。

到目前为止,我们只是准备了数据进行分析。现在让我们进入这个问题:

  • 我正在寻找一种可以将二维数据用于输入和输出的监督学习算法。

这意味着什么?

首先-输入输出的维度不是机器学习算法的属性。

第二 -通过2d,你的意思是一个矩阵?恐怕您的数据不是真正的二维数据!如果您的意思是矩阵,则M x N矩阵是N维空间中 M 个样本的数据。您可能从图像中产生的那些向量也在MN维空间中。

第三 - 监督算法采用一些教学样本(称为训练)来学习任务。这里的老师是什么?如果您的训练数据包含一些模糊和对应的原始图像,那么您可以尝试通过探索模糊区域来了解白色像素的位置。我的建议:

  1. 如果对您的图像应用了平滑过滤器,则模糊像素很可能看起来像高斯。所以首先提取高斯。
  2. 由于您已经有了与那些高斯相对应的锐利白色的位置,您可以使用均值、均值的位置以及方差作为特征(输入)和锐利白色像素的位置作为目标(输出)。

分类器可以是一个简单的神经网络(MLP 应该在这里工作)或一个简单的 SVM。

如果没有有关您的数据的更多信息和对问题的更具体描述(例如,您的图像到底是什么?如果您可以在此处发布其中一张,我可能会提供更多帮助),则无法评估上述答案

根据您拥有的数据量,一个好的方法应该是某种形式的基于神经网络的编码器-解码器。

谷歌上有很多“神经网络图像去噪”的结果,但常见的方法是:

  • 从您的输入图像开始
  • 通过越来越小的卷积层
  • 通过越来越大的反卷积层将其放大(通常这部分是第一个卷积阶段的镜像)
  • 将输出与您的预期结果进行比较