seveibar / confidis Goto Github PK
View Code? Open in Web Editor NEWAn uncertain key store for data from agreeing and disagreeing sources
License: MIT License
An uncertain key store for data from agreeing and disagreeing sources
License: MIT License
Execution order of GET ANSWER TO
can impact the returned confidence at the very beginning. This doesn't look very good in demos, even though it seems to be mostly irrelevant for production applications.
Interpolating answers, meaning being able to pick an answer between two answers, would be incredibly powerful, because new answers could be produced that maximize a particular belief.
That said, this may be too complex so out of scope unless someone has a great need.
Currently, only single truth mode is supported. That is to say, the highest confidence answer is selected and considered true, then sources are evaluated based on the correctness of their answer. Multi-truth would mean that any answer with a high enough confidence would be considered correct.
The biggest problem with this approach that I anticipate is that it will make it easier to do a "popular, but wrong answer" attack, wherein attacking sources with low confidences continually guess the same popular wrong answer, eventually making it considered one of the true answers.
Dependent sources are described in ATTACKS.md
At the moment, I think this is the best fix:
The latent quality vector is computed via a PCA of source similarity (similarity = percentage of time in agreement) e.g. the top 5 PCA factors can be the latent quality descriptors. Each latent quality descriptor tells you how to construct the each latent quality via the average agreement of each constituent source. There's a version of PCA that forces each component to be either 0 or 1, which makes it much easier to interpret the bias, since it's fully characterized by a couple sources. That also simplifies computation, since you only need to examine a couple sources rather than add agreement across many.
In prediction kernel mode, a prediction kernel model learns confidence of belief answers from the differences of latent beliefs of sources. e.g. if there are three latent beliefs, each will have an answer and those answers will have differences. So the training data is
X=[d(b1_answer, b2_answer), d(b2_answer, b3_answer), d(b1_answer, b3_answer)]
Where b_i
is a belief. The answer for each belief can be selected from the best representative of each belief (naive, but probably the theoretical best unless answer interpolation is implemented)
The ground truth/prediction is
y=[conf_b1, conf_b2, conf_b3]
Any model can be used to run the prediction. The model used would be called the "prediction kernel".
Performance of system should be compared against latent truth model. An easy way to do this is just to implement a latent truth model (via a new graph system) and comapre the difference. LTMs have several adversaries that are not expected to perform as well as the base model.
Confidis is built to be fast for streaming sources, as a result the execution order of each query can effect final confidences and qualities.
For this test, try randomized orders of SET
to construct variations of a realistic graph. Measure the difference between the highest confidence and lowest confidence for each question and quality for each source.
Create a scenario with 100 questions and 10 sources. Each source has a predetermined mean representing the probability they will get the right answer. Each question has a predetermined answer.
Run the following tests:
For each test consider the following mean source accuracy scenarios:
After each test, measure the difference between the quality of the source (GET SOURCE <source>
) and their mean. Present the parameters of the test in a meaningful way (a bunch of tables). Compute overall scores for use in regression testing with a meaningful measurement name.
A constraint that limits the confidence in an answer to the maximum quality of the sources that agree with that answer. This prevents "popular, but wrong answer" attacks.
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.