Ce livre → Version révisée de l'apprentissage automatique à partir du cloud <img src =" // ir-jp.amazon-adsystem.com/e/ir?t=kokkahasan-22&l=am2&o=9&a=4865941622 "width =" 1 "height =" 1 "border =" 0 "alt =" "style =" border: none! Important; margin: 0px! Important; "/> Le fait est que c'est simple mais pas trop difficile et bien organisé. Résumer.
Exemple: prévision des ventes au détail (prédit les ventes futures en les analysant en fonction d'éléments de corrélation tels que le nombre de ventes de l'année précédente, le jour de la journée, la météo, le succès / non atteint, etc.
[Formule]
y: Nombre de ventes à la date de prévision x1 ~ xm: variables telles que la puissance, le type de carburant, la consommation de carburant, l'empattement, la valeur de la marque, etc. w1 ~ wm: coefficient de régression partielle (poids. Poids de l'élément) c: terme constant (biais)
・ MAE (Erreur absolue moyenne) ・ ・ ・ Plus il est proche de 0, mieux c'est Moyenne de la différence entre la valeur prédite et la valeur de réponse correcte. ・ RMSE (erreur quadratique moyenne):![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/f023e48a-386f -cb03-363a-b559a2c829a7.png) ・ Coerfficient de détermination Le carré du coefficient de corrélation entre la valeur prédite et la valeur de réponse correcte. Plus il est proche de 1, mieux c'est
・ Méthode Holdout Divisez aléatoirement les données d'entraînement pour l'entraînement et l'évaluation · Validation croisée Divisez les données d'entraînement en k morceaux. Et k fois l'évaluation
・ Régularisation Ajoutez une valeur de pénalité proportionnelle au paramètre de poids pour éviter le surentraînement dû à un trop grand nombre de variables et à un paramètre de poids trop important. [Formule] Ajoutez la somme des carrés des paramètres de poids à la somme des carrés de l'erreur entre la valeur prédite et la valeur de réponse correcte en tant que paramètre.
La formule est la même que la régression linéaire. Cependant, un modèle dans lequel le paramètre de poids n'est pas constant mais une distribution de probabilité. Compte tenu du nombre de fois qu'un événement s'est produit, où seule l'estimation du maximum de vraisemblance (MLE: une méthode de détermination du paramètre de poids de sorte que l'erreur devienne 0) est inexacte si le nombre de données d'apprentissage n'est pas pris en compte. Le fera. (Pré-distribution et distribution postérieure)
Exemple: prédire la capacité de paiement en analysant les éléments de corrélation tels que la profession, le revenu annuel, le montant du dépôt et les retards de paiement dans le cadre de la vérification du crédit dans une banque.
Prédisez la probabilité qu'un événement particulier se produise. [Formule]
x1 ~ xm: variables telles que l'âge, la taille de la tumeur, la tumeur maligne, non ménopausée, etc. w1 ~ wm: coefficient de régression partielle (poids. Poids de l'élément) c: terme constant (biais) P: Probabilité Estimer positif ou négatif en définissant le seuil de probabilité à, par exemple, 0,5
Si des classes sont créées de A à E, préparez une formule de discrimination (la formule ci-dessus) pour chacune et attribuez les données correspondantes à la classe présentant la probabilité la plus élevée.
Si vous faites des classes de A à E, essayez toutes les combinaisons un-à-un avec A-B, A-C, A-D ... Nombre de combinaisons «k × (k-1) ÷ 2» fois. 10 fois pour A ~ E. Les données correspondantes sont attribuées à la classe qui a été la plus votée sur 10 fois.
・ Taux de précision ・ ・ ・ Plus il est proche de 100%, mieux c'est S'il y a 90% du soleil, le taux de réponse correcte sera de 90% même si toutes les réponses stupides sont correctes.
・ True Positive Rate (TPR) ・ ・ ・ Plus il est proche de 100%, mieux c'est À quel point il convient uniquement aux données positives
・ Taux de faux positifs (FPR) ・ ・ ・ Plus il est proche de 0%, mieux c'est Combien a été rendu positif par erreur uniquement pour les données négatives
・ AUC (zone sous la courbe) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Il y a un compromis entre le taux de faux positifs et le taux de vrais positifs. Par conséquent, le taux de faux positifs et le taux de vrais positifs sont représentés graphiquement sur la courbe ROC, et la zone sous la courbe est AUC.
・ Précision: plus il est proche de 100%, mieux c'est Dans quelle mesure les données de réponse correctes sont-elles positives pour les données que la supposition est positive?
・ Rappel: plus il est proche de 100%, mieux c'est Dans quelle mesure était-il possible de juger que les données de supposition étaient correctes pour le positif des données de réponse correcte?
・ Valeur F (score F1) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Il y a aussi un compromis entre le rappel et la précision. Index pour juger cela de manière exhaustive
Essayez des méthodes autres que la régression logistique. Support Vector Machine (SVM), Decision Forest, Boosted Decision Tree, etc.
Exemple: Nous classons l'orientation client des agences de voyages en groupes tels que l'orientation en champ proche, l'orientation à l'étranger et l'orientation des sources chaudes, et nous distribuons du matériel de promotion des ventes en fonction de chaque orientation.
Sélectionnez les données de point central pour n'importe quel nombre de clusters et classez les autres données dans chaque cluster à l'aide de la distance euclidienne ou de la similitude cosinus.
Facile. La distance entre le point a et le point b sur le graphique. S'il y a m variables, [Formule]
La proximité de la direction du vecteur. +1 pour la même direction, 0 pour la verticale, -1 pour l'inverse [Formule]
Amélioration de la méthode k-means. C'est le courant dominant. Choisissez le plus loin possible du centre du cluster. En outre, un petit nombre de groupes ignorent les données éloignées.
Puisqu'il apprend sans enseignant, l'analyste n'a d'autre choix que de jeter un œil approprié.
·Normalisation Mettez la variable x à l'échelle avec une grande échelle de valeurs de sorte que la valeur moyenne soit 0 et l'écart type 1. Il est appelé score z (score z).
Exemple: Détectez les précurseurs de catastrophe tels que l'eau des canons à partir des capteurs de niveau d'eau en amont, au milieu et en aval des rivières.
One-Class SVM Algorithme d'estimation de la densité. La plage normale de données est représentée par un cercle et les données qui ne rentrent pas dans ce cercle sont détectées comme anormales. Apprenez à minimiser la valeur calculée par la formule suivante. [Formule] R: rayon du cercle n: nombre de données ζ: La longueur des données en dehors du cercle ν: Le poids de la pénalité donnée par l'analyste (plus la valeur est petite, plus les données d'apprentissage seront incluses dans la plage normale. Si ν vaut 0, toutes les données d'apprentissage seront contenues dans un cercle).
Lorsque les zones denses de données sont éloignées, la zone normale est entourée d'une courbe déformée.
・ Précision: plus la valeur est élevée, moins il y a d'omission de détection. La quantité de données correctes est également "anormale" pour les données dont la détection d'anomalie est "anormale"
・ Rappel: plus la valeur est élevée, moins il y a d'omission de détection. Dans quelle mesure les données de supposition ont-elles été correctement jugées "anormales" pour le "anormal" des données de réponse correctes?
・ Valeur F (score F1) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Il y a aussi un compromis entre le rappel et la précision. Index pour juger cela de manière exhaustive
Il y a un compromis entre précision et rappel. Voulez-vous réduire les omissions dans la détection d'événements anormaux ou réduire les faux positifs? L'augmentation de ν réduit la plage normale (telle que 0,5). Au contraire, s'il est réglé sur 0,02 etc., il sera dans la plage normale. Dans ML Studio, définissez avec η.
Fonction du noyau utilisée dans les astuces du noyau. Noyau RBF (ML Studio par défaut) ・ Noyau polygonal ・ Noyau Sigmaid
・ Détection d'anomalies par analyse des composants principaux (détection d'anomalies basée sur PCA) ・ Détection des anomalies des séries temporelles (pour les données de séries chronologiques telles que les changements de température et les changements de prix des actions)
Exemple: "Les personnes qui ont acheté ce produit ont également acheté les produits suivants" d'Amazon
Devinez le produit recommandé en utilisant la note, la préférence donnée par vous et la note donnée par les autres. Il existe une base d'articles et une base d'utilisateurs.
Nous recommandons des produits très similaires aux produits auxquels l'utilisateur a attribué un score élevé.
Sélectionnez plusieurs utilisateurs avec une forte similitude avec les utilisateurs et recommandez des produits avec des scores élevés pour chacun
MatchBox Le filtrage d'accentuation exclut les nouveaux utilisateurs et les nouveaux produits de la moustiquaire (problème de démarrage à froid. Algorithme unique de Microsoft qui fait des recommandations basées sur les informations sur les produits et les attributs des utilisateurs. Les scores s'accumulent progressivement. Également utilisé ensemble. 【formule】 κ est le nombre d'attributs
Par conséquent, trois types de données d'apprentissage sont préparés: les données de score, les données d'attribut utilisateur et les données d'attribut de produit.
・ NDCG (gain cumulatif réduit normalisé) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Défaut ・ MAE (Erreur absolue moyenne) ・ ・ ・ Plus il est proche de 0, mieux c'est Moyenne de la différence entre la valeur prédite et la valeur de réponse correcte. ・ RMSE (erreur quadratique moyenne):![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/f023e48a-386f -cb03-363a-b559a2c829a7.png)
Ajustez la longueur (κ) du vecteur d'entités. Dans MS Studio, [Nombre de traits] de "Train Matchbox Recommender"
Passer en mode combat réel
En mode combat réel
Cliquez sur [Predictive Web Service] dans [SET UP WEB SERVICE]
Les modules [Entrée de service Web] et [Sortie de service Web] sont ajoutés.
Supprimez [Sélectionner les colonnes dans l'ensemble de données] et définissez [Entrée du service Web] sur le port d'entrée de [Score Matchbox Recommender].
Cliquez sur Déployer le service Web. Passez à l'écran suivant. Une clé API a été émise.
Cliquez sur DEMANDE / RÉPONSE pour ouvrir une autre fenêtre avec un exemple de code au bas de l'écran.
Remplacez abc123 dans le code ʻapi_key = "abc123" `par le vôtre. Modifiez les valeurs dans le code ci-dessous en, par exemple, UserID "U1048".
#Changer avant
data = {
"Inputs": {
"input1":
{
"ColumnNames": ["userID"],
"Values": [ [ "value" ], [ "value" ], ]
}, },
#Après le changement
data = {
"Inputs": {
"input1":
{
"ColumnNames": ["userID"],
"Values": [ [ "U1048" ] ]
}, },
Enregistrez-le avec PythonApplication.py.
$ python PythonApplication.py
dans la commande et le résultat sera renvoyé.$ python PythonApplication.py
{"Results":{"output1":{"type":"table","value":{"ColumnNames":["User","Item 1","Item 2","Item 3","Item 4","Item 5"],"ColumnTypes":["String","String","String","String","String","String"],"Values":[["U1048","134986","135030","135052","135045","135025"]]}}}}
import urllib.request
# If you are using Python 3+, import urllib instead of urllib2
import json
data = {
"Inputs": {
"input1":
{
"ColumnNames": ["userID"],
"Values": [ [ "U1048" ] ]
}, },
"GlobalParameters": {
}
}
body = str.encode(json.dumps(data))
url = 'https://japaneast.services.azureml.net/workspaces/0e3c5988af4b43d7ac14fa55244b9f9d/services/53da3266168a4c8a8814e3adac2a6821/execute?api-version=2.0&details=true'
api_key = '<Clé API>' # Replace this with the API key for the web service
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}
req = urllib.Request(url, body, headers)
try:
response = urllib.urlopen(req)
# If you are using Python 3+, replace urllib2 with urllib.request in the above code:
# req = urllib.request.Request(url, body, headers)
# response = urllib.request.urlopen(req)
result = response.read()
print(result)
except urllib.request.HTTPError, error:
print("The request failed with status code: " + str(error.code))
# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(json.loads(error.read()))
Changez simplement ʻurllib2 en ʻurllib.request
.
c'est tout.
Recommended Posts