adx-bob's People
Forkers
gitter-badgeradx-bob's Issues
Market Segment calculation is not according to game specifications
From the specifications (page 15):
The way the game server simulates the daily real-time bidding on behalf of the
Ad Networks is as follows: Upon a bid request as a result of user u visiting web site
w, the matching Bid Bundle entries are set according to actual user attributes and the
user classification service level in effect28.
28Multiple segments may apply - resulting in more than one matching bid-bundle entry.
Implemented solution is assuming that if the campaign's market segment includes multiple segments than only the people who belong to both populations are targeted.
Need to investigate exactly how the segments are used and update the logic accordingly.
Learn campaign bid results
Store campaign reports and associate them with the parameters used to bid. Try to visualize relation between campaign profit, bid, and parameters.
Use logic in BidManager
Current code include unused classes and always returns a random bid.
BTW, please follow java naming conventions, Google Style Guide may be used for reference.
Consider adding unit tests as well.
Remove all code TODOs
Go over the TODOs (Window โ Show View โ Tasks
in eclipse), fix the trivial ones and open issues for the rest.
Adopt Javaslang
Should provide easier, readable, testable approach for manipulating collection and java functional programming.
Need to use its classes instead of java.util.
Learn Bid Bundle bids
Store previous bids (associated with campaign) and their results.
Use a distance function between current bid's campaign, and previous bids campaigns - determine if they are similar using a threshold.
Winning bids allow to us use lower bid, and losing bids require higher bid.
Apply some aggregation function to all similar campaigns bids to determine the new bid (make sure it's not too extreme).
Proper CI and Code Coverage
Need to configure standard environment for the project.
- Move eclipse project to root folder, use source code for adx-server instead of jar.
- Configure
build.gradle
on root folder and on subprojects (some links). - Integrate with Travis CI.
- Add code coverage metrics using Codecov.
Investigate kNN classification for bids
Consider using kNN classification for bids.
- Separate bids to several classes.
- To find correct classification of past bids we need to save all parameter used to construct the bid and relevant game status, and when the game ends use the log parser to find what was the best possible winning bid (minimal for bundle / maximal for campaign).
- Build kNN model. Use various distance function between campaigns to find the best model.
- In-game we can use the model to find the winning bid.
Note that for this approach to work for campaign bids we also need to classify each campaign opportunity to profitable/not and achievable/not, and only try to win profitable+achievable campaigns.
- Same kNN approach should be much easier here - classification based on actual campaign results.
Store bids and results
For each day, for each campaign, we need to store the base bid (without coefficients) and bid report (of next day). Then we will able to push them to the learn component.
Blocks #18
Bid strategy improvement
See improved revenue. Add tests for appropriate areas.
Convert project to IntelliJ IDEA
Cover bid bundle with tests
Write unit test.
Remove redundant / unreasonable code.
Improve Campaign Bid
Current campaign bid performs pretty bad. Add tests and make sure the agent is able to regularly obtain at least 8 campaigns.
Run against real agents
Add code to run bob against last year agents. Share results.
Improve campaign strategy
Receive many and worthy campaigns.
Bid per publisher
Different publishers have different market segment probabilities. When the UCS level is low it makes sense to bid more to these publishers.
Need to find out how queries to unknown market segment are calculated.
Document and Cover Campaign Logic
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.