Skip to content

Commit 7497e08

Browse files
committed
consistency in filenames
1 parent 76693d1 commit 7497e08

23 files changed

Lines changed: 23 additions & 25 deletions

faq/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ Sebastian
2020
### Questions about ML Concepts
2121

2222
- [Why do we re-use parameters from the training set to standardize the test set and new data?](./standardize-param-reuse.md)
23-
- [What are some of the issues with clustering?](./issues_with_clustering.md)
24-
- [What is the difference between deep learning and usual machine learning?](./difference_deep_and_normal_learning.md)
23+
- [What are some of the issues with clustering?](./issues-with-clustering.md)
24+
- [What is the difference between deep learning and usual machine learning?](./difference-deep-and-normal-learning.md)
2525
- [What is the best validation metric for multi-class classification?](./multiclass-metric.md)
2626
- [What are differences in research nature between the two fields: machine learning & data mining?](./datamining-vs-ml.md)
2727
- [How do I know if the problem is solvable through machine learning?](./ml-solvable.md)
@@ -38,13 +38,13 @@ Sebastian
3838
- [Which version of Python was used in the code examples?](./py2py3.md)
3939
- [Which technologies and libraries are being used?](./technologies.md)
4040
- [Which book version/format would you recommend?](./version.md)
41-
- [Why did you choose Python for machine learning?](./why_python.md)
42-
- [Why do you use so many leading and trailing underscores in the code examples?](./underscore_convention.md)
41+
- [Why did you choose Python for machine learning?](./why-python.md)
42+
- [Why do you use so many leading and trailing underscores in the code examples?](./underscore-convention.md)
4343
- [Are there any prerequisites and recommended pre-readings?](./prerequisites.md)
4444

4545
### General Questions
4646

47-
- [What learning path/discipline in data science I should focus on?](./data_science_career.md)
47+
- [What learning path/discipline in data science I should focus on?](./data-science-career.md)
4848
- [At what point should one start contributing to open source?](./faq/open-source.md)
4949
- [How important do you think having a mentor is to the learning process?](./faq/mentor.md)
5050
- [Where are the best online communities centered around data science/machine learning or python?](./faq/ml-python-communities.md)
File renamed without changes.

faq/difference_deep_and_normal_learning.md renamed to faq/difference-deep-and-normal-learning.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Let's start with multi-layer perceptrons (MLPs) ...
99

1010

1111
On a tangent: The term "perceptron" in MLPs may be a bit confusing since you don't really want only linear neurons in your network. Using MLPs, you want to learn complex functions to solve non-linear problems. Thus, your network is conventionally composed of one or multiple "hidden" layers that connect the input and output layer. Those hidden layers normally have some sort of sigmoid activation function (log-sigmoid or the hyperbolic tangent etc.). For example, think of a log-sigmoid unit in your network as a logistic regression unit that returns continuous values outputs in the range 0-1. A simple MLP could look like this
12-
![](./difference_deep_and_normal_learning/mlp.png)
12+
![](./difference-deep-and-normal-learning/mlp.png)
1313

1414

1515
where y_hat is the final class label that you return as the prediction based on the inputs (x) if this are classification tasks. The "a"s are your activated neurons and the "w"s are the weight coefficients.
@@ -20,10 +20,10 @@ Now, this is where "deep learning" comes into play. Roughly speaking, you can th
2020
Let's consider a ConvNet in context of image classification
2121
Here, you use so-called "receptive fields" (think of them as "windows") that slide over your image. You then connect those "receptive fields" (for example of the size of 5x5 pixel) with 1 unit in the next layer, this is also called "feature map". After you are done with this mapping, you have constructed a so-called convolutional layer. Note that your feature detectors are basically replicates of one another -- they share the same weights. The idea is that if a feature detector is useful in one part of the imagine it is likely that it is useful somewhere else, but at the same time it allows each patch of image to be represented in several ways.
2222

23-
![](./difference_deep_and_normal_learning/convolution.png)
23+
![](./difference-deep-and-normal-learning/convolution.png)
2424

2525

2626
Next, you have a "pooling" layer, where you reduce neighboring features from your feature map into single units (by taking the max feature or by averaging them, for example). You do this over many rounds and eventually arrive at an almost scale invariant representation of your image (the exact term is "equivariant"). This is very powerful since you can detect objects in an image no matter where they are located.
2727

2828

29-
![](./difference_deep_and_normal_learning/convnet.png)
29+
![](./difference-deep-and-normal-learning/convnet.png)
File renamed without changes.

faq/difference_deep_and_normal_learning/convolution.png renamed to faq/difference-deep-and-normal-learning/convolution.png

File renamed without changes.
File renamed without changes.
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@ I wouldn't necessarily call most of them "issues" but rather "challenges". For e
77

88

99
- The number of clusters is (typically) not known a priori (that's basically the characteristic of unsupervised learning problems), but there are a few "performance" or "evaluation metrics one can use to infer a "satisfying" grouping against the value of K; this is also called the elbow method:
10-
![](./issues_with_clustering/elbow.png)
10+
![](./issues-with-clustering/elbow.png)
1111

1212

1313
Here, it seems that k=3 would be a good pick. Let's have a look at the accompanying 2D dataset that I used to train the *k*-means algorithm and see if our intuition agrees:
1414

15-
![](./issues_with_clustering/clusters_unlabeled.png)
15+
![](./issues-with-clustering/clusters_unlabeled.png)
1616

17-
![](./issues_with_clustering/clusters_kmeans.png)
17+
![](./issues-with-clustering/clusters_kmeans.png)
1818

1919
I'd say k=3 is definitely a reasonable pick. However, note that the "elbow" is typically not as clear as shown above. Moreover, note that in practice we normally work with higher-dimensional datasets so that we can't simply plot our data and double-check visually. (We could use unsupervised dimensionality reduction techniques though such as PCA). In fact, if we already knew that the 3 clusters belong to three different groups, this would be a classification task.
2020

2121

2222
Anyway, there are other useful evaluation metrics such as the silhouette coefficient, which gives us some idea of the cluster sizes and shapes. Using the same dataset, let me give you a "good" silhouette plot (with k=3) and a not so decent one (k=2)
2323

2424

25-
![](./issues_with_clustering/silhouette_good.png)
25+
![](./issues-with-clustering/silhouette_good.png)
2626

27-
![](./issues_with_clustering/silhouette_bad.png)
27+
![](./issues-with-clustering/silhouette_bad.png)
2828

2929
I would say that the biggest "shortcoming" in *k*-means may be that we assume that the groups come in spherical or globular shapes, which is rarely the case with "real-world" data. In contrast, I could think of choosing the "optimal" *k* as just another hyperparameter optimization procedure, which is also necessary for almost every supervised learning algorithm.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)