Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alextanhongpin/go-a-b
A/B testing metrics collection with golang
https://github.com/alextanhongpin/go-a-b
bandit-algorithm go golang nomad
Last synced: 10 days ago
JSON representation
A/B testing metrics collection with golang
- Host: GitHub
- URL: https://github.com/alextanhongpin/go-a-b
- Owner: alextanhongpin
- Created: 2017-10-13T06:33:24.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2017-10-28T04:51:55.000Z (about 7 years ago)
- Last Synced: 2024-11-14T00:34:09.867Z (28 days ago)
- Topics: bandit-algorithm, go, golang, nomad
- Language: Go
- Size: 45.9 KB
- Stars: 4
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-golang-repositories - go-a-b
README
# go-a/b
A simple a/b metrics data collection and visualization with redis.
## Example loading lua script from golang
```golang
func () {
//
script1 := client.ScriptLoad(`local value = cmsgpack.pack({ARGV[2], ARGV[1]})
redis.call('zadd', KEYS[1], ARGV[1], value)
return redis.status_reply('ok')`)if script1.Err() != nil {
log.Println("error loading script:", script1.Err().Error())
}
// Else, get the sha
sha := script1.Val()
log.Println(sha)cmd2 := client.EvalSha(sha, []string{"test:1"}, "1421481600000", "yes")
}
```## Bandit algorithm requirements
As a user,
I want to create a new bandit test,
In order to test the performance of the ui.|------------------------------|
| Feature | Pull | Reward |
|--------------|------|--------|
| Red button | 0 | 0 |
| Green button | 0 | 0 |
| Blue button | 0 | 0 |
|------------------------------|As a user,
I want to set the initial values of the bandit,
In order to have better control over the exploitation.```bash
$ PUT /bandits/experiment-name{
"values": [0,1,2,3]
}
```- upload data
- download data
- replay from last
- reset from start
- duplicate
- getURL
- update experiment name
- update labels
- set labels
- get reward/pull ratio
- store in memory/redis/dedicated storage?Frontend guide
1. Call the api to select an arm
2. The call should return the arm, the feature information and some metadata
3. The data should be cached locally so that the user does not need to call the cached data again (persistent)
4. If the user clicks it, then update it with the score 1
5. Else if the user navigates out of the page without doing anything, then update it with the score 0