rxNeuralNet: Neural Net

Jaringan neural untuk pemodelan regresi dan untuk klasifikasi Biner dan multi-kelas.

Penggunaan

  rxNeuralNet(formula = NULL, data, type = c("binary", "multiClass",
    "regression"), numHiddenNodes = 100, numIterations = 100,
    optimizer = sgd(), netDefinition = NULL, initWtsDiameter = 0.1,
    maxNorm = 0, acceleration = c("sse", "gpu"), miniBatchSize = 1,
    normalize = "auto", mlTransforms = NULL, mlTransformVars = NULL,
    rowSelection = NULL, transforms = NULL, transformObjects = NULL,
    transformFunc = NULL, transformVars = NULL, transformPackages = NULL,
    transformEnvir = NULL, blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 1,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

Argumen

formula

Rumus seperti yang dijelaskan dalam rxFormula. Istilah interaksi dan F() saat ini tidak didukung di MicrosoftML.

data

Objek sumber data atau string karakter yang menentukan file .xdf atau objek bingkai data.

type

String karakter yang menunjukkan jenis Pohon Cepat:

  • "binary" untuk jaringan neural klasifikasi biner default.
  • "multiClass" untuk jaringan neural klasifikasi multi-kelas.
  • "regression" untuk jaringan neural regresi.

numHiddenNodes

Jumlah default node tersembunyi di neural net. Nilai defaultnya adalah 100.

numIterations

Jumlah perulangan pada set pelatihan penuh. Nilai defaultnya adalah 100.

optimizer

Daftar yang menentukan algoritma pengoptimalan sgd atau adaptive . Daftar ini dapat dibuat menggunakan sgd atau adaDeltaSgd. Nilai defaultnya adalah sgd.

netDefinition

Definisi Net# dari struktur jaringan neural. Untuk informasi selengkapnya tentang bahasa Net#, lihat Reference Guide

initWtsDiameter

Mengatur diameter bobot awal yang menentukan rentang dari mana nilai digambar untuk bobot pembelajaran awal. Bobot diinisialisasi secara acak dari dalam rentang ini. Nilai defaultnya adalah 0,1.

maxNorm

Menentukan batas atas untuk membatasi norma vektor berat masuk di setiap unit tersembunyi. Ini bisa sangat penting dalam jaringan neural maxout serta dalam kasus di mana pelatihan menghasilkan bobot yang tidak terbatas.

acceleration

Menentukan jenis akselerasi perangkat keras yang akan digunakan. Nilai yang mungkin adalah "sse" dan "gpu". Untuk akselerasi GPU, disarankan untuk menggunakan miniBatchSize yang lebih besar dari satu. Jika Anda ingin menggunakan akselerasi GPU, diperlukan langkah-langkah penyiapan manual tambahan:

  • Unduh dan instal NVidia CUDA Toolkit 6.5 (CUDA Toolkit).
  • Unduh dan instal Pustaka NVidia cuDNN v2 (cudnn Library).
  • Temukan direktori libs paket MicrosoftRML dengan memanggil system.file("mxLibs/x64", package = "MicrosoftML").
  • Salin cublas64_65.dll, cudart64_65.dll, dan cusparse64_65.dll dari CUDA Toolkit 6.5 ke direktori libs paket MicrosoftML.
  • Salin cudnn64_65.dll dari Pustaka cuDNN v2 ke direktori libs paket MicrosoftML.

miniBatchSize

Mengatur ukuran batch mini. Nilai yang disarankan adalah antara 1 dan 256. Parameter ini hanya digunakan ketika akselerasinya adalah GPU. Mengatur parameter ini ke nilai yang lebih tinggi meningkatkan kecepatan pelatihan, tetapi mungkin berdampak negatif pada akurasi. Nilai default adalah 1.

normalize

Menentukan jenis normalisasi otomatis yang digunakan:

  • "auto": jika normalisasi diperlukan, itu dilakukan secara otomatis. Ini adalah pilihan default.
  • "no": tidak ada normalisasi yang dilakukan.
  • "yes": normalisasi dilakukan.
  • "warn": jika normalisasi diperlukan, pesan peringatan ditampilkan, tetapi normalisasi tidak dilakukan.
    Normalisasi menskalakan ulang rentang data yang berbeda dengan skala standar. Penskalaan fitur memastikan jarak antara titik data proporsional dan memungkinkan berbagai metode pengoptimalan seperti penurunan gradien untuk berkonversi jauh lebih cepat. Jika normalisasi dilakukan, MaxMin normalizer digunakan. Ini menormalkan nilai dalam interval [a, b] di mana -1 <= a <= 0dan b - a = 10 <= b <= 1 . Normalizer ini mempertahankan sparsitas dengan memetakan nol ke nol.

mlTransforms

Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau NULL jika tidak ada transformasi yang akan dilakukan. Lihat featurizeText, categorical, dan categoricalHash, untuk transformasi yang didukung. Transformasi ini dilakukan setelah transformasi R yang ditentukan. Nilai defaultnya adalah NULL.

mlTransformVars

Menentukan vektor karakter nama variabel yang akan digunakan di mlTransforms atau NULL jika tidak ada yang akan digunakan. Nilai defaultnya adalah NULL.

rowSelection

Menentukan baris (pengamatan) dari himpunan data yang akan digunakan oleh model dengan nama variabel logis dari himpunan data (dalam tanda kutip) atau dengan ekspresi logis menggunakan variabel dalam himpunan data. Misalnya, rowSelection = "old" hanya akan menggunakan pengamatan di mana nilai variabel old adalah TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) hanya menggunakan pengamatan di mana nilai age variabel adalah antara 20 dan 65 dan nilai logincome variabel lebih besar dari 10. Pemilihan baris dilakukan setelah memproses transformasi data apa pun (lihat argumen transforms atau transformFunc). Seperti semua ekspresi, rowSelection dapat didefinisikan di luar panggilan fungsi menggunakan fungsi ekspresi.

