A system that doesn't thake decision is useless
just because of one incident, I had a swing of false realization that rule-based thresholds are the most useless to the most useful thing in the world. Well it's neither of them. Let me explain...
Context
- I've deployed the initial version of Layer 1 (L1) with Dimensions and it was just... useless. It gives you random numbers that don't mean anything. Even as the guy who built this, I didn't understand what the hell was going on.
What Happened?
- the whole idea is that I have data and to find data issues, I use signals. These signals extract info from the data and that info is processed and then a decision is made from the final result.
- the problem is on the decision part. I was trying to design a system that doesn't make any wrong decisions. So in order to achieve this impossible goal, I started to build workarounds and add complexities. In the first version, in order to achieve this goal, I somehow accidentally removed the decision-making in the first place.
- the simplest way the system can make a decision is using thresholds (if-else). Just define the condition and what decision to take for that. This is fine to start with, but as my instinct goes, I hated it. I wanted something god-like, ultra-complex, a freaking brain-type decision-making that will replace the human... (kinda).
- so I switched to a score-based system. Now I don't need to define a condition, I can just define the severity of the problem. Much like a neuron in a neural network — weights × inputs.
- this worked, I completed L1, shipped. Realized it's shit. It was shit because there are numbers floating on my screen like traffic lights and telling me this is a problem because it's > 0.78. The system was not making any decision at all.
- so I redesigned the entire thing making sure that now it makes decisions and takes a stance. For that I tried the simplest approach (crude if-else thresholds) to understand why it doesn't work and to break my bad habit of adding abstraction.
- it worked surprisingly well. I didn't understand why, but using universally accepted thresholds and high-quality signals were enough to even make a simple workflow like this perform great.
What I Found
- high-quality signals + universally accepted thresholds are the reason why crude thresholds worked for L1.
- this won't be the case for L2 or other downstream layers because there will be noisy, overlapping, and weak signals.
- a system that doesn't make a decision is useless. Especially an ML system.
- taking a wrong decision is better than taking no decision and hiding behind ambiguity. In most cases, wrong decisions can be made correct.
Constraints
- these are still just basic if-else conditions that are tested on a lot of data and real-world cases to make sure they are robust.
- these are basically drawing hard decision boundaries. These hard decision boundaries work here but not everywhere.
- these hard boundaries can make wrong decisions.
- there is no learning here.