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 <= 0
danb - a = 1
0 <= 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 log
income
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
rxNeuralNet
rxNeuralNet
: 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,]