一个数学问题, y=f(a,b,c,d),当 abcd 有误差时仍然应该得出正确结果。

2017-04-13 14:24:47 +08:00
 scream7
假设 4 个整数, a,b,c,d ,需要设计一个函数 f,使得 y = f(a,b,c,d)
但是,由于有噪声, a,b,c,d 四个数会产生随机独立的[-4,+4]的误差,产生噪声数据 a1,b1,c1,d1
所以希望这种情况下 f(a1,b1,c1,d1)依然可以得出 y 的值,当然这个 y 的值是随意的,只要保证有无误差均相当即可。
请问有何巧妙的方法解决?谢谢
2387 次点击
所在节点    问与答
25 条回复
wlsnx
2017-04-13 14:28:23 +08:00
f(a,b,c,d)=0
03
2017-04-13 14:28:50 +08:00
f(a,b,c,d)=0
scream7
2017-04-13 14:30:48 +08:00
@wlsnx #1
@03 #2
别闹
y=f(a,b,c,d)的 y 必须得是有变化的呀
chairuosen
2017-04-13 14:35:43 +08:00
你不可能从噪声数据还原出原始数据,所以原始数据的取值得固定,差要大于 8 ,比如就是 10 , 20 , 30 这样你才能还原出来原始数据
choury
2017-04-13 14:48:49 +08:00
试下卡尔曼滤波?
otakustay
2017-04-13 14:58:48 +08:00
这不对啊,我们就先不说 4 个数,就说 y=f(x)好了

1. 当你的 x 为 0 的时候,我们希望存在误差的情况下能修正,所以 f(0) == f(1) == f(2) == f(3)
2. 当 x 为 3 的时候,同样希望修正,所以 f(3) == (f4) == f(5) == f(6)
3. 依次类推,得到的结论是 y 肯定是个常量
scream7
2017-04-13 15:06:31 +08:00
@otakustay #6 嗯,是个问题,谢谢。我现在可以使 a,b,c,d 的差大于相对误差,如 @chairuosen #4 所说的。
Valyrian
2017-04-13 15:08:03 +08:00
这不就是机器学习么
otakustay
2017-04-13 15:08:12 +08:00
@scream7 如果你能保证这点,直接取区间就行了呗, 0-3 统一当成 1 , 4-7 统一当成 5 这样的
debiann
2017-04-13 15:15:35 +08:00
dy/dx = 0
只有常数函数了
scream7
2017-04-13 15:18:51 +08:00
@Valyrian #8 现在准备采集下数据,试试 ANN 了
Valyrian
2017-04-13 16:05:58 +08:00
@scream7 神经网络的话 f 可能没法用数学表达
scream7
2017-04-13 16:14:37 +08:00
@Valyrian #12 应该可以的吧,其实就是个感知机,不过有没有表达式对我来说无所谓,仔细一想拿误差数据去拟合感觉不一定靠谱。。还是试一下吧
geelaw
2017-04-13 16:16:06 +08:00
不懂你在说啥……什么叫“依然可以得出”?如果你要求任意一个变量变化不超过 1 的时候仍然得到一样的数,整个函数就是常数。
scream7
2017-04-13 16:37:08 +08:00
@geelaw #14 你说的应该是取整方法, https://zh.wikipedia.org/wiki/%E5%8F%96%E6%95%B4%E5%87%BD%E6%95%B0
这个可以认为自变量的误差在[0,1)间。我这个要求更多些
geelaw
2017-04-13 17:03:25 +08:00
@scream7 我觉得你没有理解我在说什么 - - 而且我也不理解 floor 和你说的东西的关系是什么
srlp
2017-04-13 17:04:16 +08:00
你这个如果允许 y 也有误差的话,就用机器学习可以了。知道 f() 的话,不需要神经网络,随便什么随机森林也可以。
winterbells
2017-04-13 17:18:24 +08:00
计算方差?小于多少就成立,平均数设置成预期的 a\b\c\d 的平均数
(非专业)
rrfeng
2017-04-13 17:38:25 +08:00
f(a, b, c, d) = int(a/4) + int(b/4) + int(c/4) + int(d/4)

完。
rrfeng
2017-04-13 17:39:52 +08:00
4 改成 8 ……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/354601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX