Situational awareness is EVERYTHING. It's the one single thing that will prevent a gunfight. Remember, the best gunfight is one that never happens. Practice being alert. Create a "safe distance" for yourself to match your skills and don't let someone invade that. Practice command sounds. Low, throaty from-the-diaphragm - "STOP!" "STAY BACK!" "I WILL SHOOT YOU!" I remember the retired LEO who taught my CWP class demonstrating this. When he drew his piece (pointed away from the students, of course) and commanded "I WILL HOOT YOU!" - I was looking for a chair to crawl under.
Learn to move. Create a moving target for the BG. Lateral or backwards movement disrupts the BGs target picture. Even a purse snatch can be foiled by simply turning your purse away from his line of advance. Movement gives you time and distance.
Physical skills. Not to injure or kill, but again, to give you time and distance to get your piece out. You're not after a prolonged Bruce Lee-type karate fight. you need 1-3 quick, short hits to momentarily stun, disable, or stop the attacker. Eye jabs, groin kicks, throat punches, etc. Hit hard, hit fast, and go back to suggestion #2 - MOVE.
Shooting skills. Once you decide to shoot, can you hit what you aim at? Practice getting a single shot off in less than 2 seconds - ON TARGET. Practicing multiples, Mozambique drills, etc., is all well and good, but you may not have a chance for more than one shot. If the BG begins running toward you from 15' away (the length of a mini van), you will pull the trigger about the same time he reaches for your throat. Think on THAT.
And last but certainly MOST important - Willingness. Can you look another human being in the eye and coldly drop the hammer WITH NO HESITATION? What's your mindset on staying alive? How far are you willing to go? How cold and dirty dog mean can you be? If you find yourself in a fair fight, your situational awareness sucks. First rule is - There are no rules - there is only win or lose. Train to win.