V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
scream7
V2EX  ›  问与答

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

  •  
  •   scream7 · 2017-04-13 14:24:47 +08:00 · 2244 次点击
    这是一个创建于 2571 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设 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 的值是随意的,只要保证有无误差均相当即可。
    请问有何巧妙的方法解决?谢谢
    25 条回复    2017-04-13 21:37:02 +08:00
    wlsnx
        1
    wlsnx  
       2017-04-13 14:28:23 +08:00
    f(a,b,c,d)=0
    03
        2
    03  
       2017-04-13 14:28:50 +08:00
    f(a,b,c,d)=0
    scream7
        3
    scream7  
    OP
       2017-04-13 14:30:48 +08:00
    @wlsnx #1
    @03 #2
    别闹
    y=f(a,b,c,d)的 y 必须得是有变化的呀
    chairuosen
        4
    chairuosen  
       2017-04-13 14:35:43 +08:00
    你不可能从噪声数据还原出原始数据,所以原始数据的取值得固定,差要大于 8 ,比如就是 10 , 20 , 30 这样你才能还原出来原始数据
    choury
        5
    choury  
       2017-04-13 14:48:49 +08:00   ❤️ 1
    试下卡尔曼滤波?
    otakustay
        6
    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
        7
    scream7  
    OP
       2017-04-13 15:06:31 +08:00
    @otakustay #6 嗯,是个问题,谢谢。我现在可以使 a,b,c,d 的差大于相对误差,如 @chairuosen #4 所说的。
    Valyrian
        8
    Valyrian  
       2017-04-13 15:08:03 +08:00
    这不就是机器学习么
    otakustay
        9
    otakustay  
       2017-04-13 15:08:12 +08:00
    @scream7 如果你能保证这点,直接取区间就行了呗, 0-3 统一当成 1 , 4-7 统一当成 5 这样的
    debiann
        10
    debiann  
       2017-04-13 15:15:35 +08:00
    dy/dx = 0
    只有常数函数了
    scream7
        11
    scream7  
    OP
       2017-04-13 15:18:51 +08:00
    @Valyrian #8 现在准备采集下数据,试试 ANN 了
    Valyrian
        12
    Valyrian  
       2017-04-13 16:05:58 +08:00
    @scream7 神经网络的话 f 可能没法用数学表达
    scream7
        13
    scream7  
    OP
       2017-04-13 16:14:37 +08:00
    @Valyrian #12 应该可以的吧,其实就是个感知机,不过有没有表达式对我来说无所谓,仔细一想拿误差数据去拟合感觉不一定靠谱。。还是试一下吧
    geelaw
        14
    geelaw  
       2017-04-13 16:16:06 +08:00   ❤️ 1
    不懂你在说啥……什么叫“依然可以得出”?如果你要求任意一个变量变化不超过 1 的时候仍然得到一样的数,整个函数就是常数。
    scream7
        15
    scream7  
    OP
       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
        16
    geelaw  
       2017-04-13 17:03:25 +08:00
    @scream7 我觉得你没有理解我在说什么 - - 而且我也不理解 floor 和你说的东西的关系是什么
    srlp
        17
    srlp  
       2017-04-13 17:04:16 +08:00 via iPhone
    你这个如果允许 y 也有误差的话,就用机器学习可以了。知道 f() 的话,不需要神经网络,随便什么随机森林也可以。
    winterbells
        18
    winterbells  
       2017-04-13 17:18:24 +08:00
    计算方差?小于多少就成立,平均数设置成预期的 a\b\c\d 的平均数
    (非专业)
    rrfeng
        19
    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
        20
    rrfeng  
       2017-04-13 17:39:52 +08:00
    4 改成 8 ……
    shoumu
        21
    shoumu  
       2017-04-13 17:49:07 +08:00
    分类问题?
    rashawn
        22
    rashawn  
       2017-04-13 17:50:50 +08:00 via iPhone
    有噪声就得用滤波吧
    kaifeii
        23
    kaifeii  
       2017-04-13 19:17:14 +08:00
    @rrfeng a=9 a1=7 , y 不相等。
    rrfeng
        24
    rrfeng  
       2017-04-13 21:33:14 +08:00
    这根本就不是个数学问题,还是把最原始的需求和数据给出来。
    不然都只能瞎猜。

    像我上面说的,只有把所有波动抹掉才有可能。而且如果 a b c d 是相关的话,就更复杂了。
    Dx2619
        25
    Dx2619  
       2017-04-13 21:37:02 +08:00 via iPhone
    可以用 BP 后向神经网络算法达成
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   900 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:07 · PVG 04:07 · LAX 13:07 · JFK 16:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.