SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler offline
www.spiria.com
Apprendre
l’apprentissage
automatisé
Présenté par
JOEL LORD
Web à Québec
4 avril, 2017
@joel__lord
#WAQ17
JOEL LORD
À propos de moi
• Adorateur de Javascript
• Bidouilleur
• Enthousiaste des
technologies
@joel__lord
#WAQ17
Agenda
• Intelligence articifielle vs Apprentissage automatisé
• Big Data et apprentissage profond
• Les algo de base
• Naïve Bayes Classifier
• Sentiment Analysis
• Genetic Algorithm
@joel__lord
#WAQ17
Agenda
• Intelligence articifielle vs Apprentissage automatisé
• Big Data et apprentissage profond
• Les algo de base
• Naïve Bayes Classifier
• Sentiment Analysis
• Genetic Algorithm
• Le tout parsemé de démos
Intelligence Articielle et
Apprentissage automatisé
UN PEU PLUS AU SUJET DE…
@joel__lord
#WAQ17
Intelligence artificielle
QU’EST CE QUI EN EST
@joel__lord
#WAQ17
L'intelligence artificielle (IA) est
l'intelligence fournie par les machines. En
informatique, le domaine de la recherche
sur l'IA se définit comme l'étude des
«agents intelligents»: tout dispositif qui
perçoit son environnement et prend des
mesures qui maximisent ses chances de
succès à un but.
@joel__lord
#WAQ17
Intelligence Artificielle
EXEMPLES CONCRETS
@joel__lord
#WAQ17
Intelligence Artificielle
EXEMPLES CONCRETES
• Filtres de pouriels
@joel__lord
#WAQ17
Intelligence Artificielle
EXEMPLES CONCRETES
• Filtres de polluriels
• Prévention de la fraude
@joel__lord
#WAQ17
Intelligence Artificielle
EXEMPLES CONCRETES
• Filtres de polluriels
• Prévention de la fraude
• Reconnaissance faciale
@joel__lord
#WAQ17
L'apprentissage automatisé est le sous-
domaine de l'informatique qui donne aux
«ordinateurs la possibilité d'apprendre
sans être explicitement programmés».
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
@joel__lord
#WAQ17
Apprentissage automatisé
EXEMPLES CONCRETS
• Thermostats intelligents
• Cortana, Siri et Ok Google
• Chat Bots
Big Data et apprentissage
profond
ENCORE UN PEU DE THÉORIE
@joel__lord
#WAQ17
Big Data
QU’EST-CE QUE C’EST?
• Croissance
exponentielle des
données digitales
• Trop complexe à traiter
de façon traditionnelle
• Principalement utilisée
pour de la prédiction
ou analyse des
comportements des
utilisateurs
@joel__lord
#WAQ17
Apprentissage profonD (Deep learning)
QU’EST-CE QUE C’EST
• Utilise des réseaux neuronaux pour traiter les données
• Idéal pour des classsificateurs complexes
• Un moyen de traiter le big data
@joel__lord
#WAQ17
Réseaux Neuronaux
EUH…. WHAT?
• Une collection de
couches d’opérations
• Déconstruction d’une
problème complexe en
tâches plus simples
Supervisé vs non-supervisé
UNE DERNIÈRE PETITE CHOSE…
@joel__lord
#WAQ17
Apprentissage supervisé
QU’EST-CE QUE C’EST
• Requiert une rétroaction
• Débute avec aucune connaissance et augmente sa compréhension
• Inutile lorsque les données sont de mauvaise qualité
• Cas pratiques
• Classification
@joel__lord
#WAQ17
Apprentissage non-supervisé
CONTRAIRE DE SUPERVISÉ?
• Besoin d’aucun feedback
• Pratique lorsqu’il n’y a pas de bonne ou mauvais réponse
• Aide à trouver des patterns ou structures de données
• Cas pratiques
• “Vous pourriez aussi être intéressé par…”
• Grouper des clients selon leur comportement
Apprentissage automatisé
DE RETOUR À LA PROGRAMMATION NORMALE
@joel__lord
#WAQ17
Classification naïve bayésienne
DÉFINITION
• Algorithme supervisé
• Un simple moyen de classifier et identifier l’information
var classifier = new Classifier();
classifier.classify("J'adore le Javascript", POSITIVE);
classifier.classify('WebStorm est génial', POSITIVE);
classifier.classify('Non, Javascript est mauvais', NEGATIVE);
classifier.classify("Je n'aime pas le brocoli", NEGATIVE);
console.log(classifier.categorize("Javascript est génial"));
// "positive"
console.log(classifier.categorize("J'aime WebStorm"));
// undefined
@joel__lord
#WAQ17
Classification naïve bayésienne
DÉFINITION
• Algorithme supervisé
• Un simple moyen de classifier et identifier l’information
• Mathématiquement exprimé par la fonction suivante
@joel__lord
#WAQ17
Classification naïve bayésienne
DÉFINITION DE LA STRUCTURE
var Classifier = function() {
this.dictionaries = {};
};
Classifier.prototype.classify = function(text, group) {
};
Classifier.prototype.categorize = function(text) {
};
@joel__lord
#WAQ17
Classification naïve bayésienne
CRÉATION DE LA CLASSIFICATION
Classifier.prototype.classify = function(text, group) {
var words = text.split(" ");
this.dictionaries[group] ? "" : this.dictionaries[group] = {};
var self = this;
words.map((w) => {
if (self.dictionaries[group][w]) {
self.dictionaries[group][w]++;
} else {
self.dictionaries[group][w] = 1;
}
});
};
@joel__lord
#WAQ17
Classification naïve bayésienne
ET LE RESTE…
Classifier.prototype.categorize = function(text) {
var self = this;
var probabilities = {};
var groups = [];
var finals = {};
//Find the groups
for (var k in this.dictionaries) {groups.push(k);}
var sums = {};
var probs = {};
//Loop through the groups to calculate the sums of found text
for (var j = 0; j < groups.length; j++) {
if (!sums[text]) sums[text] = 0;
if (!this.dictionaries[groups[j]][text]) this.dictionaries[groups[j]][text] = 0;
sums[text] += this.dictionaries[groups[j]][text];
probs[groups[j]] = (this.dictionaries[groups[j]][text]) ? this.dictionaries[groups[j]][text] : 0;
}
// Perform calculations
for (var j = 0; j < groups.length; j++) {
(!probabilities[text]) ? probabilities[text] = {} : "";
(!probs[groups[j]]) ? probabilities[text][groups[j]] = 0 : probabilities[text][groups[j]] =
probs[groups[j]]/sums[text];
}
//Average out the probabilities
for (var j = 0; j < groups.length; j++) {
if (!finals[groups[j]]) finals[groups[j]] = [];
finals[groups[j]].push(probabilities[text][groups[j]]);
}
for (var i = 0; i < groups.length; i++) {
finals[groups[i]] = average(finals[groups[i]]);
}
//Find the largest probability
var highestGroup = "";
var highestValue = 0;
for (var group in finals) {
if (finals[group] > highestValue) {
highestGroup = group;
highestValue = finals[group];
}
}
return highestGroup;
};
@joel__lord
#WAQ17
Classification naïve bayésienne
CATÉGORISATION
Classifier.prototype.categorize = function(text) {
var self = this;
var probabilities = {};
var groups = [];
var finals = {};
};
@joel__lord
#WAQ17
Classification naïve bayésienne
CATÉGORISATION
Classifier.prototype.categorize = function(text) {
…
//Find the groups
for (var k in this.dictionaries) {groups.push(k);}
var sums = {};
var probs = {};
};
@joel__lord
#WAQ17
Classification naïve bayésienne
CATÉGORISATION
Classifier.prototype.categorize = function(text) {
…
//Loop through the groups to calculate the sums of found text
for (var j = 0; j < groups.length; j++) {
if (!sums[text]) sums[text] = 0;
if (!this.dictionaries[groups[j]][text]) this.dictionaries[groups[j]][text]
= 0;
sums[text] += this.dictionaries[groups[j]][text];
probs[groups[j]] = (this.dictionaries[groups[j]][text]) ?
this.dictionaries[groups[j]][text] : 0;
}};
@joel__lord
#WAQ17
Classification naïve bayésienne
CATÉGORISATION
Classifier.prototype.categorize = function(text) {
…
// Perform calculations
for (var j = 0; j < groups.length; j++) {
(!probabilities[text]) ? probabilities[text] = {} : "";
(!probs[groups[j]]) ? probabilities[text][groups[j]] = 0 :
probabilities[text][groups[j]] = probs[groups[j]]/sums[text];
}};
@joel__lord
#WAQ17
Classification naïve bayésienne
CATÉGORISATION
Classifier.prototype.categorize = function(text) {
…
//Average out the probabilities
for (var j = 0; j < groups.length; j++) {
if (!finals[groups[j]]) finals[groups[j]] = [];
finals[groups[j]].push(probabilities[text][groups[j]]);
}
for (var i = 0; i < groups.length; i++) {
finals[groups[i]] = average(finals[groups[i]]);
}
};
@joel__lord
#WAQ17
Classification naïve bayésienne
CATÉGORISATION
Classifier.prototype.categorize = function(text) {
…
//Find the largest probability
var highestGroup = "";
var highestValue = 0;
for (var group in finals) {
if (finals[group] > highestValue) {
highestGroup = group;
highestValue = finals[group];
}
}
return highestGroup;
};
@joel__lord
#WAQ17
Classification naïve bayésienne
SOMMAIRE
Classifier.prototype.categorize = function(text) {
var self = this;
var probabilities = {};
var groups = [];
var finals = {};
//Find the groups
for (var k in this.dictionaries) {groups.push(k);}
var sums = {};
var probs = {};
//Loop through the groups to calculate the sums of found text
for (var j = 0; j < groups.length; j++) {
if (!sums[text]) sums[text] = 0;
if (!this.dictionaries[groups[j]][text]) this.dictionaries[groups[j]][text] = 0;
sums[text] += this.dictionaries[groups[j]][text];
probs[groups[j]] = (this.dictionaries[groups[j]][text]) ? this.dictionaries[groups[j]][text] : 0;
}
// Perform calculations
for (var j = 0; j < groups.length; j++) {
(!probabilities[text]) ? probabilities[text] = {} : "";
(!probs[groups[j]]) ? probabilities[text][groups[j]] = 0 : probabilities[text][groups[j]] =
probs[groups[j]]/sums[text];
}
//Average out the probabilities
for (var j = 0; j < groups.length; j++) {
if (!finals[groups[j]]) finals[groups[j]] = [];
finals[groups[j]].push(probabilities[text][groups[j]]);
}
for (var i = 0; i < groups.length; i++) {
finals[groups[i]] = average(finals[groups[i]]);
}
//Find the largest probability
var highestGroup = "";
var highestValue = 0;
for (var group in finals) {
if (finals[group] > highestValue) {
highestGroup = group;
highestValue = finals[group];
}
}
return highestGroup;
};
Montrez moi !
CLASSIFICATION NAÏVE BAYÉSIENNE
@joel__lord
#WAQ17
Analyse de sentiments
COMMENT ÇA FONCTIONNE
• Approche similaire aux classificateurs
• Utilise une liste de mots (AFINN-165) et parfois les emoticons pour
donner un score.
@joel__lord
#WAQ17
Analyse de sentiments
EXEMPLE DE CODE
var twit = require("twit");
var sentiment = require("sentiment");
@joel__lord
#WAQ17
Analyse de sentiments
EXEMPLE DE CODE
var keyword = "#waq17";
var t = new twit(require("./credentials"));
var stream1 = t.stream("statuses/filter", {track: keyword});
@joel__lord
#WAQ17
Analyse de sentiments
EXEMPLE DE CODE
stream1.on("tweet", function (tweet) {
});
@joel__lord
#WAQ17
Analyse de sentiments
EXEMPLE DE CODE
var score = sentiment(tweet.text);
console.log("--- n New Tweetn" + tweet.text + "n" + (score > 0 ?
"Positive" : "Negative"));
@joel__lord
#WAQ17
Analyse de sentiments
EXEMPLE DE CODE
var twit = require("twit");
var sentiment = require("sentiment");
var keyword = "#waq17";
var t = new twit(require("./credentials"));
var stream1 = t.stream("statuses/filter", {track: keyword});
stream1.on("tweet", function (tweet) {
var score = sentiment(tweet.text);
console.log("--- n New Tweetn" + tweet.text + "n" + (score > 0 ?
"Positive" : "Negative"));
});
Montrez moi !
ANALYSE DE SENTIMENTS
@joel__lord
#WAQ17
Algorithmes génétiques
ÇA MANGE QUOI EN HIVER
• Moyen de trouver une solution idéale
en utilisant des solutions aléatoires
• Cas pratiques
• Moteurs d’avion
• Hackrod
@joel__lord
#WAQ17
Algorithmes génétiques
COMMENT ÇA FONCTIONNE
• On crée une population d’individus aléatoires
• On garde les plus proches de la solution
• On garde des individus aléatoires
• On introduit des mutations aléatores
• On crée aléatoirement des “enfants”
• On arrive magiquement à une solution!
@joel__lord
#WAQ17
Algorithmes génétiques
COMMENT ÇA FONCTIONNE
• On crée une population d’individus aléatoires
• On garde les plus proches de la solution
• On garde des individus aléatoires
• On introduit des mutations aléatores
• On crée aléatoirement des “enfants”
• On arrive magiquement à une solution!
@joel__lord
#WAQ17
Algorithmes génétiques
L’IMPORTANCE DES MUTATIONS
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
var population = [];
const TARGET = 200;
const MIN = 0;
const MAX = TARGET - 1;
const IND_COUNT = 4;
const POP_SIZE = 100;
const CLOSE_ENOUGH = 0.001;
var RETAIN = 0.02;
var RANDOM_SELECTION = 0.05;
var MUTATION_PROBABILITY = 0.01;
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {
return Math.round(random(min, max));
}
function random(min, max) {
if (max == undefined) { max = min; min = 0; }
if (max == undefined) { max = 100; }
return (Math.random()*(max-min)) + min;
}
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {
sum = individual.reduce((a,b) => a + b, 0);
return Math.abs(TARGET - sum);
}
function sortByFitness(population) {
population.sort((a, b) => {
var fitA = fitness(a); var fitB = fitness(b);
return fitA > fitB ? 1 : -1;
});
return population;
}
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {…}
function sortByFitness(population) {…}
function randomIndividual() {
var individual = [];
for (var i = 0; i < IND_COUNT; i++) {
individual.push(random(MIN, MAX));
}
return individual;
}
function randomPopulation(size) {
var population = [];
for (var i = 0; i < size; i++) {
population.push(randomIndividual());
}
return population;
}
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {…}
function sortByFitness(population) {…}
function randomIndividual() {…}
function randomPopulation(size) {…}
function mutate(population) {
for (var i=0; i < population.length; i++) {
if (MUTATION_PROBABILITY > Math.random()) {
var index = randomInt(population[i].length);
population[i][index] = random(MIN, MAX);
}
}
return population;
}
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {…}
function sortByFitness(population) {…}
function randomIndividual() {…}
function randomPopulation(size) {…}
function mutate(population) {…}
function reproduce(father, mother) {
var half = father.length / 2;
var child = [];
child = child.concat(father.slice(0, half), mother.slice(half,
mother.length));
return child;
}
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {…}
function sortByFitness(population) {…}
function randomIndividual() {…}
function randomPopulation(size) {…}
function mutate(population) {…}
function reproduce(father, mother) {…}
function evolve(population) {
var parents = [];
//Keep the best solutions
parents=sortByFitness(population).slice(0,Math.round(POP_SIZE*RETAIN));
//Randomly add new elements
for (var i = parents.length; i < POP_SIZE - parents.length; i++) {
if (RANDOM_SELECTION > Math.random()) {
parents.push(randomIndividual());
}
}
}
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {…}
function sortByFitness(population) {…}
function randomIndividual() {…}
function randomPopulation(size) {…}
function mutate(population) {…}
function reproduce(father, mother) {…}
function evolve(population) {
//Random Stuff
parents = mutate(parents);
var rndMax = parents.length - 1;
while (parents.length < POP_SIZE) {
var father = randomInt(rndMax);
var mother = randomInt(rndMax);
if (father != mother) {
father = parents[father]; mother = parents[mother];
parents.push(reproduce(father, mother));
}
}
return parents;
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
//Declare Consts
function randomInt(min, max) {…}
function random(min, max) {…}
function fitness(individual) {…}
function sortByFitness(population) {…}
function randomIndividual() {…}
function randomPopulation(size) {…}
function mutate(population) {…}
function reproduce(father, mother) {…}
function evolve(population) {…}
function findSolution() {
var population = randomPopulation(POP_SIZE);
var generation = 0;
while (fitness(population[0]) > CLOSE_ENOUGH) {
generation++;
population = evolve(population);
}
return {solution: population[0], generations: generation};
}
var sol = findSolution();
@joel__lord
#WAQ17
Algorithmes génétiques
EXEMPLE DE CODE
var population = [];
const TARGET = 200;
const MIN = 0;
const MAX = TARGET - 1;
const IND_COUNT = 4;
const POP_SIZE = 100;
const CLOSE_ENOUGH = 0.001;
var RETAIN = 0.02;
var RANDOM_SELECTION = 0.05;
var MUTATION_PROBABILITY = 0.01;
function randomInt(min, max) {
return Math.round(random(min, max));
}
function random(min, max) {
if (max == undefined) { max = min; min = 0; }
if (max == undefined) { max = 100; }
return (Math.random()*(max-min)) + min;
}
function fitness(individual) {
sum = individual.reduce((a,b) => a + b, 0);
return Math.abs(TARGET - sum);
}
function sortByFitness(population) {
population.sort((a, b) => {
var fitA = fitness(a); var fitB = fitness(b);
return fitA > fitB ? 1 : -1;
});
return population;
}
function randomIndividual() {
var individual = [];
for (var i = 0; i < IND_COUNT; i++) {
individual.push(random(MIN, MAX));
}
return individual;
}
function randomPopulation(size) {
var population = [];
for (var i = 0; i < size; i++) {
population.push(randomIndividual());
}
return population;
}
function mutate(population) {
for (var i=0; i < population.length; i++) {
if (MUTATION_PROBABILITY > Math.random()) {
var index = randomInt(population[i].length);
population[i][index] = random(MIN, MAX);
}
}
return population;
}
function reproduce(father, mother) {
var half = father.length / 2;
var child = [];
child = child.concat(father.slice(0, half), mother.slice(half, mother.length));
return child;
}
function evolve(population) {
var parents = [];
//Keep the best solutions
parents = sortByFitness(population).slice(0, Math.round(POP_SIZE*RETAIN));
//Randomly add new elements
for (var i = parents.length; i < POP_SIZE - parents.length; i++) {
if (RANDOM_SELECTION > Math.random()) {
parents.push(randomIndividual());
}
}
//Mutate elements
parents = mutate(parents);
var rndMax = parents.length - 1;
while (parents.length < POP_SIZE) {
var father = randomInt(rndMax);
var mother = randomInt(rndMax);
if (father != mother) {
father = parents[father];
mother = parents[mother];
parents.push(reproduce(father, mother));
}
}
return parents;
}
function findSolution() {
var population = randomPopulation(POP_SIZE);
var generation = 0;
while (fitness(population[0]) > CLOSE_ENOUGH) {
generation++;
population = evolve(population);
}
return {solution: population[0], generations: generation};
}
var sol = findSolution();
console.log("Found solution in " + sol.generations + " generations.", sol.solution);
Faut le voir pour le croire
ALGORITHMES GÉNÉTIQUES
DOCUMENT CONFIDENTIEL, TOUT DROIT RÉSERVÉ
PRESENTED BY
That’s all folks !
Questions?
JOEL LORD
April 4th, 2017
TWITTER: @JOEL__LORD
GITHUB: HTTP://GITHUB.COM/JOELLORD
@joel__lord
#WAQ17
Question
IMPACT OF PARAMETERS ON GENETIC ALGORITHMS

Mais conteúdo relacionado

Semelhante a ML Web Quebec Joel Lord Classification

State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...
State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...
State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...Big Data Spain
 
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...Elżbieta Bednarek
 
Big Data Analytics: Finding diamonds in the rough with Azure
Big Data Analytics: Finding diamonds in the rough with AzureBig Data Analytics: Finding diamonds in the rough with Azure
Big Data Analytics: Finding diamonds in the rough with AzureChristos Charmatzis
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented ProgrammingManish Pandit
 
AUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with Dask
AUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with DaskAUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with Dask
AUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with DaskVíctor Zabalza
 
Elasticsearch - Zero to Hero
Elasticsearch - Zero to HeroElasticsearch - Zero to Hero
Elasticsearch - Zero to HeroDaniel Ziv
 
Apache lucene - full text search
Apache lucene - full text searchApache lucene - full text search
Apache lucene - full text searchMarcelo Cure
 
Querying your database in natural language by Daniel Moisset PyData SV 2014
Querying your database in natural language by Daniel Moisset PyData SV 2014Querying your database in natural language by Daniel Moisset PyData SV 2014
Querying your database in natural language by Daniel Moisset PyData SV 2014PyData
 
The Road to Data Science - Joel Grus, June 2015
The Road to Data Science - Joel Grus, June 2015The Road to Data Science - Joel Grus, June 2015
The Road to Data Science - Joel Grus, June 2015Seattle DAML meetup
 
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...Uri Cohen
 
Leveraging NLP and Deep Learning for Document Recommendations in the Cloud
Leveraging NLP and Deep Learning for Document Recommendations in the CloudLeveraging NLP and Deep Learning for Document Recommendations in the Cloud
Leveraging NLP and Deep Learning for Document Recommendations in the CloudDatabricks
 
Get connected with python
Get connected with pythonGet connected with python
Get connected with pythonJan Kroon
 
07-Classification.pptx
07-Classification.pptx07-Classification.pptx
07-Classification.pptxShree Shree
 
Penerapan text mining menggunakan python
Penerapan text mining menggunakan pythonPenerapan text mining menggunakan python
Penerapan text mining menggunakan pythonAndreas Chandra
 
Cool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearchCool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearchclintongormley
 
From keyword-based search to language-agnostic semantic search
From keyword-based search to language-agnostic semantic searchFrom keyword-based search to language-agnostic semantic search
From keyword-based search to language-agnostic semantic searchCareerBuilder.com
 
Harnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, Germany
Harnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, GermanyHarnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, Germany
Harnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, GermanyAndré Ricardo Barreto de Oliveira
 
Compass Framework
Compass FrameworkCompass Framework
Compass FrameworkLukas Vlcek
 

Semelhante a ML Web Quebec Joel Lord Classification (20)

State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...
State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...
State of Play. Data Science on Hadoop in 2015 by SEAN OWEN at Big Data Spain ...
 
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
FIFA fails, Guy Kawasaki and real estate in SF - find out about all three by ...
 
Big Data Analytics: Finding diamonds in the rough with Azure
Big Data Analytics: Finding diamonds in the rough with AzureBig Data Analytics: Finding diamonds in the rough with Azure
Big Data Analytics: Finding diamonds in the rough with Azure
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
AUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with Dask
AUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with DaskAUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with Dask
AUTOMATED DATA EXPLORATION - Building efficient analysis pipelines with Dask
 
Elasticsearch - Zero to Hero
Elasticsearch - Zero to HeroElasticsearch - Zero to Hero
Elasticsearch - Zero to Hero
 
Apache lucene - full text search
Apache lucene - full text searchApache lucene - full text search
Apache lucene - full text search
 
Querying your database in natural language by Daniel Moisset PyData SV 2014
Querying your database in natural language by Daniel Moisset PyData SV 2014Querying your database in natural language by Daniel Moisset PyData SV 2014
Querying your database in natural language by Daniel Moisset PyData SV 2014
 
Quepy
QuepyQuepy
Quepy
 
The Road to Data Science - Joel Grus, June 2015
The Road to Data Science - Joel Grus, June 2015The Road to Data Science - Joel Grus, June 2015
The Road to Data Science - Joel Grus, June 2015
 
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
To scale or not to scale: Key/Value, Document, SQL, JPA – What’s right for my...
 
Leveraging NLP and Deep Learning for Document Recommendations in the Cloud
Leveraging NLP and Deep Learning for Document Recommendations in the CloudLeveraging NLP and Deep Learning for Document Recommendations in the Cloud
Leveraging NLP and Deep Learning for Document Recommendations in the Cloud
 
Get connected with python
Get connected with pythonGet connected with python
Get connected with python
 
SQL vs NoSQL
SQL vs NoSQLSQL vs NoSQL
SQL vs NoSQL
 
07-Classification.pptx
07-Classification.pptx07-Classification.pptx
07-Classification.pptx
 
Penerapan text mining menggunakan python
Penerapan text mining menggunakan pythonPenerapan text mining menggunakan python
Penerapan text mining menggunakan python
 
Cool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearchCool bonsai cool - an introduction to ElasticSearch
Cool bonsai cool - an introduction to ElasticSearch
 
From keyword-based search to language-agnostic semantic search
From keyword-based search to language-agnostic semantic searchFrom keyword-based search to language-agnostic semantic search
From keyword-based search to language-agnostic semantic search
 
Harnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, Germany
Harnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, GermanyHarnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, Germany
Harnessing The Power of Search - Liferay DEVCON 2015, Darmstadt, Germany
 
Compass Framework
Compass FrameworkCompass Framework
Compass Framework
 

Mais de Joel Lord

From Ceasar Cipher To Quantum Cryptography
From Ceasar Cipher To Quantum CryptographyFrom Ceasar Cipher To Quantum Cryptography
From Ceasar Cipher To Quantum CryptographyJoel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Joel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
Mot de passe oublié? Absolument!
Mot de passe oublié? Absolument!Mot de passe oublié? Absolument!
Mot de passe oublié? Absolument!Joel Lord
 
Asynchronicity: concurrency. A tale of
Asynchronicity: concurrency. A tale ofAsynchronicity: concurrency. A tale of
Asynchronicity: concurrency. A tale ofJoel Lord
 
Learning Machine Learning
Learning Machine LearningLearning Machine Learning
Learning Machine LearningJoel Lord
 
Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Joel Lord
 
WTH is a JWT
WTH is a JWTWTH is a JWT
WTH is a JWTJoel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Joel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
WTH is a JWT
WTH is a JWTWTH is a JWT
WTH is a JWTJoel Lord
 
Asynchonicity: concurrency. A tale of
Asynchonicity: concurrency. A tale ofAsynchonicity: concurrency. A tale of
Asynchonicity: concurrency. A tale ofJoel Lord
 
I Don't Care About Security
I Don't Care About Security I Don't Care About Security
I Don't Care About Security Joel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
 
Secure your SPA with Auth0
Secure your SPA with Auth0Secure your SPA with Auth0
Secure your SPA with Auth0Joel Lord
 

Mais de Joel Lord (20)

From Ceasar Cipher To Quantum Cryptography
From Ceasar Cipher To Quantum CryptographyFrom Ceasar Cipher To Quantum Cryptography
From Ceasar Cipher To Quantum Cryptography
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
Mot de passe oublié? Absolument!
Mot de passe oublié? Absolument!Mot de passe oublié? Absolument!
Mot de passe oublié? Absolument!
 
Asynchronicity: concurrency. A tale of
Asynchronicity: concurrency. A tale ofAsynchronicity: concurrency. A tale of
Asynchronicity: concurrency. A tale of
 
Learning Machine Learning
Learning Machine LearningLearning Machine Learning
Learning Machine Learning
 
Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!
 
WTH is a JWT
WTH is a JWTWTH is a JWT
WTH is a JWT
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
WTH is a JWT
WTH is a JWTWTH is a JWT
WTH is a JWT
 
Asynchonicity: concurrency. A tale of
Asynchonicity: concurrency. A tale ofAsynchonicity: concurrency. A tale of
Asynchonicity: concurrency. A tale of
 
I Don't Care About Security
I Don't Care About Security I Don't Care About Security
I Don't Care About Security
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
 
Secure your SPA with Auth0
Secure your SPA with Auth0Secure your SPA with Auth0
Secure your SPA with Auth0
 

Último

Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsstephieert
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...APNIC
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGAPNIC
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersDamian Radcliffe
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts servicesonalikaur4
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Roomdivyansh0kumar0
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...Diya Sharma
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceDelhi Call girls
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)Damian Radcliffe
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024APNIC
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Sheetaleventcompany
 