transforms

Ekspresi formulir list(name = expression, ``...) yang mewakili putaran pertama transformasi variabel. Seperti semua ekspresi, transforms (atau rowSelection) dapat didefinisikan di luar panggilan fungsi menggunakan fungsi ekspresi.

transformObjects

Daftar bernama yang berisi objek yang dapat dirujuk oleh transforms, transformsFunc, dan rowSelection.

transformFunc

Fungsi transformasi variabel. Lihat rxTransform untuk detailnya.

transformVars

Vektor karakter variabel himpunan data input yang diperlukan untuk fungsi transformasi. Lihat rxTransform untuk detailnya.

transformPackages

Vektor karakter yang menentukan paket R tambahan (di luar yang ditentukan dalam rxGetOption("transformPackages")) agar tersedia dan dimuat sebelumnya untuk digunakan dalam fungsi transformasi variabel. Misalnya, yang secara eksplisit didefinisikan dalam fungsi RevoScaleR melalui argumen dan transformFunc mereka transforms atau yang didefinisikan secara implisit melalui argumen atau rowSelection merekaformula. Argumen transformPackages mungkin juga NULL, menunjukkan bahwa tidak ada paket di luar rxGetOption("transformPackages") yang dimuat sebelumnya.

transformEnvir

Lingkungan yang ditentukan pengguna untuk berfungsi sebagai induk untuk semua lingkungan yang dikembangkan secara internal dan digunakan untuk transformasi data variabel. Jika transformEnvir = NULL, lingkungan "hash" baru dengan induk baseenv() digunakan sebagai gantinya.

blocksPerRead

Menentukan jumlah blok yang akan dibaca untuk setiap potongan data yang dibaca dari sumber data.

reportProgress

Nilai bilangan bulat yang menentukan tingkat pelaporan pada kemajuan pemrosesan baris:

  • 0: tidak ada kemajuan yang dilaporkan.
  • 1: jumlah baris yang diproses dicetak dan diperbarui.
  • 2: baris yang diproses dan waktu dilaporkan.
  • 3: baris yang diproses dan semua waktu dilaporkan.

verbose

Nilai bilangan bulat yang menentukan jumlah output yang diinginkan. Jika 0, tidak ada output verbose yang dicetak selama perhitungan. Nilai bilangan bulat dari 1 untuk 4 memberikan jumlah informasi yang meningkat.

computeContext

Mengatur konteks di mana komputasi dijalankan, ditentukan dengan RxComputeContext yang valid. Saat ini konteks komputasi lokal dan RxInSqlServer didukung.

ensemble

Parameter kontrol untuk ansambel.

...

Argumen tambahan yang akan diteruskan langsung ke Microsoft Compute Engine.

Detail

