title: Understanding why tf-idf gives higher classification accuracy by KNN than BoW and GloVe
body: <p>I am trying to classify 107 test questions into predefined concepts <code>(c1, c2, c3, c4)</code> by KNN classifier in Python. My data is in csv file so it's all in one document. I have split the data to 80% training and 20% testing.  </p>
  
  <p>My code works as follows:</p>
  
  <ol>
  <li>Pre-process (tokenize, remove stop words, stem)</li>
  <li>Extract features by either (TF-IDF, BoW, GloVe)</li>
  <li>Implement KNN classifier on the extracted features</li>
  </ol>
  
  <p>The accuracy results as follows:</p>
  
  <pre><code>tf-idf: 95% 
  BoW: 62%
  GloVe: 57%
  </code></pre>
  
  <p>Why the accuracy is very high with TF-IDF comparing to BoW and GloVe?</p>