I am a computer science and math double major, and I am applying to computer science PhD programs this fall. I have a 3.9 GPA and have done research with 3 professors during my time in undergrad. I have one publication and three poster presentations, and I will hopefully have at least one more publication before I apply (but due to problems in the research group, that might not happen). I can get two great letters of recommendation, but the third might be lackluster. I go to a regionally known liberal arts school, but it is most certainly not a household name.
With my qualifications out of the way, I want to study machine learning. My prior research was not in machine learning per se, but it did involve aspects of it. I have done work in bioinformatics, computational statistics, and computer vision. My professors are not especially well known in their fields, but they do publish frequently. What tier programs should I apply to? My advisor thinks I should apply roughly on the threshold of top/mid tier programs, but I would like more opinions.
On a tangent: Some schools have both computer science and machine learning PhD programs. Should I apply to both? And do some schools admit generally with no specialty? If so, would I have a better chance with them since machine learning is so competitive?