Closed dyballa closed 2 years ago
Hi dyballa. Glad our package can be of help.
Hope that helps, please if I can be of further help.
Thanks, ehthiede, I appreciate your prompt response.
Glad to hear I could be of help. I'm closing the issue for now, but happy to re-open it if you have further questions.
Hi All,
First off, thanks for making this nice package available. I tried to understand your code by following the BGH papers ("Nonparametric forecasting..." and "Variable bandwidth diffusion kernels"), and I have two questions regarding the operations performed by the DiffusionMaps object:
1) After you create
right_norm_vec
, why do you only "right-normalize" the kernel matrix by it? In the papers, the kernel matrix seems to be both left- and right-normalized (i.e., scaling both rows and columns by 1/q_eps^alpha).2) I noticed
evecs
are scaled bysqrt(-1. / evals)
to yield the diffusion map. In the Laffon/Coiffman diffusion maps, evectors are scaled by evals^t. But there, eigendecomposition is performed on a transition matrix, so e-vals <= 1. In BGH, I understand that, after subtracting the Identity from L, evals will become <= 0. So I see the need for scaling them by -1 (equivalent to taking the absolute value), but I couldn't figure out why you also take the inverse (-1/evals). Finally, you take the square-root: is that like setting the diffusion time t to 0.5? I found no discussion in the BGH papers about this step, so I was wondering if there is any technical reason for doing so or whether this was empirically found to be a good scaling procedure -- any clarification would be greatly appreciated!Thanks for your time!