最近,我读了一篇名为Bandits Know the Best Product Price的博客文章"(http://pkghosh.wordpress.com/2013/08/25/bandits-know-the-best-product-price/),其中概述了如何使用多臂强盗分析进行价格优化.
关于多臂强盗分析是否优于A/B测试(例如"每次将击败A/B测试的20行代码")还有很多讨论:http://stevehanov.ca/blog/index .php?id = 132?utm_medium =推荐与"为什么多臂强盗算法不比A/B测试更好":http://visualwebsiteoptimizer.com/split-testing-blog/multi-armed-bandit-算法/).
我知道有一个叫做"强盗"的R包,它可以用于这样的分析.
有人有一个玩具示例 -与博客文章中的示例相似 - 它显示了如何通过使用R(在价格优化的背景下)应用此方法?
谢谢你的帮助.
我最近看到强盗抱怨B104:
绑定到所有网络接口可能会打开非预期接口上的流量服务,这可能没有正确记录或保护。此插件测试查找字符串模式“0.0.0.0”,该字符串模式可能指示对所有网络接口的硬编码绑定。
>> Issue: Possible binding to all interfaces.
Severity: Medium Confidence: Medium
Location: ./examples/binding.py:4
3 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
4 s.bind(('0.0.0.0', 31137))
5 s.bind(('192.168.0.1', 8080))
Run Code Online (Sandbox Code Playgroud)
“向非预期接口上的流量开放服务”是什么意思?
我已经在 Flask 应用程序中看到了这一点app.run(host="0.0.0.0")。应该写什么?
(旁注:这不在生产中使用。这主要用于在开发过程中进行简单测试。但我不确定 gunicorn 是否可能有类似配置的相同问题)
我使用以下行来更新每次试验中的 beta 发行版并给出 arm 推荐(我使用 scipy.stats.beta):
self.prior = (1.0,1.0)
def get_recommendation(self):
sampled_theta = []
for i in range(self.arms):
#Construct beta distribution for posterior
dist = beta(self.prior[0]+self.successes[i],
self.prior[1]+self.trials[i]-self.successes[i])
#Draw sample from beta distribution
sampled_theta += [ dist.rvs() ]
# Return the index of the sample with the largest value
return sampled_theta.index( max(sampled_theta) )
Run Code Online (Sandbox Code Playgroud)
但目前,它只适用于奖励是二元的(成功或失败)。我想修改它,使其适用于非二元奖励。(例如奖励:2300、2000,...)。我怎么做?
我正在配置我的 pyproject.toml 以便 bandit 排除测试文件,但它给了我错误 ERROR pyproject.toml : toml parser not available, reinstall with toml extra
这是我的 pyproject.toml
[tool.bandit]
exclude_dirs = ["*/test/*"]
tests = ["B201", "B301"]
skips = ["B101", "B601"]
[tool.pre-commit-hooks.bandit]
exclude = ["test*"]
Run Code Online (Sandbox Code Playgroud)
我运行以下命令:bandit -c pyproject.toml -r .
pre-commit bandit pre-commit.com pyproject.toml bandit-python
我目前正在overoverwire.org上进行强盗战争游戏(针对那些不知道这是一个网站的人,他们需要执行不同的任务以提高自己的黑客技能)。我以前做过它们,但是我很早就被卡住了,我用扰流板对它们进行了爆炸。这样做的好处是,它为“可重播性”留了很多空间。xD现在我在bandit20,我需要使用一个可执行文件:
/home/bandit20/suconnect
usage: ./suconnect <port number>
Run Code Online (Sandbox Code Playgroud)
“将使用TCP连接到本地主机上的给定端口。如果它从另一端收到正确的密码,则将下一个密码发送回去。”
我最初的反应是拉出nmap并寻找开放端口。我确实找到了一些打开的,其中一些正在运行echo和一些openssl。总共有5个开放的端口,无论运行的服务如何,我还发现使用ps -alx在后台运行的netcat监听另一个第6个端口。
现在,任务说明显示:
[文件]在您指定为命令行参数的端口上与本地主机建立连接。然后,它从连接中读取一行文本,并将其与上一级密码(bandit20)进行比较。如果密码正确,它将传输下一级密码(bandit21)。注意:尝试连接到您自己的网络守护程序,以查看其是否按您的想法工作
我使用预期的语法尝试了找到的所有6个端口,但它们均未返回任何内容。我确实在扰流板的博客上找到了网站上的一个较旧的描述,内容是:
要达到此级别,您需要登录两次:一次运行setuid命令,一次启动setuid将连接到的网络守护程序。
我尝试过两次sshing,并使用二进制文件在所有这些端口和第二个窗口中进行侦听,但是它什么也没做。问题是在我运行二进制文件后,它给了我一个空白命令行,但是无论我键入什么,它都没有任何输出。我在文件上使用了字符串,但我发现它确实存在无法连接的失败消息,错误的密码,正确的密码等,但我没有收到任何信息。
我希望在这种情况下更多地了解基本概念,而不是交给解决方案。我不确定连接到您自己的网络守护程序意味着什么(我尝试使用Google谷歌搜索并在youtube上查找,但我不太了解网络守护程序是什么,或者连接到网络守护程序意味着什么)。还必须运行2个终端似乎很重要,因为他们将其取出来了,但是在这种情况下,我似乎无法弄清楚您应该怎么做或应该使用它做什么。另外,要侦听我使用netcat的本地主机上的端口,请不确定是否还有其他更好的方法,或者您是否应该使用其他任何方法。
任何反馈都非常感谢,谢谢:)
bandit ×5
ab-testing ×2
algorithm ×1
bayesian ×1
daemon ×1
data-mining ×1
flask ×1
networking ×1
pre-commit ×1
r ×1
setuid ×1