class: center, middle # Developing your AI BS detector ## Rational AI: Demystifying Machine Intelligence In The Enterprise ### MaRS DD 20180405 Adam Drake @aadrake http://aadrake.com --- class: center, middle # @aadrake #hacker # @aadrake #thoughtleader --- class: middle # Overview 1. Background 1. AI for fraud detection 1. Wheat and chaff --- class: middle # Background * 20+ years in tech * Advisor to growth-stage startups * Management consulting and high-performance tech/ML --- class: middle # AI for fraud detection * Problem domain * Founding team * AI solution --- class: middle # Our AI * 100% proprietary AI framework (fused knowledge base/inference engine architecture) * Accurate - Proven savings with real-world customers * Real-world - Developed via on-the-ground work and tunable/parameterized for different industries and companies * Scalable: * Written in Go (very fast!) * Standard HTTP/JSON API * Devops from day 1 (microservices architecture, single Docker image to large Kuberneties cluster) * Insanely high performance (27,000 transactions per second on a small AWS instance = 2.3 BILLION transactions per day) * ALL VisaNet traffic (~57k RPS) for ~$20/mo --- class: middle ``` func isFraud(ccIsForeign bool, amount float64, transactionsToday int) bool { if ccIsForeign && amount > 1000 && transactionsToday > 5 { return true } return false } ``` --- class: middle, center # AI is a **PURSUIT**, not a **THING**. --- class: middle, center # AI is forever a set of tools that **don't exist YET**, for solving problems that **aren't solved YET**. --- class: middle, center # AI is done, to the extent it is *done* at all, by **research teams** not **product teams**. --- class: middle * Executive Information Systems * Business Intelligence * Data Mining * Data Science/Big Data/Machine Learning * Deep Learning * AI * ...? --- class: middle # An anecdote on fraud, AI, and rules-based systems --- class: middle # Some BS Detector questions --- class: middle # What specific problem are you solving? --- class: middle # What is the most naive solution? # Did you try that? --- class: middle # What about the next-most-naive? --- class: middle # Why is what you're doing considered AI? --- class: middle # Are you using a framework? #### If so, why is your solution defensible? #### If not, explain why you aren't wasting time. --- class: middle # When you hear AI, **be suspicious**. --- class: middle, center # @aadrake # http://aadrake.com # Questions? --- ``` package main import ( "fmt" "net/http" "strconv" ) func isFraud(ccIsForeign bool, amount float64, transactionsToday int) bool { if ccIsForeign && amount > 1000 && transactionsToday > 5 { return true } return false } func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { cc, err := strconv.ParseBool(r.URL.Query().Get("foreigncc")) amt, err := strconv.ParseFloat(r.URL.Query().Get("amt"), 64) numTrans, err := strconv.Atoi(r.URL.Query().Get("numtrans")) if err != nil { w.WriteHeader(http.StatusBadRequest) return } fmt.Fprintf(w, "{\"fraud\": \"%v\"}", isFraud(cc, amt, numTrans)) }) http.ListenAndServe(":8080", nil) } ```