Último (20)

Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No AdvanceRohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
Rohini Sector 22 Call Girls Delhi 9999965857 @Sabina Saikh No Advance
 
Radiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girlsRadiant Call girls in Dubai O56338O268 Dubai Call girls
Radiant Call girls in Dubai O56338O268 Dubai Call girls
 
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
'Future Evolution of the Internet' delivered by Geoff Huston at Everything Op...
 
Networking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOGNetworking in the Penumbra presented by Geoff Huston at NZNOG
Networking in the Penumbra presented by Geoff Huston at NZNOG
 
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providersMoving Beyond Twitter/X and Facebook - Social Media for local news providers
Moving Beyond Twitter/X and Facebook - Social Media for local news providers
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Saket Delhi 💯Call Us 🔝8264348440🔝
 
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls KolkataLow Rate Call Girls Kolkata Avani 🤌  8250192130 🚀 Vip Call Girls Kolkata
Low Rate Call Girls Kolkata Avani 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts serviceChennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
Chennai Call Girls Porur Phone 🍆 8250192130 👅 celebrity escorts service
 
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Ashram Chowk Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With RoomVIP Kolkata Call Girl Dum Dum 👉 8250192130  Available With Room
VIP Kolkata Call Girl Dum Dum 👉 8250192130 Available With Room
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort ServiceEnjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
Enjoy Night⚡Call Girls Dlf City Phase 3 Gurgaon >༒8448380779 Escort Service
 
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls KolkataRussian Call Girls in Kolkata Ishita 🤌  8250192130 🚀 Vip Call Girls Kolkata
Russian Call Girls in Kolkata Ishita 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)How is AI changing journalism? (v. April 2024)
How is AI changing journalism? (v. April 2024)
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Model Towh Delhi 💯Call Us 🔝8264348440🔝
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024On Starlink, presented by Geoff Huston at NZNOG 2024
On Starlink, presented by Geoff Huston at NZNOG 2024
 
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
Call Girls Service Chandigarh Lucky ❤️ 7710465962 Independent Call Girls In C...
 

