T
T
Think With Your Head2018-10-25 19:24:49
Algorithms
Think With Your Head, 2018-10-25 19:24:49

What algorithm should be used to find the best probability among a set of events?

Hello everyone
I’ll say right away that I’m a complete zero in algorithms, I would be grateful not only for solving the problem, but just for advice on what to read, what topics to understand how to work on such issues.
Problem: The
desired probability is the probability of an INCIDENT event that either occurs or does not occur. Let's write this briefly as INCIDENT->true and INCIDENT->false.
INCIDENT depends on the object-event pairs described below and their combinations.
There are many objects A...Z with different event fields a....z. Moreover, some events are not simple, but composite (include some parameters), i.e. there is nesting, but no more than two levels. To make it easier to understand, the data structure for events is as follows:

[
  {
    "Object A": {
      "event": "(event name) a",
      "event": "(event name) b",
      "event": "(event name) c",
    },
    "Object B": {
      "event": "(event name) a",
      "event": "(event name) b",
      "event": "(event name) c",
    },
    "Object С": [{
      "event": {
        "event name": "(event name) a",
        "param1": "(param) 1",
        "param2": "(param) 2",
      },
      "event": {
        "event name": "(event name) a",
        "param1": "(param) 123",
        "param2": "(param) 321",
      }
    }]
  }
]

As you can see, there are objects of type C whose events are composite (include some parameters param1, param2 etc).
There is an incident database that lists the states of these incidents (INCIDENT->true or INCIDENT->false) and their predecessor objects with their events.
It is required to find such combinations of events (and their parameters, in the case of compound events), in which the onset of INCIDENT->true was most often.
Example:
1) There are 100 records with the following data: event a fired for object A (short notation: A->a), 33% INCIDENT are true among the set of all INCIDENT with the same events, the remaining 66% INCIDENT are false.
[
  {
    "A": "a",
    "INCIDENT": true x33 (33%)
    "INCIDENT": false x66 (66%)
  }
]

If, simultaneously with this event (A->a), the event B->a fired, then the number of INCIDENT->true became larger and now equals 50% of the total number.
[
  {
    "A": "a",
    "B": "a",
    "INCIDENT": true x50 (50%),
    "INCIDENT": false x50 (50%),
  }
]

2) Add a composite event (nesting). If C->a with parameter (param1 = 1) is added to events A->a and B->a, then the number of INCIDENT->true decreases and becomes 10% of the total.
[
  {
    "A": "a",
    "B": "a",
    "C": {
      "event name": "a",
      "param1": 1
    },
    "INCIDENT": true x10 (10%)
    "INCIDENT": false x90 (90%)
  },
]

And if the same event C->a is added to A->a and B->a, but with different parameters (param1 = 123) and (param2 = 321), then the number of INCIDENT->true increases and becomes 60%.
[
  {
    "A": "a",
    "B": "a",
    "C": {
      "event name": "a",
      "param1": 123,
      "param3": 321
    },
    "INCIDENT": true x60 (60%)
    "INCIDENT": false x40 (40%)
  },
]

Thanks to all!

Answer the question

In order to leave comments, you need to log in

1 answer(s)
X
xmoonlight, 2018-10-25
@thinkbrain2

Polynomial chains of connected events.
For object A (event-fields: a1-aN, compound event parameters: aa1-zzN), total probability (for true - separately, for false - separately):

a1*(aa1+...+aaN)+a2*(bb1+...+bbN)+...+aN*(zz1+...+zzN)
and so on for each object (two expressions per object).
But it's better to use a neural network.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question