- Paperback: 456 pages
- Publisher: Manning Publications; 1 edition (April 10 2016)
- Language: English
- ISBN-10: 1617292338
- ISBN-13: 978-1617292330
- Product Dimensions: 18.5 x 2.5 x 23.4 cm
- Shipping Weight: 703 g
- Average Customer Review: Be the first to review this item
- Amazon Bestsellers Rank: #324,857 in Books (See Top 100 in Books)
Practical Probabilistic Programming Paperback – Apr 10 2016
Customers who bought this item also bought
What other items do customers buy after viewing this item?
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
To get the free app, enter your mobile phone number.
About the Author
Avi Pfeffer is the principal developer of the Figaro language for probabilistic programming. He graduated from Stanford, taught at Harvard, and is currently a principal scientist at Charles River Analytics.
|5 star (0%)|
|4 star (0%)|
|3 star (0%)|
|2 star (0%)|
|1 star (0%)|
Most helpful customer reviews on Amazon.com
It seems you're supposed to install Linux to do the exercises in the book properly. Meh, I just want to get my hands dirty.
That being said, there are few other alternatives for learning PP. If you're really into Figaro, with it's powerful abstractions for PP - this is your book.
Also, while the books content is fine for introductory level, the choice of the language (Figaro) is a strange one. It is an open source language working on Scala, which is another open source language working on Java. To be honest, I do not know anyone in the industry using it, and the research paper describing the language has about 60 citations. Making it an obscure choice. It does not mean Figaro is a bad choice, it might be the one helping you solve your problems, but the book is titled "Probabilistic Programming", not "Probabilistic Programming with Figaro/Scala". I would have expected more discussion on alternative libraries and programming languages in general.
Programming languages like R and Python give the user access to large libraries of statistical code that aid in building models that deal with random variables. According to Avi Pfeffer's book Practical Probabilistic Programming, the Figaro language is a language that is designed for probabilistic data and models.
A language that provides powerful abstractions for dealing with probabilistic systems is very attractive, since probabilistic models are widely useful. The promise that the Figero language holds out is the reason that I chose to review this book for Amazon's Vine program.
Practical Probabilistic Programming is a promising book. The topic of the book, probabilistic codes, is a complex one. Learning a complex topic requires time and effort.
Unfortunately I was not able to make the kind of progress with this book that I had hoped. I was unable to install Figaro successfully on my Fedora 20 Linux system.
Figaro runs under the Scala language. The book recommends using sbt, the Scala Built Tool, with Figaro. Although the Linux yum update program informed me that I had installed the latest version of sbt, it hung when I ran the Figaro installation commands listed in the last chapter of the book.
I am currently doing most of my development with either Groovy or Java, so I don't have an active Scala development environment running, although the Scala components are installed on my system. I might have been more successful with Figaro if I was actively developing code in Scala.
I also had a hard time gaining the understanding I was hoping for from the book.
The initial examples deal with a simple probability model, with fixed probabilities. The early examples show how it is easier to build these models in Figaro than in Java. The next example is of a spam filter to recognize spam based on the probabilities of words that may be included in spam. I found this model difficult to understand. Such a model must analyze word frequencies against a dictionary of possible spam worlds and then decide, perhaps based on conditional probability, that an email may be spam. I did not understand how the example code does this.
I also didn't understand the markoff model and hidden markov model chapters.
What I most hoped to understand in reading this book was whether I could use Figaro to build probabilistic models for random variable created from financial time series (e.g., asset returns). My hope was the Figaro might be a way to build a model that could tell you whether a stock or set of stocks should be purchased, based on a set of market or economic factors. Unfortunately, I was unable to understand whether Figaro would be a good language for building models of this type. In fact, it was not clear to me how to create variables that are initialized from actual data (and perhaps derive probabilities from this data).
With Figaro I wondered what the similarities were between a Figaro program and a Monte Carlo simulation. Perhaps none, but the point here is that I still don't understand the answer.
If I were to spend more time with working Figaro software I believe that I could understand the areas that I missed when reading the book for this review. The "take away" from this review is that this is a book that will require a significant investment in time. This is not a book where you will learn much without working through each chapter, perhaps several times. You may need other references for some of the material, like Bayesian inference and Markoff models.
Ideally I would like to understand whether Figaro is a useful tool for the kind of probabilistic codes I am interested in before investing lots of time. I didn't get this understanding from the opening chapters of the book, so time invested in Figaro would be based on the hope that I would find it useful.
Figaro is new and still feels a bit like a graduate student project. From looking at the on-line references it looks like this book may be the best reference available. If you already have a background in probabilistic programming this book may be better for you than it was for me.