It's rude to let someone make a whole whack of food for you and then tell them half an hour in advance that you aren't coming.
Host makes the choice to make a lot of food for people she hopes will come, but who in fact have not said they are coming.
I meant the people who say "yes" and then change their minds half an hour before. I thought the OP said she had some of those in addition to the non-repliers and maybes, but on re-reading I am not sure whether that is the case.
I agree with you that at any rate, the solution to the problem is, "I need a definitive head count by X date and time, so if you're coming, please let me know by then." People who don't know what their work shift will be, or some other valid reason for a "maybe" should be dealt with on an individual basis, ie "I'll know by Tuesday - can I let you know?" and the hostess can make an exception, or not, depending on how feasible that is.
People who say "yes" and then cancel half an hour before, I might let it slide once if they are not normally flaky and something real has come up (family emergency, car broke down, etc), but general flakiness doesn't get a third chance; I'd stop inviting.