Definition of Click Through Rates:
CTR is the number of clicks that your ad receives divided by the number of times your ad is shown expressed as a percentage (clicks ÷ impressions = CTR).
Logistic regression is very common and efficient.
This will provide you with a probability of click for a given impression. You will likely need additional information for optimization, like keywords or A/B testing.
There are a group of algorithms (or techniques) called the Bandit algorithms, which deal especially with the problem statement, which is the optimization of Click-through rates of advertisements.
The problem is framed in a setting of multiple bandits with vending machines. There are various strategies which can be implemented:
I've tried the following algorithms:
Factorization Machines by Steffen Rendle - Really good algorithm for sparse feature sets, in construct to polynomial-regression. Measures the interaction between features. Model that in addition to learning linear weights on features, learn a vector space for each feature to learn pairing interactions between features in this new space.
Field-Aware Factorization Machines - an improvement of the FM model. Recently, have been used to win two Kaggle's click-through rate prediction competitions.
FTRL - "Follow The (Proximally) Regularized Leader" algorithm - regularized online logistic regression. Equivalent to Online (Stochastic) Gradient Descent when no regularization is used. Very easy to implement.
AdPredictor algorithm by Microsoft The algorithm is based on a probit regression model that maps discrete or real-valued input features to probabilities. It maintains Gaussian beliefs over weights of the model and performs Gaussian online updates derived from approximate message passing.
Factorization machines - libfm open source software has been used widely among top companies in recommender applications.
Check it out. It contains various algorithms to play with (e.g. stochastic gradient descent).
I guess your data has like "click/view" label for each pair of user-product or say cookie-advertisement saying "whether user clicked or just viewed product". You can treat this as binary classification with two classes click or just view.