作者doom8199 (~口卡口卡 修~)
看板Math
标题Re: [微积] 请问一下离散的微分方程的解法
时间Sun Apr 3 21:44:37 2011
※ 引述《Frobenius (▽.(▽×▽φ)=0)》之铭言:
※ 引述《igawa (井穿肠 (3A))》之铭言:
: 就是我有一组数据
: du/dt = 10 @ t=0
: du/dt = 22 @ t=1
: du/dt = 73 @ t=2
: du/dt = 68 @ t=3
: du/dt = 17 @ t=4
: du/dt = 11 @ t=5
: .
: .
: .
: 想请问版上先进,可以用哪些方法,把u(t)这个函数解出来
: 谢谢~~!
回一下这篇和 Frobenius 大大的问题
---
一般来说这个算是 estimation 的问题
也就是给你一堆数据
要如何找出这些数据的 "model" 是啥
不过要 exactly 找出这个 model 几乎是不可能
所以我们自己假设一些可能
based on 这些假设之下,找出我们认为最合理的 solution
或是退而求其次
我们根据已知数据来 "predict" 新的 data 有何变化
例如 predict 在 t=6 时, du/dt=?
----
以 Machine Learning 的角度来看这问题
给你 input data {0,1,2,3,4,5}^T 和 target vectors {10,22,73,68,17,11}^T
我们可以假设一 base vector ψ(x) = { 1, x, x^2, ..., x^N}^T
想找到一 weighted vector W = { w0, w1, ..., wN}^T
使得 input value 和 target value 满足以下关系:
t_n = <w,ψ(x_n)> , 其中 t_n € (n+1)th element of input data
x_n € (n+1)th element of target vectors
我们就可以用 y = <w,ψ(x)> 来 model 这个 system
这个方法称做 polynomial curve fitting
通常会自己假设拿到的数据有被 noise 影响 (没有假设也ok)
所以我们会考虑一个 performance (cost) function
希望找到的 model , 会使得该 cost function 越小越好
N 2
例如 w = arg min Σ[t_n - <w,ψ(x_n)>]
n=0
N 2
或 w = arg min Σ[t_n - <w,ψ(x_n)>] + λ<w,w> ... etc.
n=0
----
要用 polynomial curve fitting 来估计
我们会先把已知 data 拆成两部分
分别叫 training set 和 generalization set
然後分三部分做:
<1> [model selection]
可以利用一些方法,估出适合 data 的 dimension 大致为何
以这里来说,估出合适的 N (degree of freedom)
<2> [training]
利用 trainging set,根据 cost function E(w)
找出 w
<3> [generalization]
根据 y = <w,ψ(x)> , 把 generalization set 套进去
算出估计值和真实值差多少 ( <w,ψ(x_n)> v.s. t_n )
一般会看 RMS 或 SNR (验证估计出来的 model 合不合理)
最直接的做法是假设 model 为 N=1 , N=2 , N=3, ....
然後都做一次 stage <2> and <3>
比较 RMS 或 SNR 在哪个 model 下是最小
那该 model 就是吾人认为还不错的 polynomial curve
----
要注意的是若 model 所选取的 dimension (或 degree of freedom) 过高
虽然可以有办法 perfect match 已知 data
( 例如 给你4个点 (x,y) , 我们用三次多项式 来 fit 这四个点 )
但就是因为选取的 dimension 过高
使得你 induce 多余不必要的 dimension 来轻易地 fit 已知 data
这很容易造成在新的 data 进来的时候
其 理论值 和 估计值 会差很大
这称做
over-fitting problem
这也是为何不一次把 data 都做 training
而要分两堆,有一堆要做 generalization 的原因在此
至於 s-fold cross validation 这个方法
只是把 data 分成 s 堆,然後做 s次 的 training/genealization
来估计选取的 model 合不合适
不过这个方法计算量很大
有很多更好的方法可以估计 model 的选取
只是这方面我还是初学 >_<
看有没有其他大大们愿意分享其它方法
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.211.136
※ 编辑: doom8199 来自: 140.113.211.136 (04/03 21:51)
1F:推 Frobenius :感谢回答,这方面我比较不熟悉XD 04/03 21:52