Package: seq2pat
Seq2Pat: Sequence-to-Pattern Generation LibrarySeq2Pat (AAAI'22) is a research library for sequence-to-pattern generation to discover
sequential patterns that occur frequently in large sequence databases.
The library supports constraint-based reasoning to specify
desired properties over patterns.Dichomotic Pattern Mining (KDF@AAAI'22,Frontiers'22) embeds Seq2Pat to exploit the dichotomy of positive vs. negative outcomes in populations. This allows  constraint-based sequence analysis to generate patterns that uniquely distinguishes cohorts. These patterns can be turned into feature vectors to feed into machine learning models for downstream tasks, e.g., intent prediction, intruder detection, and more generally, for digital behavior analysis.From an algorithmic perspective, the library takes advantage ofmulti-valued decision diagrams (AAAI'19).From an implementation perspective, the library is written inCythonthat brings together the efficiency of a low-levelC++backend and
the expressiveness of a high-levelPythonpublic interface.Seq2Pat is developed as a joint collaboration between Fidelity Investments
and the Tepper School of Business at CMU. Documentation is available atfidelity.github.io/seq2pat.Quick StartWe present examples for constraint-based sequential pattern mining and dichotomic pattern mining.
Sequences can be represented as strings or positive integers.Constraint-based Sequential Pattern Mining# Example to show how to find frequent sequential patterns# from a given sequence database subject to constraintsfromsequential.seq2patimportSeq2Pat,Attribute# Seq2Pat over 3 sequencesseq2pat=Seq2Pat(sequences=[["A","A","B","A","D"],["C","B","A"],["C","A","C","D"]])# Price attribute corresponding to each itemprice=Attribute(values=[[5,5,3,8,2],[1,3,3],[4,5,2,1]])# Average price constraintseq2pat.add_constraint(3<=price.average()<=4)# Patterns that occur at least twice (A-D)patterns=seq2pat.get_patterns(min_frequency=2)Dichotomic Pattern Mining# Example to show how to run Dichotomic Pattern Mining# on sequences with positive and negative outcomesfromsequential.seq2patimportSeq2Patfromsequential.pat2featimportPat2Featfromsequential.dpmimportdichotomic_pattern_mining,DichotomicAggregation# Create seq2pat model for positive sequencessequences_pos=[["A","A","B","A","D"]]seq2pat_pos=Seq2Pat(sequences=sequences_pos)# Create seq2pat model for negative sequencessequences_neg=[["C","B","A"],["C","A","C","D"]]seq2pat_neg=Seq2Pat(sequences=sequences_neg)# Run DPM to mine patterns that are aggregated as the# union, intersection, or the unique patterns among positive and negative sequencesaggregation_to_patterns=dichotomic_pattern_mining(seq2pat_pos,seq2pat_neg,min_frequency_pos=1,min_frequency_neg=2)# DPM patterns with union aggregation of positive and negative patterns# see also intersection, unique_pos, and unique_neqdpm_patterns=aggregation_to_patterns[DichotomicAggregation.union]# Most interestingly, we can generate features from DRPM patterns (pat2feat)# to create machine learning models in downstream tasks, e.g., intent prediction# To do that, we can the input sequences into one-hot feature vectors# Binary features denote existence of found patterns in each sequencepat2feat=Pat2Feat()sequences=sequences_pos+sequences_negencodings=pat2feat.get_features(sequences,dpm_patterns,drop_pattern_frequency=False)# These encodings can be used as feature vectors in ML models# to predict the positive vs. negative labels in the datasetAvailable ConstraintsThe library offers various constraint types, including a number of non-monotone constraints.Average: This constraint specifies the average value of an attribute across all events in a pattern.Gap: This constraint specifies the difference between the attribute values of every two consecutive events in a pattern.Median: This constraint specifies the median value of an attribute across all events in a pattern.Span: This constraint specifies the difference between the maximum and the minimum value of an attribute across all events in a pattern.Usage ExamplesExamples on how to use the available constraints can be found
in theUsage Example Notebook.
You can also find out how to scale up the mining capability, by running Seq2Pat on batches of sequences in parallel inBatch Processing Notebook.Supported by Seq2Pat, we proposedDichotomic Pattern Mining(X. Wang and S. Kadioglu, 2022) to analyze the correlations between
mined patterns and different outcomes of sequences. DPM allows generating feature vectors based on mined patterns and plays an integrator role between Sequential
Pattern Mining and the downstream modeling tasks as shown inGhosh et. al., Frontiers'22for clickstream intent prediction and intruder detection. An example on how to run DPM and generate pattern embeddings can be found inDichotomic Pattern Mining Notebook.InstallationSeq2Pat can be installed from PyPI usingpip install seq2pat. It can also be installed from source by following the instructions in
ourdocumentation.RequirementsThe library requiresPython 3.7+, theCythonpackage, and aC++compiler.
Seerequirements.txtfor dependencies.SupportPlease submit bug reports, questions and feature requests asIssues.CitationIf you use Seq2Pat in a publication, please cite it as:@article{seq2pat2022,title={Seq2Pat: Sequence-to-Pattern Generation for Constraint-based Sequential Pattern Mining},author={Wang Xin, Hosseininasab Amin, Colunga Pablo, Kadioglu Serdar, van Hoeve Willem-Jan},journal={Proceedings of the AAAI Conference on Artificial Intelligence},url={https://ojs.aaai.org/index.php/AAAI/article/view/21542},volume={36},number={11},pages={12665-12671},year={2022}}To cite the Dichotomic Pattern Mining framework, please cite it as:@article{Frontiers2022,title={Dichotomic Pattern Mining Integrated with Constraint Reasoning for Digital Behaviour Analyses},author={Sohom Ghosh, Shefali Yadav, Xin Wang, Bibhash Chakrabarty, Serdar Kadioglu},journal={Frontiers in Artificial Intelligence},url={https://www.frontiersin.org/articles/10.3389/frai.2022.868085},volume={5},year={2022}}@inproceedings{DPM2022,title={Dichotomic Pattern Mining with Applications to Intent Prediction from Semi-Structured Clickstream Datasets},author={Xin Wang and Serdar Kadioglu},booktitle={The AAAI-22 Workshop on Knowledge Discovery from Unstructured Data in Financial Services},publisher={arXiv},url={https://arxiv.org/abs/2201.09178},year={2022}}LicenseSeq2Pat is licensed under theGNU GPL License 2.0.