我是靠谱客的博主 英俊发夹,最近开发中收集的这篇文章主要介绍机器学习之汤普森算法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、UCB和汤普森算法比较¶

二、导入标准库

In [1]:

# 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 [2]:

dataset = pd.read_csv('Ads_CTR_Optimisation.csv') # 数据表示虚拟环境,模拟我将投放哪些广告
dataset

Out[2]:

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 [8]:

import random
N = 10000                    # 1000个用户
d = 10                       # 10个广告
ads_selected = []           # 广告选择
numbers_of_rewards_1 = [0] * d # 广告i奖励1的总和
numbers_of_rewards_0 = [0] * d # 广告i奖励0的总和
total_reward = 0            # 总奖励
for n in range(0, N):        # 每个用户循环
    ad = 0
    max_random = 0
    for i in range(0, d):   # 第i个广告
        random_beta = random.betavariate(numbers_of_rewards_1[i] + 1, numbers_of_rewards_0[i] + 1) # beta分布
        if random_beta > max_random:  # 寻找最大随机量,最大随机量对应的广告为我们选择投放的广告
            max_random = random_beta
            ad = i
    ads_selected.append(ad)
    reward = dataset.values[n, ad]  # 获得奖励
    if reward == 1:
        numbers_of_rewards_1[ad] = numbers_of_rewards_1[ad] + 1
    else:
        numbers_of_rewards_0[ad] = numbers_of_rewards_0[ad] + 1
    total_reward = total_reward + reward
print(total_reward)
2625

六、画图展示

In [5]:

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

看来还是汤普森更加NB。随机生成的总奖励1282(见上一个专题),置信区间上界算法总奖励2358(见上一个专题),汤普森的总奖励2625

七、项目地址

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/2.%E6%B1%A4%E6%99%AE%E6%A3%AE%E7%AE%97%E6%B3%95?public=true

最后

以上就是英俊发夹为你收集整理的机器学习之汤普森算法的全部内容,希望文章能够帮你解决机器学习之汤普森算法所遇到的程序开发问题。

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

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

评论列表共有 0 条评论

立即
投稿
返回
顶部