Predicting outcome of games - how to make team 1/2 interchangable Currently I'm writing some models to predict outcomes of team games, but I'm having a hard time featurizing the teams so that the order of teams doesn't matter.

For example, currently I duplicate all the data and reverse it to reduce the effect of ordering on the outcome, but that's not proving perfect. If I have "Ravens vs Panthers = Panthers win", I also put in "Panthers vs Ravens = Panthers wins".

When I then go to my model and ask for the output of Panthers vs Ravens and Ravens vs Panthers, I get different (but similar) results. For example the probabilities of Panther's winning may be 75% in the first ane 72% in the second.

How else might I make it 100% ambiguous as to which team is team 1 and which is team 2?
Home field advantage is incredibly important in sports. If you always put the home team in the first column, your model will adjust the bias term accordingly. I've been doing this successfully for NBA and MLB models for several years now. Making the first team the home team also eliminates the need for an explicit home indicator variable and you'll be able to use "half" of the data like you've described. 

For rare neutral games like the Superbowl, you would need to create a mirror image of the data. In other words, present two rows for each game (team-A,team-B;team-B,team-A). When it's time to score you model, you can just arbitrarily pick one of the two records because they represent mirror opposite of the same thing. I've done this before for March Madness basketball games (all neutral courts), and this year (2016) my March Madness model was in the top 10% in Kaggle, so the technique works. 

Home field advantage is just one of the variables you'll need to make a good predictive model, but that's an answer for another question.