If your goal is to generate one universal ranking for all users to see, rather than a ranking per user, then collaborative filtering will most likely be of little use.
There may be simpler ways than using machine learning to solve this problem.
Gathering data properly
Here is the trouble: the order in which you have been presenting the restaurants in the past has most likely biased your data. If restaurant A was always presented near the top of the list, and restaurant Z on the 10th page, then this could have an impact on variables like the CTR (maybe people get desperate around the 10th page and get less picky, giving Z a higher CTR and A a lower CTR!). Same with number of views (restaurants often on the first page will get more views) and ratings (the relationship here is less obvious, but I wouldn't be surprised if people who pick the first restaurant they see on the first page also happened to give better reviews, for example).
Ideally, you would run a proper experiment presenting the restaurants in a random order and gathering data from this experiment to create your ranking.
If you don't want to run a full-blown randomized experiment (which is understandable if this is a business), then you could keep the ranking the way it is, but sneak in a handful of restaurants selected at random onto the front page on every visit. This will allow you to gather data from the performance of the randomly presented restaurants while still offering a decent ranking to your customers.
You will need to determine what the criterion of success is. I will assume you are running some sort of website like JustEat where customers pick a restaurant and then order food. What you could do is score the restaurants according to the expected revenue from presenting them in the ranking. This would be something like:
- The probability that a customer clicks on the restaurant if the restaurant is shown to them in the list
- Multiplied by the probability that the customer buys from a restaurant after clicking on that restaurant
- Multiplied by the cut you get from the average order from that restaurant
In essence, a restaurant would score high only if it can be expected that presenting that restaurant to the customer is likely to result in revenue.
Given this score, it would then make sense to order your restaurants in decreasing order of expected revenue.