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:
Reference on why Bandit algorithms are better than A/B testing frameworks.
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.
You can see nice algorithms in kaggle competitions about CTR:
Just go to forum of each competition and search for winning solutions ;)
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.