ML Web Quebec Joel Lord Classification

  • 2. @joel__lord #WAQ17 JOEL LORD À propos de moi • Adorateur de Javascript • Bidouilleur • Enthousiaste des technologies
  • 3. @joel__lord #WAQ17 Agenda • Intelligence articifielle vs Apprentissage automatisé • Big Data et apprentissage profond • Les algo de base • Naïve Bayes Classifier • Sentiment Analysis • Genetic Algorithm
  • 4. @joel__lord #WAQ17 Agenda • Intelligence articifielle vs Apprentissage automatisé • Big Data et apprentissage profond • Les algo de base • Naïve Bayes Classifier • Sentiment Analysis • Genetic Algorithm • Le tout parsemé de démos
  • 5. Intelligence Articielle et Apprentissage automatisé UN PEU PLUS AU SUJET DE…
  • 7. @joel__lord #WAQ17 L'intelligence artificielle (IA) est l'intelligence fournie par les machines. En informatique, le domaine de la recherche sur l'IA se définit comme l'étude des «agents intelligents»: tout dispositif qui perçoit son environnement et prend des mesures qui maximisent ses chances de succès à un but.
  • 10. @joel__lord #WAQ17 Intelligence Artificielle EXEMPLES CONCRETES • Filtres de polluriels • Prévention de la fraude
  • 11. @joel__lord #WAQ17 Intelligence Artificielle EXEMPLES CONCRETES • Filtres de polluriels • Prévention de la fraude • Reconnaissance faciale
  • 12. @joel__lord #WAQ17 L'apprentissage automatisé est le sous- domaine de l'informatique qui donne aux «ordinateurs la possibilité d'apprendre sans être explicitement programmés».
  • 14. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google
  • 15. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 16. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 17. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 18. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 19. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 20. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 21. @joel__lord #WAQ17 Apprentissage automatisé EXEMPLES CONCRETS • Thermostats intelligents • Cortana, Siri et Ok Google • Chat Bots
  • 22. Big Data et apprentissage profond ENCORE UN PEU DE THÉORIE
  • 23. @joel__lord #WAQ17 Big Data QU’EST-CE QUE C’EST? • Croissance exponentielle des données digitales • Trop complexe à traiter de façon traditionnelle • Principalement utilisée pour de la prédiction ou analyse des comportements des utilisateurs
  • 24. @joel__lord #WAQ17 Apprentissage profonD (Deep learning) QU’EST-CE QUE C’EST • Utilise des réseaux neuronaux pour traiter les données • Idéal pour des classsificateurs complexes • Un moyen de traiter le big data
  • 25. @joel__lord #WAQ17 Réseaux Neuronaux EUH…. WHAT? • Une collection de couches d’opérations • Déconstruction d’une problème complexe en tâches plus simples
  • 26. Supervisé vs non-supervisé UNE DERNIÈRE PETITE CHOSE…
  • 27. @joel__lord #WAQ17 Apprentissage supervisé QU’EST-CE QUE C’EST • Requiert une rétroaction • Débute avec aucune connaissance et augmente sa compréhension • Inutile lorsque les données sont de mauvaise qualité • Cas pratiques • Classification
  • 28. @joel__lord #WAQ17 Apprentissage non-supervisé CONTRAIRE DE SUPERVISÉ? • Besoin d’aucun feedback • Pratique lorsqu’il n’y a pas de bonne ou mauvais réponse • Aide à trouver des patterns ou structures de données • Cas pratiques • “Vous pourriez aussi être intéressé par…” • Grouper des clients selon leur comportement
  • 29. Apprentissage automatisé DE RETOUR À LA PROGRAMMATION NORMALE
  • 30. @joel__lord #WAQ17 Classification naïve bayésienne DÉFINITION • Algorithme supervisé • Un simple moyen de classifier et identifier l’information var classifier = new Classifier(); classifier.classify("J'adore le Javascript", POSITIVE); classifier.classify('WebStorm est génial', POSITIVE); classifier.classify('Non, Javascript est mauvais', NEGATIVE); classifier.classify("Je n'aime pas le brocoli", NEGATIVE); console.log(classifier.categorize("Javascript est génial")); // "positive" console.log(classifier.categorize("J'aime WebStorm")); // undefined
  • 31. @joel__lord #WAQ17 Classification naïve bayésienne DÉFINITION • Algorithme supervisé • Un simple moyen de classifier et identifier l’information • Mathématiquement exprimé par la fonction suivante
  • 32. @joel__lord #WAQ17 Classification naïve bayésienne DÉFINITION DE LA STRUCTURE var Classifier = function() { this.dictionaries = {}; }; Classifier.prototype.classify = function(text, group) { }; Classifier.prototype.categorize = function(text) { };
  • 33. @joel__lord #WAQ17 Classification naïve bayésienne CRÉATION DE LA CLASSIFICATION Classifier.prototype.classify = function(text, group) { var words = text.split(" "); this.dictionaries[group] ? "" : this.dictionaries[group] = {}; var self = this; words.map((w) => { if (self.dictionaries[group][w]) { self.dictionaries[group][w]++; } else { self.dictionaries[group][w] = 1; } }); };
  • 34. @joel__lord #WAQ17 Classification naïve bayésienne ET LE RESTE… Classifier.prototype.categorize = function(text) { var self = this; var probabilities = {}; var groups = []; var finals = {}; //Find the groups for (var k in this.dictionaries) {groups.push(k);} var sums = {}; var probs = {}; //Loop through the groups to calculate the sums of found text for (var j = 0; j < groups.length; j++) { if (!sums[text]) sums[text] = 0; if (!this.dictionaries[groups[j]][text]) this.dictionaries[groups[j]][text] = 0; sums[text] += this.dictionaries[groups[j]][text]; probs[groups[j]] = (this.dictionaries[groups[j]][text]) ? this.dictionaries[groups[j]][text] : 0; } // Perform calculations for (var j = 0; j < groups.length; j++) { (!probabilities[text]) ? probabilities[text] = {} : ""; (!probs[groups[j]]) ? probabilities[text][groups[j]] = 0 : probabilities[text][groups[j]] = probs[groups[j]]/sums[text]; } //Average out the probabilities for (var j = 0; j < groups.length; j++) { if (!finals[groups[j]]) finals[groups[j]] = []; finals[groups[j]].push(probabilities[text][groups[j]]); } for (var i = 0; i < groups.length; i++) { finals[groups[i]] = average(finals[groups[i]]); } //Find the largest probability var highestGroup = ""; var highestValue = 0; for (var group in finals) { if (finals[group] > highestValue) { highestGroup = group; highestValue = finals[group]; } } return highestGroup; };
  • 35. @joel__lord #WAQ17 Classification naïve bayésienne CATÉGORISATION Classifier.prototype.categorize = function(text) { var self = this; var probabilities = {}; var groups = []; var finals = {}; };
  • 36. @joel__lord #WAQ17 Classification naïve bayésienne CATÉGORISATION Classifier.prototype.categorize = function(text) { … //Find the groups for (var k in this.dictionaries) {groups.push(k);} var sums = {}; var probs = {}; };
  • 37. @joel__lord #WAQ17 Classification naïve bayésienne CATÉGORISATION Classifier.prototype.categorize = function(text) { … //Loop through the groups to calculate the sums of found text for (var j = 0; j < groups.length; j++) { if (!sums[text]) sums[text] = 0; if (!this.dictionaries[groups[j]][text]) this.dictionaries[groups[j]][text] = 0; sums[text] += this.dictionaries[groups[j]][text]; probs[groups[j]] = (this.dictionaries[groups[j]][text]) ? this.dictionaries[groups[j]][text] : 0; }};
  • 38. @joel__lord #WAQ17 Classification naïve bayésienne CATÉGORISATION Classifier.prototype.categorize = function(text) { … // Perform calculations for (var j = 0; j < groups.length; j++) { (!probabilities[text]) ? probabilities[text] = {} : ""; (!probs[groups[j]]) ? probabilities[text][groups[j]] = 0 : probabilities[text][groups[j]] = probs[groups[j]]/sums[text]; }};
  • 39. @joel__lord #WAQ17 Classification naïve bayésienne CATÉGORISATION Classifier.prototype.categorize = function(text) { … //Average out the probabilities for (var j = 0; j < groups.length; j++) { if (!finals[groups[j]]) finals[groups[j]] = []; finals[groups[j]].push(probabilities[text][groups[j]]); } for (var i = 0; i < groups.length; i++) { finals[groups[i]] = average(finals[groups[i]]); } };
  • 40. @joel__lord #WAQ17 Classification naïve bayésienne CATÉGORISATION Classifier.prototype.categorize = function(text) { … //Find the largest probability var highestGroup = ""; var highestValue = 0; for (var group in finals) { if (finals[group] > highestValue) { highestGroup = group; highestValue = finals[group]; } } return highestGroup; };
  • 41. @joel__lord #WAQ17 Classification naïve bayésienne SOMMAIRE Classifier.prototype.categorize = function(text) { var self = this; var probabilities = {}; var groups = []; var finals = {}; //Find the groups for (var k in this.dictionaries) {groups.push(k);} var sums = {}; var probs = {}; //Loop through the groups to calculate the sums of found text for (var j = 0; j < groups.length; j++) { if (!sums[text]) sums[text] = 0; if (!this.dictionaries[groups[j]][text]) this.dictionaries[groups[j]][text] = 0; sums[text] += this.dictionaries[groups[j]][text]; probs[groups[j]] = (this.dictionaries[groups[j]][text]) ? this.dictionaries[groups[j]][text] : 0; } // Perform calculations for (var j = 0; j < groups.length; j++) { (!probabilities[text]) ? probabilities[text] = {} : ""; (!probs[groups[j]]) ? probabilities[text][groups[j]] = 0 : probabilities[text][groups[j]] = probs[groups[j]]/sums[text]; } //Average out the probabilities for (var j = 0; j < groups.length; j++) { if (!finals[groups[j]]) finals[groups[j]] = []; finals[groups[j]].push(probabilities[text][groups[j]]); } for (var i = 0; i < groups.length; i++) { finals[groups[i]] = average(finals[groups[i]]); } //Find the largest probability var highestGroup = ""; var highestValue = 0; for (var group in finals) { if (finals[group] > highestValue) { highestGroup = group; highestValue = finals[group]; } } return highestGroup; };
  • 42. Montrez moi ! CLASSIFICATION NAÏVE BAYÉSIENNE
  • 43. @joel__lord #WAQ17 Analyse de sentiments COMMENT ÇA FONCTIONNE • Approche similaire aux classificateurs • Utilise une liste de mots (AFINN-165) et parfois les emoticons pour donner un score.
  • 44. @joel__lord #WAQ17 Analyse de sentiments EXEMPLE DE CODE var twit = require("twit"); var sentiment = require("sentiment");
  • 45. @joel__lord #WAQ17 Analyse de sentiments EXEMPLE DE CODE var keyword = "#waq17"; var t = new twit(require("./credentials")); var stream1 = t.stream("statuses/filter", {track: keyword});
  • 46. @joel__lord #WAQ17 Analyse de sentiments EXEMPLE DE CODE stream1.on("tweet", function (tweet) { });
  • 47. @joel__lord #WAQ17 Analyse de sentiments EXEMPLE DE CODE var score = sentiment(tweet.text); console.log("--- n New Tweetn" + tweet.text + "n" + (score > 0 ? "Positive" : "Negative"));
  • 48. @joel__lord #WAQ17 Analyse de sentiments EXEMPLE DE CODE var twit = require("twit"); var sentiment = require("sentiment"); var keyword = "#waq17"; var t = new twit(require("./credentials")); var stream1 = t.stream("statuses/filter", {track: keyword}); stream1.on("tweet", function (tweet) { var score = sentiment(tweet.text); console.log("--- n New Tweetn" + tweet.text + "n" + (score > 0 ? "Positive" : "Negative")); });
  • 49. Montrez moi ! ANALYSE DE SENTIMENTS
  • 50. @joel__lord #WAQ17 Algorithmes génétiques ÇA MANGE QUOI EN HIVER • Moyen de trouver une solution idéale en utilisant des solutions aléatoires • Cas pratiques • Moteurs d’avion • Hackrod
  • 51. @joel__lord #WAQ17 Algorithmes génétiques COMMENT ÇA FONCTIONNE • On crée une population d’individus aléatoires • On garde les plus proches de la solution • On garde des individus aléatoires • On introduit des mutations aléatores • On crée aléatoirement des “enfants” • On arrive magiquement à une solution!
  • 52. @joel__lord #WAQ17 Algorithmes génétiques COMMENT ÇA FONCTIONNE • On crée une population d’individus aléatoires • On garde les plus proches de la solution • On garde des individus aléatoires • On introduit des mutations aléatores • On crée aléatoirement des “enfants” • On arrive magiquement à une solution!
  • 54. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE var population = []; const TARGET = 200; const MIN = 0; const MAX = TARGET - 1; const IND_COUNT = 4; const POP_SIZE = 100; const CLOSE_ENOUGH = 0.001; var RETAIN = 0.02; var RANDOM_SELECTION = 0.05; var MUTATION_PROBABILITY = 0.01;
  • 55. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) { return Math.round(random(min, max)); } function random(min, max) { if (max == undefined) { max = min; min = 0; } if (max == undefined) { max = 100; } return (Math.random()*(max-min)) + min; }
  • 56. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) { sum = individual.reduce((a,b) => a + b, 0); return Math.abs(TARGET - sum); } function sortByFitness(population) { population.sort((a, b) => { var fitA = fitness(a); var fitB = fitness(b); return fitA > fitB ? 1 : -1; }); return population; }
  • 57. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) {…} function sortByFitness(population) {…} function randomIndividual() { var individual = []; for (var i = 0; i < IND_COUNT; i++) { individual.push(random(MIN, MAX)); } return individual; } function randomPopulation(size) { var population = []; for (var i = 0; i < size; i++) { population.push(randomIndividual()); } return population; }
  • 58. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) {…} function sortByFitness(population) {…} function randomIndividual() {…} function randomPopulation(size) {…} function mutate(population) { for (var i=0; i < population.length; i++) { if (MUTATION_PROBABILITY > Math.random()) { var index = randomInt(population[i].length); population[i][index] = random(MIN, MAX); } } return population; }
  • 59. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) {…} function sortByFitness(population) {…} function randomIndividual() {…} function randomPopulation(size) {…} function mutate(population) {…} function reproduce(father, mother) { var half = father.length / 2; var child = []; child = child.concat(father.slice(0, half), mother.slice(half, mother.length)); return child; }
  • 60. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) {…} function sortByFitness(population) {…} function randomIndividual() {…} function randomPopulation(size) {…} function mutate(population) {…} function reproduce(father, mother) {…} function evolve(population) { var parents = []; //Keep the best solutions parents=sortByFitness(population).slice(0,Math.round(POP_SIZE*RETAIN)); //Randomly add new elements for (var i = parents.length; i < POP_SIZE - parents.length; i++) { if (RANDOM_SELECTION > Math.random()) { parents.push(randomIndividual()); } } }
  • 61. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) {…} function sortByFitness(population) {…} function randomIndividual() {…} function randomPopulation(size) {…} function mutate(population) {…} function reproduce(father, mother) {…} function evolve(population) { //Random Stuff parents = mutate(parents); var rndMax = parents.length - 1; while (parents.length < POP_SIZE) { var father = randomInt(rndMax); var mother = randomInt(rndMax); if (father != mother) { father = parents[father]; mother = parents[mother]; parents.push(reproduce(father, mother)); } } return parents;
  • 62. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE //Declare Consts function randomInt(min, max) {…} function random(min, max) {…} function fitness(individual) {…} function sortByFitness(population) {…} function randomIndividual() {…} function randomPopulation(size) {…} function mutate(population) {…} function reproduce(father, mother) {…} function evolve(population) {…} function findSolution() { var population = randomPopulation(POP_SIZE); var generation = 0; while (fitness(population[0]) > CLOSE_ENOUGH) { generation++; population = evolve(population); } return {solution: population[0], generations: generation}; } var sol = findSolution();
  • 63. @joel__lord #WAQ17 Algorithmes génétiques EXEMPLE DE CODE var population = []; const TARGET = 200; const MIN = 0; const MAX = TARGET - 1; const IND_COUNT = 4; const POP_SIZE = 100; const CLOSE_ENOUGH = 0.001; var RETAIN = 0.02; var RANDOM_SELECTION = 0.05; var MUTATION_PROBABILITY = 0.01; function randomInt(min, max) { return Math.round(random(min, max)); } function random(min, max) { if (max == undefined) { max = min; min = 0; } if (max == undefined) { max = 100; } return (Math.random()*(max-min)) + min; } function fitness(individual) { sum = individual.reduce((a,b) => a + b, 0); return Math.abs(TARGET - sum); } function sortByFitness(population) { population.sort((a, b) => { var fitA = fitness(a); var fitB = fitness(b); return fitA > fitB ? 1 : -1; }); return population; } function randomIndividual() { var individual = []; for (var i = 0; i < IND_COUNT; i++) { individual.push(random(MIN, MAX)); } return individual; } function randomPopulation(size) { var population = []; for (var i = 0; i < size; i++) { population.push(randomIndividual()); } return population; } function mutate(population) { for (var i=0; i < population.length; i++) { if (MUTATION_PROBABILITY > Math.random()) { var index = randomInt(population[i].length); population[i][index] = random(MIN, MAX); } } return population; } function reproduce(father, mother) { var half = father.length / 2; var child = []; child = child.concat(father.slice(0, half), mother.slice(half, mother.length)); return child; } function evolve(population) { var parents = []; //Keep the best solutions parents = sortByFitness(population).slice(0, Math.round(POP_SIZE*RETAIN)); //Randomly add new elements for (var i = parents.length; i < POP_SIZE - parents.length; i++) { if (RANDOM_SELECTION > Math.random()) { parents.push(randomIndividual()); } } //Mutate elements parents = mutate(parents); var rndMax = parents.length - 1; while (parents.length < POP_SIZE) { var father = randomInt(rndMax); var mother = randomInt(rndMax); if (father != mother) { father = parents[father]; mother = parents[mother]; parents.push(reproduce(father, mother)); } } return parents; } function findSolution() { var population = randomPopulation(POP_SIZE); var generation = 0; while (fitness(population[0]) > CLOSE_ENOUGH) { generation++; population = evolve(population); } return {solution: population[0], generations: generation}; } var sol = findSolution(); console.log("Found solution in " + sol.generations + " generations.", sol.solution);
  • 64. Faut le voir pour le croire ALGORITHMES GÉNÉTIQUES
  • 65. DOCUMENT CONFIDENTIEL, TOUT DROIT RÉSERVÉ PRESENTED BY That’s all folks ! Questions? JOEL LORD April 4th, 2017 TWITTER: @JOEL__LORD GITHUB: HTTP://GITHUB.COM/JOELLORD