ML algorithms for defining NORMAL user behavior I am trying to create a model that would capture the usual behavior of a user: i.e., create a model for user profiling. 

I do have 2 million rows of data indicating normal behavior of a user and want to define a model that can detect any variation from the normal behavior of the user.

I am contemplating of using one class svm / isolation forest trained on normal behavior. I would like to get an opinion whether that looks as a good direction.

Or should I venture into deep learning or unsupervised clustering based model and gather data for abnormal behavior of a user as well to possibly use supervised models.
I think it depends mostly on how difficult/expensive/time-consuming it is to gather data for abnormal behavior.It also depends on whether you'd expect this abnormal behavior to belong to one (or a fixed number of) classes or it could be anything that deviates from normal. 

If you can afford to collect labelled data and expect the abnormal behavior to be limited to a fixed number of classes, then the supervised approach is very likely going to give you better results.

Instead, if any of the above hypothesis do not hold, then I think the semi-supervised approach (as you said, One Class SVM or similar techniques) is in my opinion a good way to go.