Code Monkey home page Code Monkey logo

adx-bob's People

Contributors

leehellow avatar mor8390 avatar nofargez avatar ranf avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

gitter-badger

adx-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

http://www.javaslang.io/

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).

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

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.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.