I know that there are a number of calculations (220 - age etc.) for calculating max HR - are there any better formulas or empirical ways of calculating?
I think on a bike it would be harder to reach max HR, but in running it is easy. Find a hill (say 1/2 KM long) that is reasonably steep. Warm up for 20 minutes of running, and start doing hill repeats. Aim for a pace where you can do about 6 repeats.
Do the first three at increasing paces, and then for 4 and 5 start pushing to the max you can handle. As jensgram said in his answer, push till you are about to faint, or vomit, or whatever your body uses to tell you to stop.
This is pretty darn close to your max HR. At least functionally, before your body ups and quits on you.
Here's a link with several methods for calculating max heart rate. The original "220 - Age" method came about in a very 'off the cuff' manner, and others have developed new calculations. On the site I linked the HR calculations are cited and the site includes calculators to punch in numbers. Regardless, these calculations are an estimate, as individuals can go above the estimated max or never reach it.
You can also get an accurate appraisal in a sports lab, but it's spendy.
As a rule of thumb you're right about the "220-minus-age" thing. I've found this to be pretty accurate over the last 3-4 years.
Empirical way you say? Keep a moderate speed for a good while and then pace yourself until you're about to faint. That should give an accurate indication of your maximum HR :)
I.e., the max HR is individual so you can only find your own by achieving it. No model or calculation can be anything but a "best guess".