This is probably my favorite introductory machine learning book. The fact that he places almost everything in the language of graphical models is such a good common ground to build off. This really sets you up to realize that there is (and should be) a lot more to doing a good job in machine learning than simply minimizing an objective function. The answers you get depend on the model you create as do the questions y…
Probabilistic Machine Learning: An Introduction
51–59 of 59 posts
Re: Probabilistic Machine Learning: An Introduction
#52This is probably my favorite introductory machine learning book. The fact that he places almost everything in the language of graphical models is such a good common ground to build off. This really sets you up to realize that there is (and should be) a lot more to doing a good job in machine learning than simply minimizing an objective function. The answers you get depend on the model you create as do the questions y…
What is the advantage of placing everything in the language of graphical model? How does the other ML book do it?
This is really useful information because it can help you identify what information is truly relevant for the estimation of certain parameters (so sufficient statistics) or help you crystallize your understanding of the implications of the model you’ve created. In other words, it helps show you the ways in which your model says different aspects of your data should influence others.
This creates testable implications of the model. If your model says that two variables should be conditionally independent given a third, but they’re not, you have an avenue for refinement. You can also clearly identify your assumptions or the implications of your assumptions.
Another great thing about them is that exact inference for certain (most) structures is known to be computationally infeasible. There are a lot of different inference schemes available that can help you with different approximations with various drawbacks/advantages, heuristics that sort of work, or even ways of drawing samples from the true distribution if you can identify the structures. See belief propagation, loopy belief propagation, sequential Monte Carlo, and Markov chain Monte Carlo methods.
On top of this it helps you see everything in a general framework. Lots of the fundamental pieces of ML models are really just slight tweaks to other things. For instance, SVMs are linear models on kernel spaces with a specific structural prior. Same with splines; it’s just a different basis function. All of this helps you see the pieces of different methods that are actually identical. This helps you make connections and learn more effectively, in my opinion.
Re: Probabilistic Machine Learning: An Introduction
#53Earlier quoted context omitted.
Conversely, if at every step of learning, you're hindered by inferior tools, you'll learn less, and be at a permanent disadvantage to those using superior tools. If your job will use tool X, learning it well has value. Those not learning it will be at a disadvantage. Again, no open source software can do what Matlab can. Why ignore this?
> Again, no open source software can do what Matlab can. Why ignore this? Can you list (or point to a list of) some of MatLab's features that are absent from other software?
And, here is by far the biggest issue with open source - the numerical accuracy of lots of it is crap. Matlab (and Mathematica, etc.), have employed professional numerical analysists to create numerically stable, robust algorithms, and has had decades (Matlab started in 1970, under academic numerical analyst Cleve Moeller) of refinement to weed out bugs. It's the difference between using BLAS and writing your own linear algebra package - one is likely far more robust.
Sure, some numerical open source packages are decent, and a few are excellent (BLAS and related). But when you need to glue some together, you end up far too often with stuff that's just flakey for production work.
If you've ever coded the quadratic formula as written in high school textbooks and not known all the mess you just made, then you are what most open source developers are. Taking almost any formula from a paper and just typing it in is surely the wrong way to do it numerically, but this is what open source does. A robust engineering platform should have every such formula analyzed for the proper form(s) for implementation to maintain numerical robustness, and it should also avoid allowing users easy ways to do stuff that is not robust. This is the biggest difference between tools like Matlab and Mathematica versus open source projects.
And, like the time spent fiddling with getting open source to work, as soon as you have one engineering task or design fail due to numerical problems, it would have been vastly cheaper to simply use the better tool - Matlab.
Sure, most people don't use it very much, and rarely run into such problems. People using it for serious work in engineering toolchains or production systems cannot rely on instability of opensource.
And those reasons are why things like Matlab still exist, have incredible revenue, and are growing in use.
For example, want to do some work in python? Well, soon you need numpy. Then you might wat pytorch - but crap, it's numpy-ish, but not numpy. So you learn some more nuances on getting the two to play nicely, to get consistent error messages... Then you need some visualization - again, another package (with a host of dependencies), with different conventions, syntax, uses, and god forbid these packages get a little out of sync between releases - then you get to spend a day chasing that down. Now you want some optimization stuff - pull in scikit, but it's not quite consistent with the other libs... so you spend more time making glue functions between the stuff you want to build. Next you need some finite element analysis stuff - oops, pretty much dead compared to the massive amount of toolkits already in Matlab.
Take a moment and look through the list(s) of functions and toolkits standard in matlab [1]. For an incredible amount of engineering work, what you need is there - you spend less time trying to build enough pieces to start to work and you instead get working on the parts you want.
There's a reason python stole a lot of matplotlib ideas from Matlab - it's quite useful.
[1] https://www.mathworks.com/help/referencelist.html?type=funct...
Re: Probabilistic Machine Learning: An Introduction
#54Earlier quoted context omitted.
What is the advantage of placing everything in the language of graphical model? How does the other ML book do it?
Graphical models are just a way to encode relationships between different variables in a probabilistic model. Directed acyclic graphs (DAGs) allow you to specify (most of) the conditional independence structures that you can have between things like parameters and random variables. This is really useful information because it can help you identify what information is truly relevant for the estimation of certain param…
Re: Probabilistic Machine Learning: An Introduction
#55Earlier quoted context omitted.
> Again, no open source software can do what Matlab can. Why ignore this? Can you list (or point to a list of) some of MatLab's features that are absent from other software?
One big feature is a massive amount of built-in functionality [1]. You don't have to find various packages, install them, spend a day fighting version issues, or that some author hasn't upgraded to a recent language version, or used a non-standard logging facility, or any of a zillion other time-sinks you face daily with gluing open source packages together. As soon as a professional has been paid to fight open sourc…
I'm a licensed professional, and in my experience it takes 1-2 hours to set up a conda virtualenv with all the packages I need. Whereas if I want Matlab, it takes about a week to talk through the budgeting and licensing options with my employer, find the right number of seats to purchase (other departments might decide to get in on the purchase, so we need to consult broadly), choose which toolboxes we'll pay for, go back and forth on the quotes and POs, and make sure all the licensing really works.
But your mileage may vary.
Re: Probabilistic Machine Learning: An Introduction
#56Earlier quoted context omitted.
One big feature is a massive amount of built-in functionality [1]. You don't have to find various packages, install them, spend a day fighting version issues, or that some author hasn't upgraded to a recent language version, or used a non-standard logging facility, or any of a zillion other time-sinks you face daily with gluing open source packages together. As soon as a professional has been paid to fight open sourc…
> As soon as a professional has been paid to fight open source integration for 1-2 days, it would have been better if the employer had simply bought matlab. I'm a licensed professional, and in my experience it takes 1-2 hours to set up a conda virtualenv with all the packages I need. Whereas if I want Matlab, it takes about a week to talk through the budgeting and licensing options with my employer, find the right nu…
Yes, there are problems where Python is an easy solution. And many where it is not. And some where it cannot solve the problem without extreme effort.
Having been in dev a long time, this is the simplest, naive works best case path. If this were how setting up Python worked for everyone, there would not be an incredible amount of forum posts, github issues, setup help and problems, easily found on the internet. If you've not had to change underlying code in some python package or even worse recompile underlying C libraries, then you have not faced the kids of problems many (me included) have.
Ever solve a problem like the one I listed? That is not a simple conda install (and I use conda stuff vastly more than matlab/mathematica, so I'm pretty aware of it's use and features). Many problems I can solve in Mathematica (my preferred tool for certain work) cannot be approached by Python at all (or any open source tools I am aware of, and I have tried pretty much all of the things listed as MMA replacements).
>find the right number of seats to purchase (other departments might decide to get in on the purchase
So you're no longer making an apples to apples comparison - you just solved a bigger problem with the Matlab side.
Re: Probabilistic Machine Learning: An Introduction
#57Earlier quoted context omitted.
Graphical models are just a way to encode relationships between different variables in a probabilistic model. Directed acyclic graphs (DAGs) allow you to specify (most of) the conditional independence structures that you can have between things like parameters and random variables. This is really useful information because it can help you identify what information is truly relevant for the estimation of certain param…
Absolutely. Very strongly agree with the last paragraph, and that's how I aspire to learn in general. Can you point me to some resources(book or otherwise) that goes over all these relationship in a general framework?
The book, Machine Learning: A Probabilistic Perspective by Kevin Murphy (the original book everyone in this thread is talking about) is probably the closest thing I can think of. Its goal is to frame everything around graphical models and probability. It's quite a tome. Still, despite its breadth, it can't possibly cover everything.
Re: Probabilistic Machine Learning: An Introduction
#58Earlier quoted context omitted.
> Again, no open source software can do what Matlab can. Why ignore this? Can you list (or point to a list of) some of MatLab's features that are absent from other software?
One big feature is a massive amount of built-in functionality [1]. You don't have to find various packages, install them, spend a day fighting version issues, or that some author hasn't upgraded to a recent language version, or used a non-standard logging facility, or any of a zillion other time-sinks you face daily with gluing open source packages together. As soon as a professional has been paid to fight open sourc…
Re: Probabilistic Machine Learning: An Introduction
#59Earlier quoted context omitted.
One big feature is a massive amount of built-in functionality [1]. You don't have to find various packages, install them, spend a day fighting version issues, or that some author hasn't upgraded to a recent language version, or used a non-standard logging facility, or any of a zillion other time-sinks you face daily with gluing open source packages together. As soon as a professional has been paid to fight open sourc…
But isn't Octave supposed to include the same built-in functionality as MatLab?
Octave is also unstable, and I doubt any company needing heavy use of a tool like this in production would trust Octave to not puke. It's just simply cheaper to use the polished and vastly more feature rich tool. Download Octave, go find some decently complex matlab code on github, and try to run it. Do that a bit and see how much works as it should.
Octave lists places they see themselves as different, some of which is core pieces that don't work the same. So if you want to replace some engineering tasks with Octave, it's going to be a mess, in the same way OpenOffice is close to MS Office, until the day you send a proposal with a deadline and it pukes because the other end used MS Word instead of an almost clone.
I've used Octave - it's decent. If you cannot afford Matlab, or your school doesn't have it, or you want to learn "matlab" to get marketable skills, then one can learn on Octave. Most serious engineering will not be done on Octave though.
[1] https://wiki.octave.org/Differences_between_Octave_and_Matla...