Belief Propagation in Graphlab Create

User 5297 | 6/16/2016, 3:30:35 PM

Hello everyone,

I've just started using Graphlab Create, and I need to implement simple belief propagation algorithm using Graphlab Create. (very similar version of the algorithm in the paper "Polonium: Tera-Scale Graph Mining for Malware Detection") But I've literally no idea how I can do it. (or if it is possible to do it) I've read some documentations/ tutorials of Graphlab Create, but could not find anything that would enable me to implement such algorithm. Are there any implementations of BP in Graphlab Create or in its toolkits or any implementation at all that I can take a look at?

I would appreciate any help and pointers.

Thanks.

Comments

User 5313 | 7/8/2016, 9:48:55 AM

@yigitcankaya94

Are you still looking for help on this? Or were you able to find a solution already?

I am not graphlab expert myself and by no means do i know about belief propogation algorithms. I will share my experience using graphlab for ML here and maybe a more knowledgable person (from Turi) can chime in:

My two cents: *Look elsewhere*. I use graphlab for ML and I like that a) it enables me to look at data in nice visualizations (exploratory data analysis) b) and the built in ML functions are professionally written with readable APIs etc.

However, I am afraid the 2nd one is only helpful when the ML algorithm you want to code is actually implemented by graphlab. There are far too many ML algorithms out there for them to all be implemented by GLC and a quick google search suggests that belief propagation is not one of them.

I checked out the paper (on Polonium) that you mentioned and it seems that this is an algorithm that you can implement yourself using some numerical linear algebra tool such as matlab (proprietary) or numpy (open source). I suggest you google 'numpy tutorial' if you do not know how to use it and you should get up to speed pretty quickly.

The only other reason I would still consider trying to use graphlab in your case is if I have more data than fits in my computer's memory and I need to use my laptop to analyze this data. Then SFrame (the data structure used in graphlab) is helpful since it allows sequential access. However, I still do not know how you could do some common numerical linear algebra operations such as dot-product etc since SFrames are not mutable. (Sframes are open source and you do not need graphlab for that) license This is, again, why I would encourage you to look towards numpy instead of here unless someone more knowledgable than me jumps in here and corrects me. (very possible). Turi staff I am looking to you. :smile:

Good Luck and I hope you find (or already found) a solution.