【问题标题】:ML model for Signal Decomposition信号分解的机器学习模型
【发布时间】:2020-06-02 08:36:11
【问题描述】:

所以最近接到一个任务,总结如下:

假设我们有 3 个函数f1, f2, f3,并且这些函数的某种组合给了我们F

af1 + bf2 + cf3 = F

组件函数简单且单变量。我为他们的xy 提供了一系列值。

在传统回归中,任务将是逼近 F,而 f1...f3 是在每个数据点上变化的输入,a, b, c 是我们想要逼近的权重,然后它们将是用于计算的相同值F 用于未知 F 的所有数据点。

然而,就我而言,任务是学习f1, f2, f3 的组合,这将产生一个给定的F(或者F 如何分解为f1, f2, f3)。所以F 是已知的,f1,f2,f3 也是已知的 但目标是找到因数据点而异的权重a, b, c

我研究了如何将其构建为一项 ML 任务以及使用哪种范例,但还没有找到。我已经检查了反向回归、分解机器,但这些似乎都不是我需要的。

更新:一些上下文

我有 3 个强度信号作为用于生成原色 RGB 的光波长的函数。生成这些信号的功能是已知的。现在,可以组合这些颜色以获得信号是RGB信号的线性组合的二次色。

因此,任务是:给定辅助颜色的信号,我如何确定给出该颜色的 RGB 的线性组合。是否可以训练模型来学习将二次色信号分解为 RGB 信号?

如果我上面的数学公式不够清楚,我希望这有助于更好地理解。

任何有关前进方向的帮助将不胜感激。

【问题讨论】:

  • 也许我不完全理解你描述的问题,但它听起来类似于“找到函数f1f2,这样它们一起给出了一个已知函数F = f1 + f2”。基本上对于任意a, b, f1, f2c != 0,您可以编写满足您原始方程的函数f3 = (F-af1-bf2)/c。基本上,您的问题是从左到右的一对一映射(右手边未知,左手已知),但从右到左是一对多(实际上是无限的)。
  • @Aramakus 你有一些想法,但我不是在寻找f1, f2, f3,因为它们是已知的并且不会变化。相反,我正在寻找a, b, c,以便F 分解(或分解)为F = a*f1 + b*f2 + c*f3。解不必是唯一的,任何满足给定F 方程的a, b, c 值都是可以接受的。

标签: python machine-learning regression factorization


【解决方案1】:

您似乎正在研究拟合问题(例如最小二乘拟合)。这等效于带有MSE 损失的Linear Regression。你的变量是a, b, c。您的Y_i = F(x_i) 和您的X_i = ( f1(x_i, f2(x_i), f3(x_i) ),其中x_i 是您选择的一组离散点,越多越好,但您可能希望从大约 20 个开始,并通过逐渐增加它们的数量进行试验,看看如何你的健康得到改善。希望这可以帮助。我假设您熟悉 sklearn,它有一个开箱即用的出色 Linear Regression 模块(请注意,MSE 损失被硬编码到它的定义中)。下面是一个提取优化参数的例子:

import numpy as np
from sklearn.linear_model import LinearRegression

# Generate X and Y from the equation y = 1 * x_0 + 2 * x_1 + 3
X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
y = np.dot(X, np.array([1, 2])) + 3
# Fit Linear Regression model
reg = LinearRegression().fit(X, y)
# Get coefficients
print(reg.coef_)

将输出[1., 2.]

解决您的特定问题。我假设您不使用滤光片,而只是观察检测器每个像素的总强度,而与底层波长无关。让我们假设IR(x_i), IB(x_i), IG(x_i) 是红色、绿色和蓝色信号的已知分布。让我们将IM(x_i) = a*IR(x_i) + b*IB(x_i) + c*IG(x_i) 表示为混合颜色。表示为来自红色、绿色和蓝色源的强度的线性组合(所有这些强度的值都被称为像素位置的函数x_i)。如果目标是计算出a, b, c,那么您可以分别表示Y_i = IM(x_i)X_i = (IR(x_i) , IB(x_i) , IG(x_i)),并遵循线性回归代码。

附:请注意,从物理原因来看,a, b, c >= 0。

【讨论】:

  • 感谢您的回答。线性回归是我考虑的第一件事,但它并不真正适合。目标是在给定任何F(or Y_i) 的情况下输出a, b, c。正如您刚刚解释的那样,使用线性回归将有助于在训练后估计 Y_i 并获得 a,b,c 的估计值(只需要一组值,而不是我的情况不同)。如您所见,它们完全不同。
  • 确实,你可以用它来预测Y_i,但是因为你对a, b, c感兴趣,你可以训练它,当过程收敛时输出这些参数。我正在更新答案,因为我无法将代码放在这里。
  • 正是我所说的。在这种情况下,我们得到a, b, c 的单个值作为结果。在我的情况下,a, b, c 是每个 X_i 的变量。
  • 所以你的函数会随着x_i而变化,你的f1, f2, f3也会变化?
  • 没关系。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 2022-12-10
  • 2021-02-20
  • 2020-06-19
相关资源
最近更新 更多