机器学习-初级进阶(Thompson 抽样算法 )

一、Thompson 抽样算法

  1. 原理

    在这里插入图片描述
    在这里插入图片描述

  2. 代码实现

    数据

    Ad 1  Ad 2  Ad 3  Ad 4  Ad 5  Ad 6  Ad 7  Ad 8  Ad 9  Ad 10
    1     0     0     0     1     0     0     0     1      0
    0     0     0     0     0     0     0     0     1      0
    0     0     0     0     0     0     0     0     0      0
    0     1     0     0     0     0     0     1     0      0
     ...
    
    from matplotlib import pyplot as plt
    import pandas as pd
    import random
    
    dataset = pd.read_csv("Ads_CTR_Optimisation.csv")
    
    d = 10
    N = 10000
    numbers_of_rewards_1 = [0] * d
    numbers_of_rewards_0 = [0] * d
    ads_selected = []
    total_reward = 0
    
    for n in range(N):
        ad = 0
        max_random = 0
        for i in range(d):
            random_beta = random.betavariate(numbers_of_rewards_1[i] + 1, numbers_of_rewards_0[i] + 1)
            if random_beta > max_random:
                max_random = random_beta
                ad = i
        ads_selected.append(ad)
        reward = dataset.values[n, ad]
        if reward:
            numbers_of_rewards_1[ad] += 1
        else:
            numbers_of_rewards_0[ad] += 1
        total_reward += reward
    print(total_reward)
    
    plt.hist(ads_selected)
    plt.title("Histogram of ads selections")
    plt.xlabel("Ads")
    plt.ylabel("Number of times each ad was selected")
    plt.show()
    

    在这里插入图片描述

    由数据看出4号广告被投放的次数基本占据90%,并且10000次投放点击量2603这个数是变化的但基本在2600左右浮动,相比于置信区间上界算法有非常大的提升

  3. Thompson抽样算法-TSA vs 置信区间上界-UCB

    在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值