Hello, I would like to use the CLA to monitor transactions. Transactions arrive in a completely random order so using the TP to measure transitions between transactions is not useful. My thought is that I need to monitor the transitions within a transaction record and not between transaction records.
Why am I doing this? Well, I’d like to leverage the enormous storage potential of the TP by storing the transitional sequences within a transaction. In this way, it could learn every transaction as a sequence. I could then, after learning, for any new record get the anomaly score of each TP sequence step in a transaction record, add them up and get the average score. This score would indicate how anomalous the record is as a transaction. My first idea is to break up the transaction record into multiple time steps and feed these fields into the CLA one at a time. The problem is that each of these fields could possibly require a different encoder. I can get around this by encoding the fields separately and passing them to the PassThruEncoder that would be hookup up a spatialPooler. As long as each field encodes to the same length this should work….right? My question is, would this confuse the SpatialPooler? Am I crossing data domains regarding the SpatialPooler because the data being represented is not of the same kind. The SpatialPooler doesn’t “know” this, but still...? The second idea is to have a separate SpatialPooler for every field in the record and send its output to a higher CLA in sequential order (SP1, SP2, SP3….end of sequence. Next record…). This way each field has its own SpatialPooler to learn its own data domain. The higher level SpatialPooler then reads this as regular input. The TP would learn the transitions between fields in the record. Each record would begin a new learning sequence. I think this could be very effective (and incredibly sensitive) in identifying transactions that need further inspection. Sound feasible? -Phil
