Date : Oct-2021 v1
Learning Objective
- As AI will soon be everywhere, everyone should have the right skill set to understand an AI model. This tutorial is to demonstrate for beginners how to build Neural Network models in R to solve problems
- Students may follow the instructions and gain hands-on experience buiding an AI model.
- This is a low-code tutorial in R
Tools
- R : R is a programming language and free software environment for statistical computing and graphics supported by the R Foundation for Statistical Computing.
- rstudio.cloud : Studio Cloud is created with an aim to make it easy for professionals, hobbyists, trainers, teachers and students to practice, share, teach and learn data science. In the basic term, RStudio Cloud is a managed cloud instance of the RStudio IDE.
Question Is R language popular?
Question Is Rstudio gaining popularity?
install.packages(pkgs='neuralnet')
Task 1: Install the R package “neuralnet”.
R is a case-sensitive language. Install.packages is incorrect!
A package is a toolbox for doing things for a specific computer language.
In many computer languages, ‘123’ or “123” is a text while 123 is a number.
install.packages is a function. The input of the function is ‘neuralnet’
Question Can we install RStudio IDE on PC?
library(package='neuralnet')
Task 2: Load the package ‘neuralnet’.
The library function is to load a specific package.
Question Do we have to load the package after we start a new R session?
Question Could we load the package twice?
rawdata = "
age , smoking, cancer
35 , 0 , 0
40 , 1 , 0
45 , 0 , 1
55 , 1 , 1"
trainData = read.csv(text=rawdata , header=TRUE)
print(trainData)
Task 3: Data Preparation
We have a small data set (four records).
The meaning of data is self-explanatory.
Question What is csv?
Question How will we find out if a person who is age=50 and smoking=1 will get cancer? (Note that we will not adopt any special math formula or if-then logic)
Question What happens if header=FALSE?
model=neuralnet(formula = cancer~age+smoking ,
data = trainData ,
hidden = 3 ,
stepmax = 1e+05 ,
act.fct = "logistic" ,
linear.output = FALSE )
Task 4: Model
Note 1e+05=100000
Build an artificial neural network model of hidden=3
plot(model)

