dmi3coder / behaiv-java Goto Github PK
View Code? Open in Web Editor NEWUser Behavior Prediction for everyone
License: Apache License 2.0
User Behavior Prediction for everyone
License: Apache License 2.0
Use a structured data store to capture all the features.
Decision tree fits project really well, this will give ability to use partial fit as well if needed
https://towardsdatascience.com/decision-tree-in-python-b433ae57fb93
https://machinelearningmastery.com/implement-decision-tree-algorithm-scratch-python/
https://www.geeksforgeeks.org/decision-tree-implementation-python/
Case 1: User should have ability to put laber not only as an string
TLRPC.User user = (TLRPC.User) object;
ApplicationLoader.behaiv().registerLabel(user.username);
Case 2: Probably user can put multiple keys into label or have attributes method
TLRPC.User user = (TLRPC.User) object;
ApplicationLoader.behaiv().registerLabel(user.id, user.username);
Providers work okay from first tries, I'm definitely sure there's something wrong with them in the long run.
In Kernel.restore
the method, data that has been restored is in the incorrect format. We need to restore the Pair
object correctly
currently captured data will load all at once, we need to split saved data into batches
When https://github.com/donautech/behaiv-remote-kernel will be finished, connect it via swagger-codegen or manually if it'll provide more dependencies
Downgrade java version to 7 because of android support. Everything except lamdas(e.g streams, utils) should be reverted to 7th analogs.
Contact me if you need help
Currently, each kernel saves data in its own way. So currently if I want to switch one kernel to another I need to drop all the data. It can be really good if we can re-use some of data.
Actually, I don't think we'll have support between e.g KNN and Logistic regression, so on changing the kernel we'll need to drop model data and re-train new model.
In any case, we'll need to draw a diagram on how storage should interact with kernels.
Make .setProvider()
analog that will accept optional providers. If this feature is not available on a device this will be ignored(probably automatically set to 0)
Due to migration from plain java classes to proto, we need to add migration that will be invoked on startup.
This is probably not required prior beta, but still, a good feature to have
Current Kernel re-initializes output what is really strange. It should fail when we add an additional label. Figure out what's wrong and can harm in the long run.
Related to #16
In our android example, we have edge cases. When you call .stopCapturing()
several times with a new thread it may get unpredictable results and will compute endlessly. We need some data throttling, primarily for .stopCapturing()
https://github.com/dmi3coder/behaiv-android/blob/master/example_kotlin/src/main/java/de/dmi3y/behaiv/example/tasks/TasksFragment.kt#L66
So, we need to add additional param to Behaiv.Builder
called .setThrottle(long amount)
And use this param to wait for a specific amount of data to arrive before doing any computations.
While investigating the project structure, I've come up with a conclusion that we need to make the whole project synchronous with the ability to use a reactive approach if needed(not in this ticket)
It's possible that developers want to keep data from the user. It's automatically saved with the remote kernel. We need the ability to always store them even when it's one-batch training.
Create a provider that can use logical operators on multiple providers
e.g
new LogicalProvider.Builder(provider1).or(provider2).and(provider3).xor(provider4)
Providers should have a logistic marker interface in order to use with LogicalProvider
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.