我是靠谱客的博主 神勇蜻蜓,最近开发中收集的这篇文章主要介绍机器学习之置信区间上界算法二、导入数据三、每个用户随机抽选广告得到的点击数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

零、算法原理


一、导入标准库

In [2]:
# Importing the libraries 导入库
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# 使图像能够调整
%matplotlib notebook 
#中文字体显示  
plt.rc('font', family='SimHei', size=8)

二、导入数据

In [8]:
dataset = pd.read_csv('Ads_CTR_Optimisation.csv') # 数据表示虚拟环境,模拟我将投放哪些广告
dataset
Out[8]:
 Ad 1Ad 2Ad 3Ad 4Ad 5Ad 6Ad 7Ad 8Ad 9Ad 10
01000100010
10000000010
20000000000
30100000100
40000000000
51100000000
60001000000
71100100000
80000000000
90010000000
100000000000
110000000000
120001000000
130000000010
140000000100
150000100100
160000000000
170000000000
180000000100
190000000010
200100000100
210000100001
220000000000
230000000110
240000101100
250000000000
260100100100
270101000000
280000000000
290000100110
.................................
99700000000000
99710000000100
99720000000000
99730000100000
99740000000110
99750000101010
99760000100100
99770100101000
99780000100000
99790010001000
99801101000000
99810000000000
99820100000000
99830000100110
99840000100000
99850000000100
99860000100000
99870000100000
99881000100000
99890000000000
99900001000000
99910101101000
99920001001000
99930000100010
99940010000010
99950010000100
99960000000000
99970000000000
99981000000100
99990100000000

10000 rows × 10 columns

问题描述

三、每个用户随机抽选广告得到的点击数

In [27]:
import random
N = 10000  # 1000个用户
d = 10     # 10个广告
ads_selected = [] # 广告选择
total_reward = 0 
for n in range(0, N):      # 每个用户循环
    ad = random.randrange(d) # 随机选择广告
    ads_selected.append(ad)  # 将选择的广告加入list中
    reward = dataset.values[n, ad] # 取出数据集中n行ad列查看是否命中,命中值为1,未命中值为0(1即为奖励)
    total_reward = total_reward + reward  # 每轮奖励累计相加

print(total_reward)
# 画图
plt.hist(ads_selected)
plt.title(u'广告选择直方图')
plt.xlabel(u'广告')
plt.ylabel(u'每个广告的点击数')
plt.show()
1282

图中我们可以看到,由于是随机的,10000个人选择10种广告,每个人平均会在1000次左右

四、置信区间上界算法

In [55]:
import math
N = 10000  # 1000个用户
d = 10     # 10个广告
ads_selected = [] # 广告选择
numbers_of_selections = [0] * d # 多项选择
sums_of_rewards = [0] * d  # 奖励总和
total_reward = 0
for n in range(0, N): # 第n个用户
    ad = 0 # 广告初始化
    max_upper_bound = 0  # 最大上界初始化
    for i in range(0, d): # 第i个广告
        if (numbers_of_selections[i] > 0):
            average_reward = float(sums_of_rewards[i]) / float(numbers_of_selections[i]) # 平均奖励,这里如果python2记得用float
            delta_i = math.sqrt(3/2 * math.log(n + 1) / numbers_of_selections[i]) # 置信区间
            upper_bound = average_reward + delta_i # 置信区间上界
#             print(average_reward)
#             print(delta_i )
        else:
            upper_bound = 10000
        if upper_bound > max_upper_bound:
            max_upper_bound = upper_bound
            ad = i
#     print(ad)
    ads_selected.append(ad)
    numbers_of_selections[ad] = numbers_of_selections[ad] + 1
    reward = dataset.values[n, ad]
    sums_of_rewards[ad] = sums_of_rewards[ad] + reward
    total_reward = total_reward + reward
# print(ads_selected)
print(total_reward)
# print(numbers_of_selections)
# print(sums_of_rewards)
2358
In [56]:
# 画图
plt.hist(ads_selected)
plt.title(u'广告选择直方图')
plt.xlabel(u'广告')
plt.ylabel(u'每个广告的点击数')
plt.show()

从图中可以看到,广告5被点击数明显比较多。总奖励也提高了一倍,证明我们的算法很NB

五、项目地址

https://coding.net/u/RuoYun/p/Python-of-machine-learning/git/tree/master/00%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/5.%E8%BF%9B%E9%98%B6%E7%AE%97%E6%B3%95/1.%E5%BC%BA%E5%8C%96%E5%AD%A6%E4%B9%A0/1.%E7%BD%AE%E4%BF%A1%E5%8C%BA%E9%97%B4%E4%B8%8A%E7%95%8C?public=true

最后

以上就是神勇蜻蜓为你收集整理的机器学习之置信区间上界算法二、导入数据三、每个用户随机抽选广告得到的点击数的全部内容,希望文章能够帮你解决机器学习之置信区间上界算法二、导入数据三、每个用户随机抽选广告得到的点击数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部