This is definitely an issue. While there are many ways to go about resolving it, and each one has its own limitations and its own advantages, for most sites I recommend the following to my audit clients:
Reduce the number of main categories to as few as is reasonable where the ones that remain are the "bucket" or "umbrella" topics. An ideal number of categories would be anywhere from ten to twenty, at most. Any more than that overwhelms visitors and they become lost in the amount of time it takes to find what they want. Also, with too many categories, you end up with not enough individual articles in several of them, making those "thin".
Keep tag implementation to a minimum as well so there's not significant cross-over there. Each article should never have more than two, or at most three tags and tags should never be highly similar to categories or to other tags.
If any sub-categories exist, unless you can justify their value, it's best to noindex,nofollow those. Noindex,follow is NOT needed when those same articles are linked to from a bucket level category. And it confuses, weakens page rank distribution.
When you do this, it's important to 301 redirect old category indexes to point to their new consolidated versions.
Also, be sure to use proper pagination optimization on the remaining indexable categories using rel-next / rel-prev in accordance with Google's pagination guidelines.