Daniel notes
you@here:~/articles$ cat index.md

Articles

Explanations that are meant to last longer than a blog post. For now they are all about one subject, fuzzy inference systems that learn from data, and about the two Python libraries I maintain for them.

Library For Built on
ANFIS Toolbox classic ANFIS, small and medium problems NumPy
highFIS TSK systems for data with many features PyTorch

The idea in one page

A Takagi-Sugeno-Kang (TSK) fuzzy system is a set of rules such as

if temperature is high and humidity is low then output is a linear function of the inputs

Words like high and low are fuzzy sets: instead of a hard threshold, each one has a membership function that says how much a value belongs to it, from 0 to 1. A rule fires as strongly as its conditions are true, and the answer of the system is the average of what every rule proposes, weighted by how strongly each one fired:

y=∑r=1Rw¯rfr(𝐱),w¯r=wr∑i=1Rwi

Two things make this more than an expert system. The shapes of the fuzzy sets and the coefficients of the rules can be learned from data, like the weights of a neural network. And after training the model is still a list of rules a person can read.

Reading order

  1. How ANFIS works: the classic architecture, layer by layer
  2. A first model with ANFIS Toolbox: from data to a trained model
  3. Why fuzzy systems choke on many features: the problem highFIS exists to solve, with a demo you can run
  4. The highFIS model families: a map of what is in the library