Thanks for chapter 1, I like that you bundled a bunch of concepts together on the one dataset; it flowed very well. I picked out a few typos -- looking for those is helping me pay attention. :-)
1.2 Supervised Learning
Machine learning has three types of learning: supervised, semi-supervised, and unsupervised. There are two tasks: regression and classification.
Suggestion: "There are two basic tasks in supervised learning: regression and classification"
Reason: It's not immediately clear that regression and classification are typically supervised.
1.3.2. Data Exploration
Let's just see some specific example, extremes, and get a sense of the range of labels/data. We'll start with seeing what kind of molecules there are.
Suggestion: Let's first look at the first molecule, then the extreme values, and get a sense of the range of labels/data. We'll start with seeing what kind of molecules there are.
Reason: "Let's just see some specific example, extremes," could be interpreted that the extremes are the example.
This is first molecule in the dataset rendered using rdkit
Missing full stop.
ioinc compounds have higher solubility
ionic?
Outliers are extreme values that fall outside of your normal data distribution. They can be mistakes, be from a different distribution (e.g., metals instead of organic molecules), and can have a strong effect on model training.
Suggestion: Outliers are extreme values that fall outside of your normal data distribution. They could be mistakes or be from a different distribution (e.g., metals instead of organic molecules). Either way, they can have a strong effect on model training.
Reason: Just felt like distinct concepts that deserved a sentence break
(how often the molecule occured in the constituent databases),
occurred?
1.3.3 Feature Correlation
MolLogP, which is a computed estimated related to solubility, does correlate well.
computed estimate related to solubility?
1.3.4 Linear Model¶
parmaters
(in various other sections below, too) => parameters?
1.3.5 Gradient Descent
This computes an analytical derivative a python function.
analytical derivative of a Python function?
1.3.6 Batching
The loss is lower than wihtout batching
without?
1.3.7 ML Trick
Each of the features have different magnitudes. Like molecular weight, which is lagre, and number of rings which is small.
The second sentence might be nicer fleshed out a little, like:
For example, the molecular weight is large, compared to the number of rings, which is small.
from myst_nb import glue
glue('corr', np.round(np.corrcoef(labels, predicted_labels)[0,1], 2))
That is very neat, but I guess it's not supposed to be executed in Google Co-lab? If it is, the sphinx version needs some tweaking. If not, is there any way to mark that as non-executable?
![Screen Shot 2021-07-25 at 12 26 01 am](https://user-images.githubusercontent.com/31115101/126891255-2133b2a6-33ff-4713-a9b5-d3179f8de1d5.png)
1.4.1 Clustering
We’re gonig to zoom into the 99th percentile
gonig => going
we do not label the axes beceause they are arbitrary.
beceause => because
Although in PCA etc. it does seem common to label which principal component you're visualizing.
Yeah, that’s why clustering hard.
Maybe you left out the "is" for effect, but just in case.... :-)
It's not super relevant, but if you were thinking of linking to extra resources, I found Shao et al 2007 a useful MD-focused one and more generally the scikit-learn user guide.
1.4.2 Choosing Cluster Number
We can extract the most centered data points (closest to cluster center) and consider them to be representatitive of the cluster.
representatitive => representative
We might try to gain insight about predicting solubility solubility
Extra solubility
1.6.3. Minimizing Loss
Compute it’s gradient using jax.
its (no apostrophe)
Using the regularized features, show what effect batchsize has on training. Use batchsizes of 1, 8, 32, 256, 1024. Make sure you re-initialize your weights in between each run. Plot the log-loss for each batchsize on the same plot. Describe your results.
I think batch size is typically 2 words?
1.6.4. Clustering
You can still cluster if you have labeles,
labeles => labels