Task 5: Neural Network’s Structure Diagrams
The model can be visualized as shown above.
Question Where are neurons?
Question Which one is hidden layer?
Question If we re-do Task 4 and Task 5 again, will we get the same model?
Question What happens if we change stepmax=5
predictData=neuralnet::compute(model, data.frame(age=50, smoking=1))
print(predictData)
$neurons
$neurons[[1]]
age smoking
[1,] 1 50 1
$neurons[[2]]
[,1] [,2] [,3] [,4]
[1,] 1 1 0.3459816 0.6057696
$net.result
[,1]
[1,] 0.8800862
Task 6: Prediction
The result value is close to 1
Thus, there is a high chance to get cancer.
Question what about age=43?
Question what about age=100?
Question If we have more training data, will the model be better? Explain.
Exercises
[1] One more variabe, drinking, is added as below
rawdata = "
age , smoking, drinking, cancer
25 , 1 , 1, 0
30 , 1 , 0, 0
35 , 0 , 1, 1
38 , 1 , 1, 1
40 , 1 , 1, 0
45 , 1 , 0, 0
45 , 1 , 1, 0
47 , 0 , 1, 1
49 , 1 , 1, 1
55 , 1 , 1, 1"
Build a model to solve a case that a person who is age=30, smoking=1, drinking=1 may get cancer.
[2] Redo the exercise 1 with the model of hidden=c(3,3)
model=neuralnet(formula = cancer~age+smoking ,
data = trainData ,
hidden = c(3,3) ,
act.fct = "logistic" ,
linear.output = FALSE )
plot(model)
LS0tCnRpdGxlOiAi5Lq65bel5pm66IO955+l6K2Y5Y+K5oeJ55So6K2J5pu477yI5YW86K6A5Yi277yJ5a+m57+S5LiAIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgpEYXRlIDogT2N0LTIwMjEgdjEKCiMjIyBMZWFybmluZyBPYmplY3RpdmUKKiBBcyBBSSB3aWxsIHNvb24gYmUgZXZlcnl3aGVyZSwgZXZlcnlvbmUgc2hvdWxkIGhhdmUgdGhlIHJpZ2h0IHNraWxsIHNldCB0byB1bmRlcnN0YW5kIGFuIEFJIG1vZGVsLiBUaGlzIHR1dG9yaWFsIGlzIHRvIGRlbW9uc3RyYXRlIGZvciBiZWdpbm5lcnMgaG93IHRvIGJ1aWxkIE5ldXJhbCBOZXR3b3JrIG1vZGVscyBpbiBSIHRvIHNvbHZlIHByb2JsZW1zPGJyPgoqIFN0dWRlbnRzIG1heSBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhbmQgZ2FpbiBoYW5kcy1vbiBleHBlcmllbmNlIGJ1aWRpbmcgYW4gQUkgbW9kZWwuIAoqIFRoaXMgaXMgYSBsb3ctY29kZSB0dXRvcmlhbCBpbiBSCgoKCiMjIyBUb29scwoqIFIgOiBbUl0oaHR0cHM6Ly93d3cuci1wcm9qZWN0Lm9yZy8pIGlzIGEgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgYW5kIGZyZWUgc29mdHdhcmUgZW52aXJvbm1lbnQgZm9yIHN0YXRpc3RpY2FsIGNvbXB1dGluZyBhbmQgZ3JhcGhpY3Mgc3VwcG9ydGVkIGJ5IHRoZSBSIEZvdW5kYXRpb24gZm9yIFN0YXRpc3RpY2FsIENvbXB1dGluZy4KKiBbcnN0dWRpby5jbG91ZF0oaHR0cHM6Ly9yc3R1ZGlvLmNsb3VkLykgOiBTdHVkaW8gQ2xvdWQgaXMgY3JlYXRlZCB3aXRoIGFuIGFpbSB0byBtYWtlIGl0IGVhc3kgZm9yIHByb2Zlc3Npb25hbHMsIGhvYmJ5aXN0cywgdHJhaW5lcnMsIHRlYWNoZXJzIGFuZCBzdHVkZW50cyB0byBwcmFjdGljZSwgc2hhcmUsIHRlYWNoIGFuZCBsZWFybiBkYXRhIHNjaWVuY2UuIEluIHRoZSBiYXNpYyB0ZXJtLCBSU3R1ZGlvIENsb3VkIGlzIGEgbWFuYWdlZCBjbG91ZCBpbnN0YW5jZSBvZiB0aGUgUlN0dWRpbyBJREUuPGJyPgpfX1F1ZXN0aW9uX18gSXMgUiBsYW5ndWFnZSBwb3B1bGFyPyA8YnI+Cl9fUXVlc3Rpb25fXyBJcyBSc3R1ZGlvIGdhaW5pbmcgcG9wdWxhcml0eT8gPGJyPgoKCmBgYHtyfQppbnN0YWxsLnBhY2thZ2VzKHBrZ3M9J25ldXJhbG5ldCcpCgpgYGAKVGFzayAxOiBJbnN0YWxsIHRoZSBbUiBwYWNrYWdlXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SX3BhY2thZ2UpICJbbmV1cmFsbmV0XShodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvbmV1cmFsbmV0L2luZGV4Lmh0bWwpIi48YnI+CjxzcGFuIHN0eWxlPSJjb2xvcjogYnJvd247Ij4gIApSIGlzIGEgY2FzZS1zZW5zaXRpdmUgbGFuZ3VhZ2UuIEluc3RhbGwucGFja2FnZXMgaXMgaW5jb3JyZWN0ISAgICAgICAgICAgICAgPGJyPgpBIHBhY2thZ2UgaXMgYSB0b29sYm94IGZvciBkb2luZyB0aGluZ3MgZm9yIGEgc3BlY2lmaWMgY29tcHV0ZXIgbGFuZ3VhZ2UuICAgPGJyPgpJbiBtYW55IGNvbXB1dGVyIGxhbmd1YWdlcywgJzEyMycgb3IgIjEyMyIgaXMgYSB0ZXh0IHdoaWxlIDEyMyBpcyBhIG51bWJlci4gPGJyPgppbnN0YWxsLnBhY2thZ2VzIGlzIGEgZnVuY3Rpb24uIFRoZSBpbnB1dCBvZiB0aGUgZnVuY3Rpb24gaXMgJ25ldXJhbG5ldCcgCjwvc3Bhbj48YnI+Cl9fUXVlc3Rpb25fXyBDYW4gd2UgaW5zdGFsbCBSU3R1ZGlvIElERSBvbiBQQz8gCiAKCgpgYGB7cn0KbGlicmFyeShwYWNrYWdlPSduZXVyYWxuZXQnKQpgYGAKVGFzayAyOiBMb2FkIHRoZSBwYWNrYWdlICduZXVyYWxuZXQnLjxicj4KPHNwYW4gc3R5bGU9ImNvbG9yOiBicm93bjsiPgpUaGUgbGlicmFyeSBmdW5jdGlvbiBpcyB0byBsb2FkIGEgc3BlY2lmaWMgcGFja2FnZS4KPC9zcGFuPjxicj4KX19RdWVzdGlvbl9fIERvIHdlIGhhdmUgdG8gbG9hZCB0aGUgcGFja2FnZSBhZnRlciB3ZSBzdGFydCBhIG5ldyBSIHNlc3Npb24/PGJyPgpfX1F1ZXN0aW9uX18gQ291bGQgd2UgbG9hZCB0aGUgcGFja2FnZSB0d2ljZT8gPGJyPgoKCgpgYGB7cn0KcmF3ZGF0YSA9ICIKIGFnZSAsIHNtb2tpbmcsIGNhbmNlcgogMzUgICwgIDAgLCAwCiA0MCAgLCAgMSAsIDAKIDQ1ICAsICAwICwgMQogNTUgICwgIDEgLCAxIgoKdHJhaW5EYXRhID0gcmVhZC5jc3YodGV4dD1yYXdkYXRhICwgaGVhZGVyPVRSVUUpCgpwcmludCh0cmFpbkRhdGEpCmBgYApUYXNrIDM6IERhdGEgUHJlcGFyYXRpb248YnI+CldlIGhhdmUgYSBzbWFsbCBkYXRhIHNldCAoZm91ciByZWNvcmRzKS48YnI+ClRoZSBtZWFuaW5nIG9mIGRhdGEgaXMgc2VsZi1leHBsYW5hdG9yeS48YnI+Cl9fUXVlc3Rpb25fXyBXaGF0IGlzIFtjc3ZdKGh0dHBzOi8vd3d3LmJ1c2luZXNzaW5zaWRlci5jb20vd2hhdC1pcy1jc3YtZmlsZSk/PGJyPgpfX1F1ZXN0aW9uX18gSG93IHdpbGwgd2UgZmluZCBvdXQgaWYgYSBwZXJzb24gd2hvIGlzIGFnZT01MCBhbmQgc21va2luZz0xIHdpbGwgZ2V0IGNhbmNlcj8gKE5vdGUgdGhhdCB3ZSB3aWxsIG5vdCBhZG9wdCBhbnkgc3BlY2lhbCBtYXRoIGZvcm11bGEgb3IgaWYtdGhlbiBsb2dpYykgPGJyPgpfX1F1ZXN0aW9uX18gV2hhdCBoYXBwZW5zIGlmIGhlYWRlcj1GQUxTRT8KCgoKYGBge3J9Cm1vZGVsPW5ldXJhbG5ldChmb3JtdWxhICAgICAgID0gIGNhbmNlcn5hZ2Urc21va2luZyAgLAogICAgICAgICAgICAgICAgZGF0YSAgICAgICAgICA9ICB0cmFpbkRhdGEgICAgICAgICAgICwgCiAgICAgICAgICAgICAgICBoaWRkZW4gICAgICAgID0gIDMgICAgICAgICAgICAgICAgICAgLAogICAgICAgICAgICAgICAgc3RlcG1heCAgICAgICA9ICAxZSswNSAgICAgICAgICAgICAgICwgCiAgICAgICAgICAgICAgICBhY3QuZmN0ICAgICAgID0gImxvZ2lzdGljIiAgICAgICAgICAgLAogICAgICAgICAgICAgICAgbGluZWFyLm91dHB1dCA9IEZBTFNFICAgICAgICAgICAgICAgICkKYGBgCgpUYXNrIDQ6IE1vZGVsPGJyPgo8c3BhbiBzdHlsZT0iY29sb3I6IGJyb3duOyI+ICBOb3RlIDFlKzA1PTEwMDAwMCAgPC9zcGFuPjxicj4KQnVpbGQgYW4gYXJ0aWZpY2lhbCBuZXVyYWwgbmV0d29yayBtb2RlbCBvZiBoaWRkZW49MwoKCmBgYHtyfQpwbG90KG1vZGVsKQpgYGAKVGFzayA1OiBOZXVyYWwgTmV0d29yaydzIFN0cnVjdHVyZSBEaWFncmFtczxicj4KVGhlIG1vZGVsIGNhbiBiZSB2aXN1YWxpemVkIGFzIHNob3duIGFib3ZlLjxicj4KX19RdWVzdGlvbl9fIFdoZXJlIGFyZSBbbmV1cm9uc10oaHR0cHM6Ly90b3dhcmRzZGF0YXNjaWVuY2UuY29tL3RoZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLWFydGlmaWNpYWwtYW5kLWJpb2xvZ2ljYWwtbmV1cmFsLW5ldHdvcmtzLWE4YjQ2ZGI4MjhiNyk/PGJyPiAKX19RdWVzdGlvbl9fIFdoaWNoIG9uZSBpcyBoaWRkZW4gbGF5ZXI/PGJyPgpfX1F1ZXN0aW9uX18gSWYgd2UgcmUtZG8gVGFzayA0IGFuZCBUYXNrIDUgYWdhaW4sIHdpbGwgd2UgZ2V0IHRoZSBzYW1lIG1vZGVsPyA8YnI+Cl9fUXVlc3Rpb25fXyBXaGF0IGhhcHBlbnMgaWYgd2UgY2hhbmdlIHN0ZXBtYXg9NTxicj4KCmBgYHtyfQpwcmVkaWN0RGF0YT1uZXVyYWxuZXQ6OmNvbXB1dGUobW9kZWwsIGRhdGEuZnJhbWUoYWdlPTUwLCBzbW9raW5nPTEpKQpwcmludChwcmVkaWN0RGF0YSkKYGBgCgpUYXNrIDY6IFByZWRpY3Rpb248YnI+ClRoZSByZXN1bHQgdmFsdWUgaXMgY2xvc2UgdG8gMTxicj4KVGh1cywgdGhlcmUgaXMgYSBoaWdoIGNoYW5jZSB0byBnZXQgY2FuY2VyLjxicj4KX19RdWVzdGlvbl9fIHdoYXQgYWJvdXQgYWdlPTQzPzxicj4KX19RdWVzdGlvbl9fIHdoYXQgYWJvdXQgYWdlPTEwMD88YnI+Cl9fUXVlc3Rpb25fXyBJZiB3ZSBoYXZlIG1vcmUgdHJhaW5pbmcgZGF0YSwgd2lsbCB0aGUgbW9kZWwgYmUgYmV0dGVyPyBFeHBsYWluLjxicj4KCiMjIyBFeGVyY2lzZXMKWzFdIE9uZSBtb3JlIHZhcmlhYmUsIGRyaW5raW5nLCBpcyBhZGRlZCBhcyBiZWxvdzxicj4KCmBgYHtyfQoKcmF3ZGF0YSA9ICIKIGFnZSAsIHNtb2tpbmcsIGRyaW5raW5nLCBjYW5jZXIKIDI1ICAsICAxICwgMSwgMAogMzAgICwgIDEgLCAwLCAwCiAzNSAgLCAgMCAsIDEsIDEKIDM4ICAsICAxICwgMSwgMQogNDAgICwgIDEgLCAxLCAwCiA0NSAgLCAgMSAsIDAsIDAKIDQ1ICAsICAxICwgMSwgMAogNDcgICwgIDAgLCAxLCAxCiA0OSAgLCAgMSAsIDEsIDEKIDU1ICAsICAxICwgMSwgMSIKYGBgCkJ1aWxkIGEgbW9kZWwgdG8gc29sdmUgYSBjYXNlIHRoYXQgYSBwZXJzb24gd2hvIGlzIGFnZT0zMCwgc21va2luZz0xLCBkcmlua2luZz0xIG1heSBnZXQgY2FuY2VyLgo8YnI+Cjxicj4KPGJyPgo8YnI+ClsyXSBSZWRvIHRoZSBleGVyY2lzZSAxIHdpdGggdGhlIG1vZGVsIG9mIGhpZGRlbj1jKDMsMykKYGBge3J9Cm1vZGVsPW5ldXJhbG5ldChmb3JtdWxhICAgICAgID0gY2FuY2VyfmFnZStzbW9raW5nICwKICAgICAgICAgICAgICAgIGRhdGEgICAgICAgICAgPSB0cmFpbkRhdGEgICAgICAgICAgLCAKICAgICAgICAgICAgICAgIGhpZGRlbiAgICAgICAgPSBjKDMsMykgICAgICAgICAgICAgLAogICAgICAgICAgICAgICAgYWN0LmZjdCAgICAgICA9ICJsb2dpc3RpYyIgICAgICAgICAsCiAgICAgICAgICAgICAgICBsaW5lYXIub3V0cHV0ID0gRkFMU0UgICAgICAgICAgICAgICkKcGxvdChtb2RlbCkKYGBgCgo8YnI+CgojIyMgUmVmZXJlbmNlCgpbMV0gV2hlbmV2ZXIgaSBydW4gbXkgbmV1cmFsIG5ldHdvcmsgSSBnZXQgZGlmZmVyZW50IHJlc3VsdC48YnI+Cmh0dHBzOi8vd3d3LnJlc2VhcmNoZ2F0ZS5uZXQvcG9zdC9XaGVuZXZlci1pLXJ1bi1teS1uZXVyYWwtbmV0d29yay1JLWdldC1kaWZmZXJlbnQtcmVzdWx0PGJyPgpbMl0gV2hhdCBJcyBSU3R1ZGlvIENsb3VkIEFuZCBXaHkgSXMgSXQgR2FpbmluZyBQb3B1bGFyaXR5PGJyPgpodHRwczovL2FuYWx5dGljc2luZGlhbWFnLmNvbS93aGF0LWlzLXJzdHVkaW8tY2xvdWQtYW5kLXdoeS1pcy1pdC1nYWluaW5nLXBvcHVsYXJpdHkvIDxicj4KWzNdIFIgZm9yIEVjb25vbWljcyBhbmQgRmluYW5jZTogR2V0dGluZyByZXNlYXJjaCBkYXRhPGJyPgpodHRwOi8vcnN0dWRpby1wdWJzLXN0YXRpYy5zMy5hbWF6b25hd3MuY29tLzQxMjc0X2I4ODg3OTRjOTViODRlNmI5MzdjMTA5OTIwMjM4MGM0Lmh0bWw8YnI+Cls0XSBuZXVyYWxuZXQ8YnI+Cmh0dHBzOi8vZ2l0aHViLmNvbS9jcmFuL25ldXJhbG5ldC90cmVlL21hc3Rlci9SPGJyPgoK