Apprentissage automatique sur R: techniques expertes pour l'analyse prédictive

imageBonjour, habrozhiteli! Le langage R propose un ensemble puissant de méthodes d'apprentissage automatique qui vous permettent d'effectuer rapidement une analyse non triviale de vos données. Le livre est un guide qui aidera à appliquer des méthodes d'apprentissage automatique pour résoudre des problèmes quotidiens. Brett Lanz vous apprendra tout ce dont vous avez besoin pour l'analyse, la prévision et la visualisation des données. Vous trouverez ici des informations sur les bibliothèques nouvelles et améliorées, des conseils sur les aspects éthiques de l'apprentissage automatique et les problèmes de biais, ainsi qu'une formation approfondie.

Dans ce livre - Fondements de l'apprentissage automatique et caractéristiques de la formation en informatique sur des exemples. - Préparation des données à utiliser dans l'apprentissage automatique au moyen du langage R. - Classification de la signification des résultats. - Prédiction d'événements à l'aide d'arbres de décision, de règles et de vecteurs de référence. - Prédiction de données numériques et évaluation de données financières à l'aide de méthodes de régression. - La modélisation de processus complexes à l'aide de réseaux de neurones est le fondement de l'apprentissage en profondeur. - Évaluation des modèles et amélioration de leurs performances. - Les dernières technologies de traitement du Big Data, notamment R 3.6, Spark, H2O et TensorFlow.

Ă€ qui s'adresse le livre?


Le livre est destiné à ceux qui s'attendent à utiliser des données dans un domaine spécifique. Vous êtes peut-être déjà un peu familier avec l'apprentissage automatique, mais vous n'avez jamais travaillé avec le langage R; ou, inversement, vous en savez un peu sur R, mais vous ne savez presque pas sur l'apprentissage automatique. Dans tous les cas, ce livre vous aidera à démarrer rapidement. Il serait utile de rafraîchir un peu les concepts de base des mathématiques et de la programmation, mais aucune expérience préalable ne serait requise. Tout ce dont vous avez besoin, c'est d'un désir d'apprendre.

Que lirez-vous dans la publication
1 « » , , , , .

2 « » R. , , .

3 « : » , : .

4 « : » , . , .

5 « : » , , . , .

6 « : » , . , , .

7 « “ ”: » , . , , .

8 « : » , , . - , , , .

9 « : k-» . -.

10 « » , .

11 « » , , . , .

12 « » : R. , , R.


Exemple: modélisation de la résistance du béton à l'aide d'un réseau neuronal


Dans le domaine du génie civil, il est extrêmement important de disposer d'estimations précises de l'efficacité des matériaux de construction. Ces évaluations sont nécessaires pour élaborer des règles de sécurité régissant l'utilisation de matériaux dans la construction de bâtiments, de ponts et de routes.

L'évaluation de la résistance du béton est particulièrement intéressante. Le béton est utilisé dans presque toutes les constructions, les caractéristiques de performance du béton sont très différentes, car il se compose d'un grand nombre d'ingrédients qui interagissent dans un complexe. En conséquence, il est difficile de dire exactement quelle sera la résistance du produit fini. Un modèle qui permettrait de déterminer la résistance du béton à coup sûr, en tenant compte de la composition des matériaux de départ, pourrait offrir un niveau de sécurité plus élevé pour les chantiers de construction.

Étape 1. Collecte de données


