How do you know that your classifier is suffering from class imbalance? In cases where there is a substantial difference in relative class frequencies, it could be that the density of the minority class is never higher than the density of the majority class anywhere in the attribute space.  Here is a simple example using univariate Gaussian classes, with an imbalance ratio of 1:9.

In this case, if my classifier assigns all patterns to the majority class, it is doing exactly the right thing, and there is no problem to solve.
In this case, we know the true data generating process, so we know that the classifier is doing the right thing.  However in general we don't know the true distributions of positive and negative classes, so we don't know whether the classifier is doing the right thing or not.
So my question is:  In practical applications, how do we decide if we have a class imbalance problem, or whether the classifier is just giving the correct answer, to the question as posed?
Full disclosure:  My intuition is that in most cases, especially when the data is not unduly scarce, the classifier is doing exactly what it should do and there is no class imbalance problem.  I am primarily interested to hear how other practitioners and researchers diagnose class imbalance problems.

I challenge that there is a problem. Let's go with the scenario you described in the comments where your red graph is shifted to the right a bit.

I will make up some (plausible) numbers and go through Bayes' theorem.
$$
P(\text{red}) = 0.2$$$$P(\text{blue}) = 0.8
$$
$$
P(X>3\vert \text{red}) = 0.6$$$$P(X>3\vert \text{blue}) = 0.05
$$
Now Bayes' theorem:
$$
P(\text{red}\vert X>3) = \dfrac{P(X>3\vert\text{red})P(\text{red})}{P(X>3)}
$$
$$P(X>3) = P(X>3\cap\text{red}) + P(X>3\cap\text{red}^C) $$$$= P(X>3\cap\text{red}) + P(X>3\cap\text{blue})$$
$$
= P(X>3\vert \text{red})P(\text{red}) + P(X>3\vert \text{blue})P(\text{blue})
$$$$=(0.6)(0.2) + (0.05)(0.8) = 0.16$$
Now let's put it all together in Bayes' theorem.
$$
P(\text{red}\vert X>3) = \dfrac{(0.6)(0.2)}{(0.16)} = 0.75
$$
That's a much larger probability of being red than the prior probability of $0.2$.
Varying the prior probability of being red reveals a similar story of consistently having a higher posterior probability of being red than prior probability of being red.
posterior <- function(x, y, z){
    return(x*y/(x*y + z*(1-x)))
}
prior <- seq(0, 1, 0.0001)
plot(prior, posterior(prior, 0.6, 0.05), xlab = "Prior of Red", ylab = "Posterior of Red", col = 'red')
lines(prior, prior)

The class imbalance does not overwhelm the posterior probability, and I have tried this with even smaller shifts of red to the right. A tiny shift results in a plot that is very close to the diagonal, but it still bends up a little bit.

