[mlpack] Is scanning business transactions for fraud an appropriate use of MLpack?
Rick Hedin
cubsno1 at gmail.com
Sun Nov 11 17:39:20 EST 2018
Thanks, Ryan.
I'm packaging this into a proposal to my colleagues, and I hope to get
buy-in.
Regards, Rick
On Wed, Nov 7, 2018 at 10:27 PM Ryan Curtin <ryan at ratml.org> wrote:
> On Wed, Nov 07, 2018 at 01:27:59PM -0500, Rick Hedin wrote:
> > Hi, Ryan.
> >
> > Hmm. Interesting. Always numeric, eh?
>
> Yeah, mlpack is built on the Armadillo matrix library. I'm not familiar
> with CRM114 but I would imagine it is doing something that amounts to
> one-hot encoding.
>
> > I could convert our data into numeric values, as you suggest, but I have
> > some misgivings. Maybe I should say some more about the data records
> that
> > stream in.
> >
> > 1. Some of our fields are encoded values. So for example SERVICE_TYPE =
> > PSYCHIC_READING. With other possible values being PALM_READING,
> > CASTING_STICKS, TAROT_CARDS. (We don't really offer psychic readings.)
> >
> > We should be able to assign a number to each of the possible values
> without
> > any problem.
>
> Right. The typical way to handle something like this in a machine
> learning library would be one-hot encoding, where instead of having one
> dimension for SERVICE_TYPE, you'd have a dimension
> SERVICE_TYPE_PSYCHIC_READING that takes a value 0/1,
> SERVICE_TYPE_PALM_READING that takes value 0/1, etc., etc. for each
> possibility. This makes your data matrix pretty big though.
>
> There are a few mlpack algorithms like the decision tree
> (mlpack_decision_tree from the command line) that support categorical
> variables, which can be loaded with the .arff file format.
>
> > 2. Some of our fields are numeric values. So for example
> AMOUNT_CHARGED =
> > 9.95.
> >
> > I bet MLPack could handle these directly.
>
> Yep, no need to change these.
>
> > 3. Some of our fields are free text fields. For example COMMENT =
> > "Customer seemed agitated. I couldn't get a clear reading."
> >
> > We could create a big dictionary, and map words to numbers. Leaving out
> > stemming and phrases. But that would truly be a very big dictionary.
> And
> > it's quite likely that information in the comment might be useful for
> > determining whether the transaction is fraudulent.
> >
> > My previous experience, CRM114, handles text swimmingly. But it doesn't
> > handle numeric fields at all. (Other than as a very peculiar looking
> > number.) Perhaps neither engine is really appropriate.
> >
> > Does this information about our fields jog loose any additional ideas?
>
> Typically with text data, dictionary encoding is often how it's done.
> Alternately, it could be done at the character level so the dictionary
> is small, but then you need a powerful modeling technique to learn the
> different dependencies between letters. However I am not an NLP expert,
> so I can't say what will be best for your problem, but something kind of
> like dictionary encoding could work.
>
> word2vec could also be another interesting preprocessing technique, but
> I don't think anyone's currently implemented this model in mlpack.
>
> I think, my overall suggestion would be, once you can get your data into
> a numeric format, mlpack could be used just fine for the actual machine
> learning part, but mlpack doesn't have the best facilities for text
> loading and preprocessing.
>
> Hope this helps!
>
> --
> Ryan Curtin | "And do not attempt to grow a brain!"
> ryan at ratml.org | - Sgt. Howard Payne
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20181111/657359d5/attachment.html>
More information about the mlpack
mailing list