It’s hard to suggest ways without knowing how your data looks like. A few things which have worked for me in the past:

Ensure that train, valid, and test data come from the same distribution.
The model is trained correctly (ie no underfitting and no overfitting).
Improve precision: Analyse the confusion matrix. Look at the examples which are misclassified (FPs) and mine data with data similar to misclassified examples (FP mining). Retrain model.
Improve recall: Again look at the confusion matrix to look for FNs. It maybe the case that there are very few examples from one of the classes hence the model is not learning to classify that class. Add more data (or oversample) and train again.

In most cases there’s a tradeoff between precision and recall.