5 ms·
The new edition has been split in two parts. The pdf draft (921 pages) and python code [1] of the first part are now available. The table of contents of the sec
by joaorico 6y ago
The new edition has been split in two parts. The pdf draft (921 pages) and python code [1] of the first part are now available. The table of contents of the second part is here [2].
From the preface:
"By Spring 2020, my draft of the second edition had swollen to about 1600 pages, and I was still not
done. At this point, 3 major events happened. First, the COVID-19 pandemic struck, so I decided
to “pivot” so I could spend most of my time on COVID-19 modeling. Second, MIT Press told me
they could not publish a 1600 page book, and that I would need to split it into two volumes. Third,
I decided to recruit several colleagues to help me finish the last ∼ 15% of “missing content”. (See
acknowledgements below.)
The result is two new books, “Probabilistic Machine Learning: An Introduction”, which you are
currently reading, and “Probabilistic Machine Learning: Advanced Topics”, which is the sequel to
this book [Mur22].
Together these two books attempt to present a fairly broad coverage of the field
of ML c. 2020, using the same unifying lens of probabilistic modeling and Bayesian decision theory
that I used in the first book.
Most of the content from the first book has been reused, but it is now split fairly evenly between
the two new books. In addition, each book has lots of new material, covering some topics from deep
learning, but also advances in other parts of the field, such as generative models, variational inference
and reinforcement learning. To make the book more self-contained and useful for students, I have
also added some more background content, on topics such as optimization and linear algebra, that
was omitted from the first book due to lack of space.
Another major change is that nearly all of the software now uses Python instead of Matlab."
[1] https://github.com/probml/pyprobml https://github.com/probml/pyprobml
[2] https://probml.github.io/pml-book/book2.html https://probml.github.io/pml-book/book2.html
- jbay808 6y agoIt's very encouraging to see Matlab losing ground in the educational space. I don't know why so many engineers let their foundational skills to be locked behind a proprietary ecosystem like that.
- ChrisLomont 6y ago>I don't know why so many engineers let their foundational skills to be locked behind a proprietary ecosystem like that. Because no open source toolkit can do what Matlab can do. The same is true of a lot of high end software: Photoshop, pretty much any serious parametric CAD modeling system (say, SolidWorks), DaVinci Resolve, Ableton Live, etc. When a professional costs $100K+ to employ, paying a few grand to make them vastly more productive is a no brainer. If open source truly offered a replacement, then these costly programs would die. But there just isn't anything close for most work. Matlab is used for massive amounts of precise numerical engineering design, modeling, and running systems. So while Python is good for some tasks, for the places Matlab shines Python is no where near usable. And before Python catches up in this space, I'd expect Julia to get there faster.
- Nowado 6y agoProfessional costs $100k+ to employ partially because only those able to afford those tools for training get into the field.
- ChrisLomont 6y agoThose fields require work to get done, so they use tools that make people as productive as possible. There's simply no open source packages with the wide range of numerical capability that Matlab has.
- amitport 6y agoAs someone who helped migrate a university course from Matlab to python I must say proprietary features of Matlab had nothing to do with the reason it lasted so long. Basically, it was mainly inhertia. Older professors that liked it and rarly used anything else and the fact that generally no one gets rewarded for actually rewriting parts of an existing functioning course. As an instructor you basically create more work for yourself in the first time you migrate a course's programming language. (And you also annoy some senior staff when forcing them to learn new things)
- watwatinthewat 6y agoI work at a government r&d/systems engineering center, and it's the same case here. The engineers who went through college with Matlab use that as their default (i.e., when the project doesn't call for something else from the start), while newer engineers don't. As that generation ages out, it'll be more and more sidelined. It's their inertia keeping it around at all. Proprietary features don't matter here like there. We get MathWorks employees here at least a couple times a year hawking their latest (paid) libraries, but at this point they're always something 5+ years too late, something that already exists in preferred languages--often for free. Since our clients never deploy Matlab, it doesn't matter if their libraries are fractionally faster in any case besides mockup/experimentation in R&D, and for that I've never met anyone who chooses it for speed there. Plus in this day where even laptops are fast and cloud instances spun up in a few seconds, there's no point. It's also nicer for the dev to complain about not having enough ram to get a better machine than take the time to learn a new language for a specific use case. Likewise the project manager will prefer the quicker solution, buying. The one item close to a "tie" with Python here is probably migration. Matlab always and Python most of the time get rewritten into something else, Java in my department.
- scottlocklin 6y agoIt's a regression as far as code readability goes for fairly straightforward reasons: almost everything in Matlab is a matrix. Matrices are not first class citizens in Python, and it matters. I use Python a hell of a lot more than Matlab, but for examining how an algorithm works (say, for implementing in another language or modifying it to do tricks), Matlab wins. Go look at these PRML collections in Python and Matlab and see if you disagree: https://github.com/ctgk/PRML https://github.com/ctgk/PRML https://github.com/PRML/PRMLT https://github.com/PRML/PRMLT
- svantana 6y agoI used to feel the same, but three years after making the switch, I've changed my mind. Matlab code has brevity, but sometimes at the expense of clarity. For example, sum(x,axis=1) is more clear than sum(x,1). Especially when matlab has functions like diff() where the second argument is not axis. Broadcasting in python is a lot more clean than the "bsxfun(@plus, ...)" abomination in matlab. If you think all the "np." is too wordy then just do "from numpy import *". For matrix multiplication you can use "@". Numpy code can be dense but most people choose clarity over brevity.
- scottlocklin 6y agoI'd rather write python than matlab any day (I made this choice, literally in '98): it's a statement about reading. Matlab is closer to a a math notation and python is a clunky programming language. I'd never in a million years write new code in Matlab, but I prefer it for didactics.
- srvmshr 6y agoThe only thing I find nice in what Mathworks offers nowadays is their caps & T-shirts at conferences. MATLAB is on Medicare in deep learning times.