Pour cette analyse, nous utiliserons les données de résistance à la compression du béton fournies par I-Cheng Yeh au référentiel d'apprentissage automatique de l'UCI (http://archive.ics.uci.edu/ml). Puisque Ai-Cheng Ye a utilisé avec succès des réseaux de neurones pour modéliser ces données, nous allons essayer de reproduire son travail en appliquant un modèle de réseau de neurones simple dans R.

À en juger par le site, cet ensemble de données contient 1030 enregistrements sur différentes marques de béton avec huit caractéristiques qui décrivent les composants utilisés dans la composition du mélange de béton. On pense que ces caractéristiques affectent la résistance à la compression finale. Il s'agit notamment de la quantité (en kilogrammes par mètre cube) de ciment, d'eau, de divers additifs, de grands et petits agrégats tels que la pierre concassée et le sable utilisés dans le produit fini, ainsi que le temps de prise (en jours).

Pour exécuter cet exemple, téléchargez le fichier concrete.csv et enregistrez-le dans le répertoire de travail R.

Étape 2. Recherche et préparation des données


Comme d'habitude, nous commençons l'analyse en chargeant les données dans l'objet R à l'aide de la fonction read.csv () et nous assurons que le résultat correspond à la structure attendue:

> concrete <- read.csv("concrete.csv")
> str(concrete)
'data.frame':        1030 obs. of 9 variables:
$ cement       : num 141 169 250 266 155 ...
$ slag            : num 212 42.2 0 114 183.4 ...
$ ash             : num 0 124.3 95.7 0 0 ...
$ water          : num 204 158 187 228 193 ...
$ superplastic : num 0 10.8 5.5 0 9.1 0 0 6.4 0 9 ...
$ coarseagg    : num 972 1081 957 932 1047 ...
$ fineagg        : num 748 796 861 670 697 ...
$ age             : int 28 14 28 28 28 90 7 56 28 28 ...
$ strength      : num 29.9 23.5 29.2 45.9 18.3 ...

Neuf variables dans la base de données correspondent à huit caractéristiques et à un résultat attendu, mais il est devenu évident qu'il y a un problème. Les réseaux de neurones fonctionnent mieux lorsque les données d'entrée sont mises à l'échelle dans une plage étroite centrée autour de 0, et ici nous voyons des valeurs dans la plage de 0 à plus de 1000.

En règle générale, la solution à ce problème consiste à mettre à l'échelle les données à l'aide de la fonction de normalisation ou de normalisation. Si la distribution des données correspond à une courbe en forme de cloche (distribution normale, voir chapitre 2), il peut être judicieux d'utiliser la normalisation à l'aide de la fonction intégrée scale (). Si la distribution des données est proche de l'uniforme ou très différente de la normale, la normalisation dans la plage de 0 à 1 peut être plus appropriée. Dans ce cas, nous utiliserons cette dernière option.

Dans le chapitre 3, nous avons créé notre propre fonction normalize ():

> normalize <- function(x) {
       return((x - min(x)) / (max(x) — min(x)))
}

Une fois ce code exécuté, vous pouvez appliquer la fonction normalize () à toutes les colonnes du bloc de données sélectionné à l'aide de la fonction lapply ():

> concrete_norm <- as.data.frame(lapply(concrete, normalize))

Pour vérifier que la normalisation a fonctionné, vous pouvez vérifier si les valeurs minimale et maximale de l'attribut de force sont respectivement 0 et 1:

> summary(concrete_norm$strength)
       Min.     1st Qu.         Median     Mean      3rd Qu.      Max.
   0.0000     0.2664         0.4001  0.4172      0.5457   1.0000

A titre de comparaison: les valeurs initiales minimum et maximum de cet attribut Ă©taient respectivement de 2,33 et 82,60:

> summary(concrete$strength)
     Min.       1st Qu.     Median       Mean      3rd Qu.       Max.
    2.33         23.71       34.44      35.82        46.14      82.60

Toute conversion appliquée aux données avant l'apprentissage du modèle doit ensuite être appliquée dans l'ordre inverse pour reconvertir l'attribut aux unités d'origine. Pour faciliter la mise à l'échelle, il est conseillé de sauvegarder les données source, ou au moins un résumé des statistiques des données source.

En suivant le scénario décrit par Ye dans l'article d'origine, nous diviserons les données en un ensemble de formation, qui comprend 75% de tous les exemples, et un ensemble de test, composé de 25%. Le fichier CSV utilisé est trié dans un ordre aléatoire, nous ne pouvons donc le diviser qu'en deux parties: nous utiliserons un ensemble de données d'apprentissage pour construire un réseau de neurones et un ensemble de données de test pour évaluer dans quelle mesure le modèle se généralise pour les résultats futurs. Étant donné que le réseau neuronal est facilement amené à un état de recyclage, cette étape est très importante.

> concrete_train <- concrete_norm[1:773, ]
> concrete_test <- concrete_norm[774:1030, ]




Étape 3. Formation du modèle sur les données


Pour modéliser la relation entre les ingrédients utilisés dans la production de béton et la résistance du produit fini, nous allons construire un réseau neuronal multicouche à distribution directe. Le package neuralnet, développé par Stefan Fritsch et Frauke Guenther, fournit une implémentation standard et facile à utiliser de tels réseaux. Ce package comprend également une fonction de création d'une topologie de réseau. L'implémentation de neuralnet est un bon moyen d'obtenir des informations supplémentaires sur les réseaux de neurones, bien que cela ne signifie pas non plus qu'il ne peut pas être utilisé pour faire du vrai travail - comme vous le verrez bientôt, c'est un outil plutôt puissant.

R , , . nnet R, , , . , . — RSNNS, , , .

Puisque le paquet neuralnet n'est pas inclus dans la base R, vous devrez l'installer en tapant install.packages ("neuralnet") et le télécharger en utilisant la commande library (neuralnet). La fonction neuralnet () du package peut être utilisée pour entraîner des réseaux de neurones dans la prédiction numérique en utilisant la syntaxe suivante.

Syntaxe du réseau neuronal


Utilisation de la fonction neuralnet () du package neuralnet

Construction d'un modèle:

m <- neuralnet(target ~ predictors, data = mydata,
                       hidden = 1, act.fct = "logistic")

• cible - un modèle qui sera construit à la suite de la formation sur la base de données mydata;

• prédicteurs - formule R qui détermine les caractéristiques du bloc de données mydata à utiliser dans les prévisions;

• données - bloc de données auquel appartiennent la cible et les prédicteurs;

• caché - le nombre de neurones dans la couche cachée (la valeur par défaut est 1). Remarque: pour décrire plusieurs couches cachées, un vecteur d'entiers est utilisé, par exemple, c (2, 2);

• act.fct - fonction d'activation: "logistique" ou "tanh". Remarque: toute autre fonction différenciable peut également être utilisée.

La fonction renvoie un objet de réseau neuronal qui peut être utilisé pour la prévision.

Prédiction:

p <- calculer (m, test)

• m - modèle formé à l'aide de la fonction neuralnet ();

• test - une trame de données contenant des données de test ayant les mêmes caractéristiques que les données d'apprentissage utilisées pour construire le classificateur.

La fonction renvoie une liste composée de deux composants: $ neurones, où les neurones sont stockés pour chaque couche de réseau, et $ net.result, où les valeurs prédites à l'aide de ce modèle sont stockées.

Exemples:



concrete_model <- neuralnet(strength ~ cement + slag + ash,
      data = concrete, hidden = c(5, 5), act.fct = "tanh")
model_results <- compute(concrete_model, concrete_data)
strength_predictions <- model_results$net.result

Commençons par former le réseau de distribution directe à plusieurs niveaux le plus simple avec des paramètres par défaut, qui n'a qu'un seul nœud caché:

> concrete_model <- neuralnet(strength ~ cement + slag
         + ash + water + superplastic + coarseagg + fineagg + age,
         data = concrete_train)

Ensuite, comme le montre la fig. 7.11, vous pouvez visualiser la topologie du réseau en utilisant la fonction plot () et en lui passant l'objet modèle résultant:

> plot(concrete_model)

image

Dans ce modèle simple, il y a un nœud d'entrée pour chacune des huit entités, puis il y a un nœud caché et un nœud de sortie, ce qui donne une prévision de la résistance du béton. Le diagramme montre également les poids pour chaque connexion et la valeur de décalage indiquée pour les nœuds marqués du numéro 1. La valeur de décalage est une constante numérique qui vous permet de décaler la valeur dans le nœud spécifié vers le haut ou vers le bas, approximativement comme un décalage dans une équation linéaire.

Un réseau neuronal avec un nœud caché peut être considéré comme le «cousin» des modèles de régression linéaire discutés au chapitre 6. Les poids entre les nœuds d'entrée et le nœud caché sont similaires aux coefficients bêta, et le poids de décalage est comme un décalage.

Au bas de la figure, le nombre d'étapes d'apprentissage et l'ampleur de l'erreur sont affichés - l'erreur quadratique moyenne totale (somme des erreurs quadratiques, SSE), qui, comme prévu, est la somme des différences quadratiques entre les valeurs prévues et réelles. Plus le SSE est petit, plus le modèle correspond aux données de formation, ce qui indique l'efficacité de ces données, mais en dit peu sur la façon dont le modèle fonctionnera avec des données inconnues.

Étape 4. Évaluation de l'efficacité du modèle


Le diagramme de topologie du réseau donne l'occasion d'examiner la boîte noire d'un réseau neuronal, mais il ne fournit pas beaucoup d'informations sur la façon dont le modèle correspond aux données futures. Pour générer des prévisions sur un ensemble de données de test, vous pouvez utiliser la fonction compute ():

> model_results <- compute(concrete_model, concrete_test[1:8])

La fonction compute () fonctionne un peu différemment des fonctions Predict () que nous avons utilisées jusqu'à présent. Il renvoie une liste composée de deux composants: $ neurones, où les neurones sont stockés pour chaque couche de réseau, et $ net.result, où les valeurs prédites sont stockées. C'est $ net.result dont nous avons besoin:

> predicted_strength <- model_results$net.result

Étant donné que nous avons pour tâche la prévision numérique et non la classification, nous ne pouvons pas utiliser la matrice des incohérences pour vérifier l'exactitude du modèle. Nous mesurons la corrélation entre la valeur prévue et la valeur réelle de la résistance du béton. Si les valeurs prévues et réelles sont fortement corrélées, alors, probablement, le modèle sera utile pour déterminer la résistance du béton.

Permettez-moi de vous rappeler que pour obtenir la corrélation entre deux vecteurs numériques, la fonction cor () est utilisée:

> cor(predicted_strength, concrete_test$strength)
                    [,1]
[1,] 0.8064655576

Ne vous inquiétez pas si votre résultat diffère du nôtre. Puisque le réseau neuronal commence à travailler avec des poids aléatoires, les prédictions présentées dans le livre peuvent être différentes pour différents modèles. Si vous souhaitez faire correspondre précisément les résultats, essayez la commande set.seed (12345) avant de commencer à construire un réseau neuronal.

Si la corrélation est proche de 1, cela indique une forte relation linéaire entre les deux variables. Par conséquent, une corrélation d'environ 0,806 indique une relation plutôt forte. Cela signifie que le modèle fonctionne assez bien même avec un seul nœud caché. Étant donné que nous n'avons utilisé qu'un seul nœud caché, il est probable que nous puissions améliorer l'efficacité du modèle, ce que nous allons essayer de faire.

Étape 5. Amélioration de l'efficacité du modèle


Étant donné que les réseaux avec une topologie plus complexe peuvent étudier des concepts plus complexes, voyons ce qui se passe si vous augmentez le nombre de nœuds masqués à cinq. Nous utiliserons la fonction neuralnet (), comme précédemment, mais ajouterons le paramètre hidden = 5:

> concrete_model2 <- neuralnet(strength ~ cement + slag +
                                               ash + water + superplastic +
                                               coarseagg + fineagg + age,
                                               data = concrete_train, hidden = 5)

Après avoir reconstruit le schéma du réseau (Fig. 7.12), nous verrons une forte augmentation du nombre de connexions. Comment cela a-t-il affecté l'efficacité?

> plot(concrete_model2)

Veuillez noter que l'erreur résultante (à nouveau mesurée comme SSE) est passée de 5,08 dans le modèle précédent à 1,63. De plus, le nombre d'étapes de formation est passé de 4882 à 86 849, ce qui n'est pas surprenant compte tenu de la complexité du modèle. Plus le réseau est complexe, plus il faut d'itérations pour trouver les poids optimaux.

En appliquant les mêmes étapes pour comparer les valeurs prédites avec les vraies, nous obtenons une corrélation d'environ 0,92, ce qui est beaucoup mieux par rapport au résultat précédent de 0,80 pour un réseau avec un nœud caché:

> model_results2 <- compute(concrete_model2, concrete_test[1:8])
> predicted_strength2 <- model_results2$net.result
> cor(predicted_strength2, concrete_test$strength)
                  [,1]
[1,] 0.9244533426

image

Malgré d'importantes améliorations, vous pouvez aller encore plus loin pour augmenter l'efficacité du modèle. En particulier, il est possible d'introduire des couches cachées supplémentaires et de changer la fonction d'activation du réseau. En faisant ces changements, nous jetons les bases de la construction d'un simple réseau de neurones profonds.

Le choix de la fonction d'activation est très important pour l'apprentissage en profondeur. La meilleure fonction pour une tâche d'apprentissage particulière se trouve généralement expérimentalement, puis est largement utilisée par la communauté des chercheurs en apprentissage automatique.

Récemment, la fonction d'activation, appelée fonction de distillation, ou redresseur, est devenue très populaire en raison de son application réussie dans des tâches complexes, telles que la reconnaissance d'image. Un nœud de réseau neuronal dans lequel un redresseur est utilisé comme fonction d'activation est appelé unité linéaire rectifiée (ReLU). Comme le montre la fig. 7.13, la fonction d'activation du type redresseur est décrite de telle manière que renvoie x si x est supérieur ou égal à 0, et 0 sinon. L'importance de cette fonction est que, d'une part, elle est non linéaire et, d'autre part, qu'elle a des propriétés mathématiques simples qui la rendent peu coûteuse en calcul et très efficace pour la descente de gradient. Malheureusement, pour x = 0, la dérivée du redresseur n'est pas définie,par conséquent, le redresseur ne peut pas être utilisé conjointement avec la fonction neuralnet ().

À la place, vous pouvez utiliser une approximation lissée de ReLU appelée softplus ou SmoothReLU, une fonction d'activation définie comme log (1 + ex). Comme le montre la fig. 7.13, la fonction softplus est proche de zéro pour x valeurs inférieures à 0 et approximativement égale à x pour x supérieur à 0.

image

Pour définir la fonction softplus () dans R, nous utilisons le code suivant:

> softplus <- function(x) { log(1 + exp(x)) }

Une telle fonction d'activation peut être fournie à l'entrée neuralnet () en utilisant le paramètre act.fct. De plus, nous ajoutons une deuxième couche cachée composée de cinq nœuds, affectant au paramètre caché la valeur du vecteur entier c (5, 5). En conséquence, nous obtenons un réseau à deux couches, dont chacune des couches a cinq nœuds, et tous utilisent la fonction d'activation softplus:

> set.seed(12345)
> concrete_model3 <- neuralnet(strength ~ cement + slag +
                                               ash + water + superplastic +
                                               coarseagg + fineagg + age,
                                               data = concrete_train,
                                               hidden = c(5, 5),
                                               act.fct = softplus)

Comme précédemment, le réseau peut être visualisé (Fig. 7.14):

> plot(concrete_model3)

image

La corrélation entre la résistance prévue et réelle du béton peut être calculée comme suit:

> model_results3 <- compute(concrete_model3, concrete_test[1:8])
> predicted_strength3 <- model_results3$net.result
> cor(predicted_strength3, concrete_test$strength)
                  [,1]
[1,] 0.9348395359

La corrélation entre la force prévue et la force réelle était de 0,935, ce qui est le meilleur indicateur obtenu jusqu'à présent. Fait intéressant, dans la publication originale, Ye a rapporté une corrélation de 0,885. Cela signifie qu'avec relativement peu d'efforts, nous avons pu obtenir un résultat comparable et même dépasser les résultats d'un expert dans ce domaine. Certes, les résultats de Ye ont été publiés en 1998, ce qui nous a donné une longueur d'avance sur plus de 20 ans de recherches supplémentaires dans le domaine des réseaux de neurones!

Un autre détail important doit être pris en compte: puisque nous avons normalisé les données avant de former le modèle, les prévisions sont également dans l'intervalle normalisé de 0 à 1. Par exemple, le code suivant montre un cadre de données qui compare ligne par ligne les valeurs de résistance du béton de l'ensemble de données initial avec les prévisions correspondantes:

> strengths <- data.frame(
      actual = concrete$strength[774:1030],
      pred = predicted_strength3
   )
> head(strengths, n = 3)
      actual        pred
774 30.14 0.2860639091
775 44.40 0.4777304648
776 24.50 0.2840964250


En examinant la corrélation, nous voyons que le choix des données normalisées ou anormalisées n'affecte pas les statistiques de performance calculées - tout comme auparavant, la corrélation est de 0,935: mais si nous calculons un autre indicateur de performance, par exemple, la différence absolue entre les valeurs prévues et réelles, alors le choix de l'échelle serait très important. Dans cet esprit, vous pouvez créer la fonction unlormalize (), qui effectuerait l'inverse de la normalisation minimax et vous permettrait de convertir les prévisions normalisées à l'échelle d'origine:

> cor(strengths$pred, strengths$actual)
[1] 0.9348395359






> unnormalize <- function(x) {
     return((x * (max(concrete$strength)) -
           min(concrete$strength)) + min(concrete$strength))
   }

Après avoir appliqué la fonction Unormalize () que nous avons écrite aux prévisions, il devient clair que l'échelle des nouvelles prévisions est similaire aux valeurs initiales de résistance du béton. Cela vous permet de calculer la valeur significative de l'erreur absolue. De plus, la corrélation entre les valeurs de résistance anormale et initiale reste inchangée:

> strengths$pred_new <- unnormalize(strengths$pred)
> strengths$error <- strengths$pred_new — strengths$actual
> head(strengths, n = 3)
           actual                pred             pred_new                    error
774          30.14         0.2860639091               23.62887889      -6.511121108
775          44.40         0.4777304648               39.46053639      -4.939463608
776          24.50         0.2840964250               23.46636470      -1.033635298

> cor(strengths$pred_new, strengths$actual)
[1] 0.9348395359

En appliquant des réseaux de neurones à vos projets, vous devez suivre une séquence d'étapes similaire pour ramener les données à leur échelle d'origine.

Vous pouvez également constater que les réseaux de neurones deviennent rapidement plus complexes car ils sont utilisés pour des tâches d'apprentissage de plus en plus difficiles. Par exemple, vous pouvez rencontrer le problème de petit gradient dit «disparaissant» et le problème de gradient «explosif» étroitement lié lorsque l'algorithme de propagation inverse ne trouve pas de solution utile car il ne converge pas dans un délai raisonnable. Pour résoudre ces problèmes, vous pouvez essayer de changer le nombre de nœuds cachés, appliquer diverses fonctions d'activation, telles que ReLU, ajuster la vitesse d'apprentissage, etc. Sur la page d'aide de la fonction neuralnet, vous trouverez des informations supplémentaires sur les différents paramètres qui peuvent être configurés. Cependant, cela conduit à un autre problème,lorsque le goulot d'étranglement dans la construction d'un modèle très efficace est la vérification d'un grand nombre de paramètres. C'est le prix de l'utilisation des réseaux de neurones, et plus encore des réseaux d'apprentissage en profondeur: leur énorme potentiel nécessite beaucoup de temps et de puissance de traitement.

, ML . , Amazon Web Services (AWS) Microsoft Azure, . 12.


La méthode SVM (Support Vector Machine) peut être représentée comme une surface qui forme la frontière entre les points de données tracés dans un espace multidimensionnel qui décrit des exemples et des valeurs de leurs attributs. Le but de SVM est de construire une bordure plate - un hyperplan qui divise l'espace de telle manière que des groupes homogènes se forment des deux côtés de celui-ci. Ainsi, la formation SVM combine des aspects de la formation du plus proche voisin basés sur les instances décrites dans le chapitre 3 et la modélisation de régression linéaire, discutée dans le chapitre 6. Il s'agit d'une combinaison extrêmement puissante qui permet aux SVM de modéliser des relations très complexes.

Malgré le fait que les mathématiques de base sous-jacentes à la SVM existent depuis des décennies, l'intérêt pour ces méthodes a considérablement augmenté après qu'elles ont commencé à être appliquées au ML. La popularité de ces méthodes a augmenté après des réussites de haut niveau dans la résolution de problèmes d'apprentissage complexes, ainsi qu'après le développement d'algorithmes SVM, qui ont été récompensés et mis en œuvre dans des bibliothèques bien prises en charge dans de nombreux langages de programmation, y compris R. Après cela, les méthodes SVM ont été acceptées par un large public. Sinon, il serait probablement impossible d'appliquer les mathématiques complexes requises pour implémenter SVM. La bonne nouvelle est que même si les mathématiques sont peut-être complexes, les concepts de base sont compréhensibles.

Les méthodes SVM peuvent être adaptées pour utiliser presque n'importe quel type de tâche de formation, y compris la classification et la prévision numérique. De nombreux succès clés de cet algorithme sont liés à la reconnaissance des formes. Les applications les plus connues de ces méthodes sont les suivantes:

  • classification des donnĂ©es sur l'expression des gènes de puces Ă  ADN en bioinformatique pour la dĂ©tection du cancer et d'autres maladies gĂ©nĂ©tiques;
  • catĂ©gorisation de texte, telle que la dĂ©termination de la langue utilisĂ©e dans un document ou la classification de documents par sujet;
  • DĂ©tection d'Ă©vĂ©nements rares mais importants, tels que la panne d'un moteur Ă  combustion interne, une violation de la sĂ©curitĂ© ou un tremblement de terre.


Les méthodes SVM sont plus faciles à comprendre en utilisant la classification binaire comme exemple - c'est ainsi qu'elles sont généralement utilisées. Par conséquent, dans les sections restantes, nous nous concentrerons uniquement sur les classificateurs SVM. Des principes similaires à ceux présentés ici sont également utilisés lors de l'adaptation des méthodes SVM pour la prévision numérique.

A propos de l'auteur


Brett Lantz (@DataSpelunking) utilise des techniques innovantes de traitement des données pour étudier le comportement humain depuis plus d'une décennie. Sociologue de formation, Brett s'est d'abord intéressé à l'apprentissage automatique tout en explorant une grande base de données de profils d'adolescents sur les réseaux sociaux. Brett est enseignant au DataCamp et fait souvent des présentations lors de conférences et de séminaires d'apprentissage automatique à travers le monde. Il est un passionné bien connu dans le domaine de l'application pratique de la science des données dans le domaine des sports, des véhicules sans pilote, de l'étude des langues étrangères et de la mode, ainsi que dans de nombreuses autres industries. Brett espère un jour écrire sur tout cela sur dataspelunking.com, un échange de connaissances sur la recherche de modèles dans les données.

Ă€ propos de Science Editor


Raghav Bali (Raghav Bali) - chercheur principal de l'une des plus grandes organisations de soins de santé au monde. Il est engagé dans la recherche et le développement de solutions d'entreprise basées sur l'apprentissage automatique, l'apprentissage profond et le traitement du langage naturel pour une utilisation dans les soins de santé et l'assurance. Dans son poste précédent chez Intel, il a participé à des initiatives proactives dans le domaine des technologies de l'information, basées sur les mégadonnées, utilisant le traitement du langage naturel, l'apprentissage en profondeur et les méthodes statistiques traditionnelles. Chez American Express, il a travaillé dans l'engagement numérique et la fidélisation de la clientèle.

Raghav est l'auteur de plusieurs livres publiés par de grands éditeurs. Son dernier livre porte sur la dernière étude en matière de transfert.

Raghav est diplômé de l'Institut international des technologies de l'information de Bangalore et possède une maîtrise (avec distinction). Dans ces rares moments où il n'est pas occupé à résoudre des problèmes scientifiques, Raghav aime lire et photographier tout de suite.

»De plus amples informations sur le livre sont disponibles sur le site Web de l'éditeur
» Contenu
» Extrait

pour Khabrozhiteley 25% de réduction sur le coupon - Machine Learning

Lors du paiement de la version papier du livre, un livre électronique est envoyé par e-mail.

All Articles