TransMogrifai (prononcé trăns-mŏgˈrə-fī) est une bibliothèque automatique écrite à Scala qui s'exécute sur Apache Spark. Il a été développé en mettant l'accent sur l'accélération de la productivité des développeurs d'apprentissage automatique à travers l'automatisation de l'apprentissage automatique, et une API qui applique la sécurité, la modularité et la réutilisation de type compilé. Grâce à l'automatisation, il atteint des précisions à proximité de modèles réglés à la main avec une réduction de près de 100 fois dans le temps.
Utilisez TransMogrifai si vous avez besoin d'une bibliothèque d'apprentissage automatique pour:
Pour comprendre la motivation derrière TransMogrifai, consultez ces éléments:
Passez au démarrage rapide et à la documentation.
L'ensemble de données Titanic est un ensemble de données souvent cité dans la communauté d'apprentissage automatique. L'objectif est de construire un modèle savant machine qui prédirera les survivants du manifeste du passager Titanic. Voici comment construire le modèle à l'aide de 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())Résumé du modèle:
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 |
|-----------------------|----------------------|
Bien que cela puisse sembler un peu trop magique, pour ceux qui veulent plus de contrôle, TransMogrifai offre également la flexibilité pour spécifier complètement toutes les fonctionnalités extraites et tous les algorithmes appliqués dans votre pipeline ML. Visitez notre site Docs pour la documentation complète, le démarrage, les exemples, la FAQ et d'autres informations.
Vous pouvez simplement ajouter TransMogrifai comme dépendance régulière à un projet existant. Commencez par choisir la version TransMogrifai pour correspondre à vos dépendances de projet dans la matrice de version ci-dessous (si ce n'est pas sûr - prenez la version stable ):
| Version transmogrifai | Version étincelle | Version Scala | Version java |
|---|---|---|---|
| 0.7.1 (sans édiction, maître), 0,7,0 (stable) | 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 |
Pour Gradle in build.gradle Add:
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'
} Pour sbt dans build.sbt ajouter:
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"Importez ensuite TransMogrifai dans votre 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 . _ Visitez notre site Docs pour la documentation complète, le démarrage, les exemples, la FAQ et d'autres informations.
Voir Scaladoc pour l'API de programmation.
BSD 3-CLAUSE © Salesforce.com, Inc.