Jaringan neural adalah kelas model prediksi yang terinspirasi oleh otak manusia. Jaringan neural dapat direpresentasikan sebagai grafik terarah tertimbang. Setiap simpul dalam grafik disebut neuron. Neuron dalam grafik diatur dalam lapisan, di mana neuron dalam satu lapisan dihubungkan oleh tepi tertimbang (berat bisa 0 atau angka positif) ke neuron di lapisan berikutnya. Lapisan pertama disebut lapisan input, dan setiap neuron di lapisan input sesuai dengan salah satu fitur. Lapisan terakhir fungsi disebut lapisan output. Jadi dalam kasus jaringan neural biner itu berisi dua neuron output, satu untuk setiap kelas, yang nilainya adalah probabilitas milik setiap kelas. Lapisan yang tersisa disebut lapisan tersembunyi. Nilai neuron di lapisan tersembunyi dan di lapisan output diatur dengan menghitung jumlah tertimbang nilai neuron di lapisan sebelumnya dan menerapkan fungsi aktivasi ke jumlah tertimbang tersebut. Model jaringan neural didefinisikan oleh struktur grafiknya (yaitu, jumlah lapisan tersembunyi dan jumlah neuron di setiap lapisan tersembunyi), pilihan fungsi aktivasi, dan bobot di tepi grafik. Algoritma jaringan neural mencoba mempelajari bobot optimal pada tepi berdasarkan data pelatihan.

Meskipun jaringan neural dikenal luas untuk digunakan dalam pembelajaran mendalam dan pemodelan masalah kompleks seperti pengenalan gambar, jaringan tersebut juga mudah disesuaikan dengan masalah regresi. Setiap kelas model statistik dapat dianggap sebagai jaringan neural jika mereka menggunakan bobot adaptif dan dapat memperkirakan fungsi non-linier input mereka. Regresi jaringan neural sangat cocok untuk masalah di mana model regresi yang lebih tradisional tidak dapat sesuai dengan solusi.

Nilai

rxNeuralNetrxNeuralNet: objek dengan model terlatih.
NeuralNet: objek spesifikasi pelajar kelas maml untuk pelatih Neural Net.

Catatan

Algoritma ini berutas tunggal dan tidak akan mencoba memuat seluruh himpunan data ke dalam memori.

Penulis

Microsoft Corporation Microsoft Technical Support

Referensi

Wikipedia: Artificial neural network

Lihat juga

rxFastTrees, rxFastForest, rxFastLinear, rxLogisticRegression, rxOneClassSvm, featurizeText, categorical, categoricalHash, rxPredict.mlModel.

Contoh


 # Estimate a binary neural net
 rxNeuralNet1 <- rxNeuralNet(isCase ~ age + parity + education + spontaneous + induced,
                   transforms = list(isCase = case == 1),
                   data = infert)

 # Score to a data frame
 scoreDF <- rxPredict(rxNeuralNet1, data = infert, 
     extraVarsToWrite = "isCase",
     outData = NULL) # return a data frame

 # Compute and plot the Radio Operator Curve and AUC
 roc1 <- rxRoc(actualVarName = "isCase", predVarNames = "Probability", data = scoreDF) 
 plot(roc1)
 rxAuc(roc1)

 #########################################################################
 # Regression neural net

 # Create an xdf file with the attitude data
 myXdf <- tempfile(pattern = "tempAttitude", fileext = ".xdf")
 rxDataStep(attitude, myXdf, rowsPerRead = 50, overwrite = TRUE)
 myXdfDS <- RxXdfData(file = myXdf)

 attitudeForm <- rating ~ complaints + privileges + learning + 
     raises + critical + advance

 # Estimate a regression neural net 
 res2 <- rxNeuralNet(formula = attitudeForm,  data = myXdfDS, 
     type = "regression")

 # Score to data frame
 scoreOut2 <- rxPredict(res2, data = myXdfDS, 
     extraVarsToWrite = "rating")

 # Plot the rating versus the score with a regression line
 rxLinePlot(rating~Score, type = c("p","r"), data = scoreOut2)

 # Clean up   
 file.remove(myXdf)    

 #############################################################################
 # Multi-class neural net
 multiNN <- rxNeuralNet(
     formula = Species~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
     type = "multiClass", data = iris)
 scoreMultiDF <- rxPredict(multiNN, data = iris, 
     extraVarsToWrite = "Species", outData = NULL)    
 # Print the first rows of the data frame with scores
 head(scoreMultiDF)
 # Compute % of incorrect predictions
 badPrediction = scoreMultiDF$Species != scoreMultiDF$PredictedLabel
 sum(badPrediction)*100/nrow(scoreMultiDF)
 # Look at the observations with incorrect predictions
 scoreMultiDF[badPrediction,]