Transmogrifai (ausgesprochen Trăns-mŏgˈrə-fī) ist eine Automl-Bibliothek, die in Scala geschrieben wurde, die auf Apache Spark ausgeführt wird. Es wurde mit Schwerpunkt auf der Beschleunigung der Produktivität des maschinellen Lernentwicklers durch maschinelles Lernautomation und einer API entwickelt, die die Typensicherheit, Modularität und Wiederverwendung von Kompilierzeit erzwingt. Durch die Automatisierung erreicht es Genauigkeiten in der Nähe von handgeschnittenen Modellen mit einer Zeitverringerung von fast 100x.
Verwenden Sie Transmogrifai, wenn Sie eine Bibliothek für maschinelles Lernen benötigen, um:
Um die Motivation hinter transmogrifai zu verstehen, schauen Sie sich diese an:
Überspringen Sie zum schnellen Start und zu einer Dokumentation.
Der Titanic-Datensatz ist ein häufig zitierter Datensatz in der Community für maschinelles Lernen. Das Ziel ist es, ein maschinenfreies Modell zu bauen, das Überlebende des titanischen Passagiermanifests vorhersagt. So erstellen Sie das Modell mit Transmogrifai:
import com . salesforce . op . _
import com . salesforce . op . readers . _
import com . salesforce . op . features . _
import com . salesforce . op . features . types . _
import com . salesforce . op . stages . impl . classification . _
import org . apache . spark . SparkConf
import org . apache . spark . sql . SparkSession
implicit val spark = SparkSession .builder.config( new SparkConf ()).getOrCreate()
import spark . implicits . _
// Read Titanic data as a DataFrame
val passengersData = DataReaders . Simple .csvCase[ Passenger ](path = pathToData).readDataset().toDF()
// Extract response and predictor Features
val (survived, predictors) = FeatureBuilder .fromDataFrame[ RealNN ](passengersData, response = " survived " )
// Automated feature engineering
val featureVector = predictors.transmogrify()
// Automated feature validation and selection
val checkedFeatures = survived.sanityCheck(featureVector, removeBadFeatures = true )
// Automated model selection
val pred = BinaryClassificationModelSelector ().setInput(survived, checkedFeatures).getOutput()
// Setting up a TransmogrifAI workflow and training the model
val model = new OpWorkflow ().setInputDataset(passengersData).setResultFeatures(pred).train()
println( " Model summary: n " + model.summaryPretty())Modellzusammenfassung:
Evaluated Logistic Regression, Random Forest models with 3 folds and AuPR metric.
Evaluated 3 Logistic Regression models with AuPR between [0.6751930383321765, 0.7768725281794376]
Evaluated 16 Random Forest models with AuPR between [0.7781671467343991, 0.8104798040316159]
Selected model Random Forest classifier with parameters:
|-----------------------|--------------|
| Model Param | Value |
|-----------------------|--------------|
| modelType | RandomForest |
| featureSubsetStrategy | auto |
| impurity | gini |
| maxBins | 32 |
| maxDepth | 12 |
| minInfoGain | 0.001 |
| minInstancesPerNode | 10 |
| numTrees | 50 |
| subsamplingRate | 1.0 |
|-----------------------|--------------|
Model evaluation metrics:
|-------------|--------------------|---------------------|
| Metric Name | Hold Out Set Value | Training Set Value |
|-------------|--------------------|---------------------|
| Precision | 0.85 | 0.773851590106007 |
| Recall | 0.6538461538461539 | 0.6930379746835443 |
| F1 | 0.7391304347826088 | 0.7312186978297163 |
| AuROC | 0.8821603927986905 | 0.8766642291593114 |
| AuPR | 0.8225075757571668 | 0.850331080886535 |
| Error | 0.1643835616438356 | 0.19682151589242053 |
| TP | 17.0 | 219.0 |
| TN | 44.0 | 438.0 |
| FP | 3.0 | 64.0 |
| FN | 9.0 | 97.0 |
|-------------|--------------------|---------------------|
Top model insights computed using correlation:
|-----------------------|----------------------|
| Top Positive Insights | Correlation |
|-----------------------|----------------------|
| sex = "female" | 0.5177801026737666 |
| cabin = "OTHER" | 0.3331391338844782 |
| pClass = 1 | 0.3059642953159715 |
|-----------------------|----------------------|
| Top Negative Insights | Correlation |
|-----------------------|----------------------|
| sex = "male" | -0.5100301587292186 |
| pClass = 3 | -0.5075774968534326 |
| cabin = null | -0.31463114463832633 |
|-----------------------|----------------------|
Top model insights computed using CramersV:
|-----------------------|----------------------|
| Top Insights | CramersV |
|-----------------------|----------------------|
| sex | 0.525557139885501 |
| embarked | 0.31582347194683386 |
| age | 0.21582347194683386 |
|-----------------------|----------------------|
Während dies etwas zu magisch erscheint, bietet Transmogrifai für diejenigen, die mehr Kontrolle haben, auch die Flexibilität, alle Merkmale, die extrahiert werden, und alle Algorithmen, die in Ihrer ML -Pipeline angewendet werden, vollständig angeben. Besuchen Sie unsere DOCS -Website für vollständige Dokumentation, Erste Schritte, Beispiele, FAQ und andere Informationen.
Sie können transmogrifai einfach als regelmäßige Abhängigkeit zu einem vorhandenen Projekt hinzufügen. Beginnen Sie mit der Auswahl der Transmogrifai -Version, die Ihren Projektabhängigkeiten aus der Versionsmatrix unten übereinstimmt (wenn nicht sicher - die stabile Version nehmen):
| Transmogrifai -Version | Funkenversion | Scala -Version | Java -Version |
|---|---|---|---|
| 0,7,1 (unveröffentlicht, Master), 0,7,0 (stabil) | 2.4 | 2.11 | 1.8 |
| 0,6,1, 0,6,0, 0,5,3, 0,5,2, 0,5,1, 0,5,0 | 2.3 | 2.11 | 1.8 |
| 0.4.0, 0.3.4 | 2.2 | 2.11 | 1.8 |
Für Gradle in build.gradle hinzufügen:
repositories {
jcenter()
mavenCentral()
}
dependencies {
// TransmogrifAI core dependency
compile ' com.salesforce.transmogrifai:transmogrifai-core_2.11:0.7.0 '
// TransmogrifAI pretrained models, e.g. OpenNLP POS/NER models etc. (optional)
// compile 'com.salesforce.transmogrifai:transmogrifai-models_2.11:0.7.0'
} Für SBT in build.sbt hinzufügen:
scalaVersion : = " 2.11.12 "
resolvers + = Resolver .jcenterRepo
// TransmogrifAI core dependency
libraryDependencies + = " com.salesforce.transmogrifai " %% " transmogrifai-core " % " 0.7.0 "
// TransmogrifAI pretrained models, e.g. OpenNLP POS/NER models etc. (optional)
// libraryDependencies += "com.salesforce.transmogrifai" %% "transmogrifai-models" % "0.7.0"Importieren Sie dann Transmogrifai in Ihren Code:
// TransmogrifAI functionality: feature types, feature builders, feature dsl, readers, aggregators etc.
import com . salesforce . op . _
import com . salesforce . op . aggregators . _
import com . salesforce . op . features . _
import com . salesforce . op . features . types . _
import com . salesforce . op . readers . _
// Spark enrichments (optional)
import com . salesforce . op . utils . spark . RichDataset . _
import com . salesforce . op . utils . spark . RichRDD . _
import com . salesforce . op . utils . spark . RichRow . _
import com . salesforce . op . utils . spark . RichMetadata . _
import com . salesforce . op . utils . spark . RichStructType . _ Besuchen Sie unsere DOCS -Website für vollständige Dokumentation, Erste Schritte, Beispiele, FAQ und andere Informationen.
Siehe Scaladoc für die Programmierapi.
BSD 3-Clause © Salesforce.com, Inc.