<< Chapter < Page | Chapter >> Page > |
Pictorially, what the algorithm is doing can be seen in as follows:
Shown in the figure are the training set, as well as the contours of the two Gaussian distributions that have been fit to the data in each of thetwo classes. Note that the two Gaussians have contours that are the same shape and orientation, since they share a covariance matrix $\Sigma $ , but they have different means ${\mu}_{0}$ and ${\mu}_{1}$ . Also shown in the figure is the straight line giving the decision boundary at which $p(y=1|x)=0.5$ . On one side of the boundary, we'll predict $y=1$ to be the most likely outcome, and on the other side, we'll predict $y=0$ .
The GDA model has an interesting relationship to logistic regression. If we view the quantity $p(y=1|x;\Phi ,{\mu}_{0},{\mu}_{1},\Sigma )$ as a function of $x$ , we'll find that it can be expressed in the form
where $\theta $ is some appropriate function of $\Phi ,\Sigma ,{\mu}_{0},{\mu}_{1}$ . This uses the convention of redefining the ${x}^{\left(i\right)}$ 's on the right-hand-side to be $n+1$ -dimensional vectors by adding the extra coordinate ${x}_{0}^{\left(i\right)}=1$ ; see problem set 1. This is exactly the form that logistic regression—a discriminative algorithm—used to model $p(y=1|x)$ .
When would we prefer one model over another? GDA and logistic regression will, in general, give different decision boundaries when trained on the same dataset. Which is better?
We just argued that if $p\left(x\right|y)$ is multivariate gaussian (with shared $\Sigma $ ), then $p\left(y\right|x)$ necessarily follows a logistic function. The converse, however, is not true; i.e., $p\left(y\right|x)$ being a logistic function does not imply $p\left(x\right|y)$ is multivariate gaussian. This shows that GDA makes stronger modeling assumptions about the data than does logistic regression. It turns out that when these modelingassumptions are correct, then GDA will find better fits to the data, and is a better model. Specifically, when $p\left(x\right|y)$ is indeed gaussian (with shared $\Sigma $ ), then GDA is asymptotically efficient . Informally, this means that in the limit of very large training sets (large $m$ ), there is no algorithm that is strictly better than GDA (in terms of, say, how accurately they estimate $p\left(y\right|x)$ ). In particular, it can be shown that in this setting, GDA will be a better algorithm than logistic regression; and more generally,even for small training set sizes, we would generally expect GDA to better.
In contrast, by making significantly weaker assumptions, logistic regression is also more robust and less sensitive to incorrect modeling assumptions. There are many different sets of assumptions that would lead to $p\left(y\right|x)$ taking the form of a logistic function. For example, if $x|y=0\sim \mathrm{Poisson}({\lambda}_{0})$ , and $x|y=1\sim \mathrm{Poisson}({\lambda}_{1})$ , then $p\left(y\right|x)$ will be logistic. Logistic regression will also work well on Poisson data like this. But if we were to use GDA on such data—and fit Gaussian distributions tosuch non-Gaussian data—then the results will be less predictable, and GDA may (or may not) do well.
To summarize: GDA makes stronger modeling assumptions, and is more data efficient (i.e., requires less training data to learn “well”)when the modeling assumptions are correct or at least approximately correct. Logistic regression makes weaker assumptions, and is significantly more robust to deviationsfrom modeling assumptions. Specifically, when the data is indeed non-Gaussian, then in the limit of large datasets, logistic regression will almost always do better thanGDA. For this reason, in practice logistic regression is used more often than GDA. (Some related considerations about discriminative vs. generative models also apply forthe Naive Bayes algorithm that we discuss next, but the Naive Bayes algorithm is still considered a very good, and is certainly also a very popular, classification algorithm.)
Notification Switch
Would you like to follow the 'Machine learning' conversation and receive update notifications?