Diffusion kernels are kernels which "project" information about graphs into $R^n$ so that certain machine learning techniques can be performed.
I have read through this paper and feel fairly comfortable with the theory behind these kernels, but I'm looking for guidance about how they can best be applied.
An example problem I'm facing is that it involves calculating $e^{tA}$ for a large matrix $A$, which is not a trivial task. I know that sometimes finding $e^{tA}\vec{x}$ is a much simpler problem - is this one of those cases? And is the resulting distance I get the best to use, or are there further "fine tuning" methods?
In case it's relevant: my problem is essentially "nearest neighbor". Each example is a "bag" of attributes from a set $S$, where $S$ is structured as an ontology (graph). So I want to find some distance metric that I can apply to my examples, based on the information I get from the graph.
EDIT: Suppose I have two points in $R^n$: $x$ and $y$. I can find the distance between these points by numerous methods; most obviously by using the Euclidean $||x-y||$.
Now suppose my points are not in $R^n$, but rather in an arbitrary graph. How do I find the distance between them? (What does it even mean to say the "distance" between them?) This is the problem that diffusion kernels solve.
I understand at a high level what this solution is, but actually calculating it is harder. So I'm asking for help in figuring out how to calculate this. I think seeing someone step through an example would be ideal, but any guidance about calculation would be helpful.
EDIT 2: We have an ontology like:
Computer Science
/ \
AI Theory of CS
/ \ / \
NLP Vision Decidability Computational Complexity
How similar are "decidability" and "computational complexity"? What a diffusion kernel does is it provides a kernel to project this data into a more easily measurable space.