Context:
I'm building a model to predict the type of offense (7 classes) from NYPD data.
features = ['occurrence_hour', 'borough_labels', 'time_to_entry']
X_train, y_train = train[features], train['offense_labels']
X_test, y_test = test[features], test['offense_labels']
from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy_score(y_test, y_pred)
0.437
Using these simple features, we achieve an accuracy of 43.7%. Now, if we add a feature for day of week the accuracy drops to 38.1% (aside: 40.6% of entries fall into the "grand larceny" category, so we could achieve 40.6% accuracy by guessing "grand larceny").
features = ['occurrence_hour', 'borough_labels', 'time_to_entry', 'day_of_week']
X_train, y_train = train[features], train['offense_labels']
X_test, y_test = test[features], test['offense_labels']
from sklearn import tree
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
accuracy_score(y_test, y_pred)
0.381
My question then is: how is it possible that the addition of information lowers the accuracy of the decision tree? Should that only serve to increase our predictive power?