specific target

74 views
Skip to first unread message

Nouf Bindris

unread,
Apr 20, 2018, 4:44:29 AM4/20/18
to PSL Users
Hi,


 When I want to know the result for a specific target I need to give all the possible combinations of that target in PSL. Is there any other alternative for this? because if I want to use PSL for large data, then do I need to generate all the possible targets I need? How would this be scalable in that case?

Thank you
 

Eriq Augustine

unread,
Apr 20, 2018, 6:07:30 AM4/20/18
to Nouf Bindris, PSL Users
Hey,

The short answer is yes, you should almost always specify all your targets.
(Read below for the caveats.)

Now for the long answer:

Keep in mind the collective nature of PSL (and all SRL methods).
The goal is not to predict just one thing, but predict things with multiple and potentially complex dependencies.
Because of these dependencies, leaving out targets could severely impact performance.
For example, lets say you are trying to predict friendship.
We have three people: 'Alice', 'Bob', and 'Claire' and we are using a transitive rule like this:
Friends(A, B) & Friends(B, C) -> Friends(A, C)

Even if we were just interested in the target: Friends('Alice', 'Claire'), if we do not infer the value for dependent targets (Friends('Alice', 'Bob') and Friends('Bob', 'Claire') in this case) then we cannot properly reason about Friends('Alice', 'Claire').
ie, this ground would would not be generated: Friends('Alice', 'Bob') & Friends('Bob', 'Claire') -> Friends('Alice', 'Claire')

So in general, we recommend that people define all their targets.
However if you have cliques in your data, then you can just specify the clique the desired target is in as your targets.

You can also try using lazy inference (https://linqs-data.soe.ucsc.edu/psl-docs/docs/psl/develop-head/index.html) and specify just your desired target as the targets.
Lazy inference will then grow the target set to all dependent atoms until it discovers no more.
Lazy inference is generally slower than normal inference (because it is iterative, whereas non-lazy is one-shot).
However, if you data does have a clique around your desired target, then lazy inference will typically find it and stop there.

-eriq


--
You received this message because you are subscribed to the Google Groups "PSL Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to psl-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages