Tworzenie modelu R

Ważne

Obsługa programu Machine Learning Studio (wersja klasyczna) zakończy się 31 sierpnia 2024 r. Zalecamy przejście do usługi Azure Machine Learning przed tym terminem.

Od 1 grudnia 2021 r. nie będzie można tworzyć nowych zasobów programu Machine Learning Studio (wersja klasyczna). Do 31 sierpnia 2024 r. można będzie nadal korzystać z istniejących zasobów programu Machine Learning Studio (wersja klasyczna).

Dokumentacja programu ML Studio (wersja klasyczna) jest wycofywana i może nie być aktualizowana w przyszłości.

Tworzenie modelu R przy użyciu zasobów niestandardowych

Kategoria: Przekształcanie/manipulowanie danymi

Uwaga

Dotyczy: Machine Learning Studio (wersja klasyczna)

Podobne moduły przeciągania i upuszczania są dostępne w Azure Machine Learning projektanta.

Omówienie modułu

W tym artykule opisano sposób użycia modułu Create R Model (Tworzenie modelu R) w programie Machine Learning Studio (wersja klasyczna) w celu utworzenia nieprzeszkolonego modelu na podstawie skryptu w języku R.

Model można utworzyć na podstawie dowolnego uczącego się, który znajduje się w pakiecie języka R w Machine Learning środowisku.

Po utworzeniu modelu możesz użyć funkcji Train Model (Trenowanie modelu) do trenowania modelu na zestawie danych, tak jak w przypadku każdego innego Machine Learning. Wytrenowany model może zostać przekazany do funkcji Score Model (Wytrenowany model), aby użyć go do przewidywania. Następnie można zapisać wytrenowany model, a przepływ pracy oceniania może zostać opublikowany jako usługa internetowa.

Ostrzeżenie

Obecnie nie można przekazać ocenionych wyników modelu R do oceny modelu lub krzyżowej weryfikacji modelu. Jeśli musisz ocenić model, możesz napisać niestandardowy skrypt R i uruchomić go przy użyciu modułu Execute R Script (Wykonywanie skryptu R ).

Oprócz zapisywania i ponownego używania niestandardowych modułów R za pomocą funkcji Tworzenia modelu R można utworzyć własną implementację procesu modelowania i zarządzania danymi przy użyciu środowiska R, przekazać pliki w formacie spakowanym do obszaru roboczego, a następnie zarejestrować pakiet jako moduł niestandardowy. Aby uzyskać więcej informacji, zobacz Niestandardowe moduły R.

Jak skonfigurować tworzenie modelu R

Korzystanie z tego modułu wymaga pośredniej lub specjalistycznej wiedzy na temat języka R. Moduł obsługuje korzystanie z dowolnych osób uczących się, które znajdują się w pakietach języka R już zainstalowanych w Machine Learning.

Ten przykład z Azure AI Gallery implementuje dwuklasowy klasyfikator Nave Bayesa przy użyciu popularnego e1070 pakietu: + Create R Model (+ Utwórz model R). Zalecamy skopiowanie przykładu do obszaru roboczego i skorzystanie z tych informacji.

  1. Dodaj następujące moduły do eksperymentu: Create R Model (Tworzenie modelu R), Train Model (Trenowanie modelu) i Score Model (Ocena modelu).

  2. W okienku Właściwości okna Tworzenie modelu R podaj następujące skrypty:

  3. Przykładowy eksperyment obejmuje również moduł Execute Python Script (Wykonywanie skryptu języka Python ), który służy do kreślenia grafów do oceny modelu. Ten moduł jest opcjonalny w przypadku publikowania w usłudze internetowej, ale jest przydatny podczas opracowywania eksperymentu.

    • Aby wyświetlić wykresy ze skryptu języka Python, kliknij prawym przyciskiem myszy moduł Python, wybierz pozycję Urządzenie python i wybierz pozycję Visualize (Wizualizacja).
    • Aby wyświetlić tylko metryki modelu, kliknij prawym przyciskiem myszy moduł Python, wybierz pozycję Zestaw danych języka Python i wybierz pozycję Visualize (Wizualizacja).

    Aby uzyskać kod w opcjonalnym module języka Python, zobacz Moduł języka Python na temat oceny modelu.

Skrypt trenowania

W poniższym przykładzie pokazano typ kodu, który można użyć w skrypcie instruktora R.

Ten skrypt ładuje pakiet języka R, tworzy model przy użyciu elementu uczącego się z pakietu oraz konfiguruje kolumny funkcji i etykiety przy użyciu wstępnie zdefiniowanych stałych i funkcji podanych w skrypcie Create R Model (Tworzenie modelu języka R).

library(e1071)
features <- get.feature.columns(dataset)
labels   <- as.factor(get.label.column(dataset))
train.data <- data.frame(features, labels)
feature.names <- get.feature.column.names(dataset)
names(train.data) <- c(feature.names, "Class")
model <- naiveBayes(Class ~ ., train.data)
  • Pierwszy wiersz ładuje pakiet R e1071, który zawiera algorytm klasyfikatora Nave Bayesa, którego chcemy użyć. Ponieważ jest to jeden z pakietów wstępnie zainstalowanych w środowisku Machine Learning, nie trzeba go pobierać ani instalować.

  • Następne wiersze pobierzą kolumny cech i kolumnę etykiety z zestawu danych i połączą je w nową ramkę danych R o nazwie train.data:

    features <- get.feature.columns(dataset)   
    labels <- as.factor(get.label.column(dataset))   
    train.data <- data.frame(features, labels)
    feature.names <- get.feature.column.names(dataset)
    
  • Zwróć uwagę na użycie tych wstępnie zdefiniowanych funkcji:

    • get.label.columns() Zwraca kolumnę wybraną jako etykieta klasy w module Train Model (Trenowanie modelu).

    • get.feature.columns()Wybiera kolumny, które zostały wyznaczone jako cechy w zestawie danych.

      Domyślnie wszystkie kolumny z wyjątkiem kolumny etykiety są traktowane jako funkcje w programie Studio (wersja klasyczna). W związku z tym, aby oznaczyć określone kolumny jako funkcje, użyj polecenia Edytuj metadane lub wybierz zestaw kolumn w skrypcie R.

    • get.feature.column.names(dataset) pobiera nazwy kolumn funkcji z zestawu danych.

  • Nazwy z połączonego zestawu danych są oznaczane train.datajako nazwy kolumn w tabeli , a dla Class kolumny label jest tworzona tymczasowa nazwa.

    names(train.data) <- c(feature.names, "Class")
    
  • Ostatni wiersz kodu definiuje algorytm klasyfikatora Nave Bayesa jako funkcję zmiennych (cech) i wyników (etykiet) w ramce train.data danych.

    model <- naiveBayes(Class ~ ., train.data)
    
  • Podczas tworzenia, trenowania i oceniania skryptów modelu należy używać nazwy zmiennej model.

Skrypt oceniania

Poniższy kod ilustruje typ kodu R, który można podać w skrypcie R obiektu Scorer.

library(e1071)
probabilities <- predict(model, dataset, type="raw")[,2]
classes <- as.factor(as.numeric(probabilities >= 0.5))
scores <- data.frame(classes, probabilities)
  • Pierwszy wiersz ładuje pakiet.

  • Drugi wiersz oblicza przewidywane prawdopodobieństwa dla zestawu danych oceniania przy użyciu wytrenowany model ze skryptu trenowania, wyznaczony przez wymaganą nazwę zmiennej . model

  • Trzeci wiersz stosuje próg 0,5 do prawdopodobieństw podczas przypisywania przewidywanych etykiet klas.

  • Ostatni wiersz łączy etykiety klas i prawdopodobieństwa w wyjściową ramkę danych, scores.

  • Ramka danych przekazywana do modułu Score Model (Ocena modelu ) musi mieć nazwę scores.

Opcjonalny skrypt oceny języka Python

Przykładowy eksperyment w Azure AI Gallery zawiera następujący skrypt języka Python, który służy do generowania metryk i wykresów do oceny modelu.

def azureml_main(dataframe):
    import matplotlib
    matplotlib.use("agg")
    
    from sklearn.metrics import accuracy_score, precision_score, recall_score, roc_auc_score, roc_curve
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    
    scores = dataframe.ix[:, ("Class", "classes", "probabilities")]
    ytrue = scores["Class"]
    ypred = np.array([float(val) for val in scores["classes"]])    
    probabilities = scores["probabilities"]
    
    accuracy, precision, recall, auc = \
    accuracy_score(ytrue, ypred),\
    precision_score(ytrue, ypred),\
    recall_score(ytrue, ypred),\
    roc_auc_score(ytrue, probabilities)
    
    metrics = pd.DataFrame();
    metrics["Metric"] = ["Accuracy", "Precision", "Recall", "AUC"];
    metrics["Value"] = [accuracy, precision, recall, auc]

# Plot ROC Curve
    fpr, tpr, thresholds = roc_curve(ytrue, probabilities)
    fig = plt.figure()
    axis = fig.gca()
    axis.plot(fpr, tpr, linewidth=8)
    axis.grid("on")
    axis.set_xlabel("False positive rate")
    axis.set_ylabel("True positive rate")
    axis.set_title("ROC Curve")
    fig.savefig("roc.png")

    return metrics,

Publikowanie niestandardowego przepływu pracy modelu R jako usługi internetowej

Po uruchomieniu eksperymentu możesz opublikować pełny eksperyment jako usługę internetową.

Aby uzyskać zaktualizowane instrukcje dotyczące tworzenia usługi internetowej na podstawie eksperymentu programu Studio (klasycznego), zobacz Przewodnik, krok 5. Wdrażanie usługi Machine Learning internetowej

Domyślnie usługa internetowa oczekuje, że zostaną podane wszystkie kolumny wejściowe z danych szkoleniowych, w tym kolumna etykiety. Możesz dodać wystąpienie modułu Select Columns in Dataset (Wybieranie kolumn w zestawie danych) między wejściowym źródłem danych i modułem Score Model (Ocena modelu), aby wykluczyć etykietę, która ma zostać przewidywana.

Uwagi techniczne

  • Moduł Create R Model (Tworzenie modelu R ) obsługuje tylko korzystanie z CRAN R. Nie można wybrać innej wersji oprogramowania R ani użyć programu Microsoft R Open.

  • Model jest buforowany po pierwszym uruchomieniu modułu, a moduł nie jest wywoływany w kolejnych uruchomieniach, dopóki nie zostaną wprowadzone zmiany w skryptach wejściowych. Należy wziąć pod uwagę to zachowanie, jeśli skrypty w języku R korzystają z dowolnej z następujących funkcji:

    • Funkcje, które generują liczby losowe
    • Funkcje, które generują liczby losowe
    • Inne funkcje niedeterministyczne
  • Niestandardowych modeli R utworzonych za pomocą tego modułu nie można używać z tymi modułami:

  • Modele R nie wykonują automatycznie normalizacji cech danych kategorii ani nie obsługują brakujących wartości. Obsługę takich zmiennych należy wykonać w ramach skryptów trenowania i oceniania w języku R.

Tabela wstępnie zdefiniowanych funkcji

Użycie Opis
get.feature.columns(dataset) Pobiera wszystkie kolumny funkcji.
get.label.column(dataset, label.type=TrueLabelType) Pobiera kolumnę etykiety z danym typem.

Listę dostępnych typów można znaleźć w sekcji Stałe.
get.label.column.names(dataset) Pobiera nazwy wszystkich kolumn etykiet.
get.label.column.name(dataset, label.type=TrueLabelType) Pobiera nazwę kolumny etykiety, biorąc pod uwagę typ.

Listę dostępnych typów można znaleźć w sekcji Stałe.
get.label.column.types(dataset) Pobiera typy wszystkich kolumn etykiet.
get.feature.column.names(dataset) Pobiera nazwy wszystkich kolumn funkcji.
dataset < - set.score.column(dataset, score.type, column.name) Ustawia kolumnę oceny dla danego typu.

Listę dostępnych typów można znaleźć w sekcji Stałe.
dataset < - set.feature.channel(dataset, channel.name, column.names) Ustawia kanał funkcji na nazwę.

Listę dostępnych nazw można znaleźć w sekcji Stałe.

Tabela wstępnie zdefiniowanych stałych

Stała Opis
TrueLabelType Typ kolumny true label
ScoredLabelType Typ kolumny z etykietą z wynikami
RawScoreType Nieprzetworzone wyniki typu kolumny
SkalibrowanyScoreType Typ kolumny skalibrowanego wyniku
ScoredProbabilitiesMulticlassColumnTypePattern Wzorzec przygotowywania typu kolumny scored probabilities dla klasyfikatora wieloklasowego
BayesianLinearRegressionScoresFeatureChannel Nazwa kanału funkcji z wynikami regresji liniowej Bayesa
BinaryClassificationScoresFeatureChannel Nazwa kanału funkcji z binarnymi wynikami klasyfikacji
MulticlassClassificationScoresFeatureChannel Nazwa kanału funkcji z wynikami klasyfikacji wieloklasowej
OrdinalRegressionScoresFeatureChannel Nazwa kanału funkcji z wynikami regresji porządkowej
RegressionScoresFeatureChannel Nazwa kanału funkcji z wynikami regresji

Przykłady

Aby uzyskać dodatkowe przykłady użycia tego modułu w eksperymentach uczenia maszynowego, zobacz Azure AI Gallery.

Oczekiwane dane wejściowe

Nazwa Typ Opis
Skrypt instruktora R Skrypt Skrypt w języku R, który przyjmuje zestaw danych jako dane wejściowe i wyprowadza nieprzetrenowany model.
Skrypt R scorer Skrypt Skrypt w języku R, który przyjmuje model i zestaw danych jako dane wejściowe i wyprowadza wyniki określone w skrypcie.

Dane wyjściowe

Nazwa Typ Opis
Model ILearner, interfejs Nie wytrenowany model

Zobacz też

Wykonywanie skryptu języka R
Moduły języka R