Metode klasifikasi yang digunakan adalah metode neural network dengan penggunaan satu hiden layer. Membaca data

data=read.csv('RestaurantTips.csv',sep=",",header=TRUE)
data
##    no CustomerWillTip Service Ambience Food TipOrNo
## 1   1               1       4        4    5     Tip
## 2   2               1       6        4    4     Tip
## 3   3               1       5        2    4     Tip
## 4   4               1       6        5    5     Tip
## 5   5               1       6        3    4     Tip
## 6   6               1       3        4    5     Tip
## 7   7               1       5        5    5     Tip
## 8   8               1       5        4    4     Tip
## 9   9               1       7        6    4     Tip
## 10 10               1       7        6    4     Tip
## 11 11               1       6        7    2     Tip
## 12 12               1       5        6    4     Tip
## 13 13               1       7        3    3     Tip
## 14 14               1       5        1    4     Tip
## 15 15               1       7        5    5     Tip
## 16 16               0       3        1    3  No-tip
## 17 17               0       4        6    2  No-tip
## 18 18               0       2        5    2  No-tip
## 19 19               0       5        2    4  No-tip
## 20 20               0       4        1    3  No-tip
## 21 21               0       3        3    4  No-tip
## 22 22               0       3        4    5  No-tip
## 23 23               0       3        6    3  No-tip
## 24 24               0       4        4    2  No-tip
## 25 25               0       6        3    6  No-tip
## 26 26               0       3        6    3  No-tip
## 27 27               0       4        3    2  No-tip
## 28 28               0       3        5    2  No-tip
## 29 29               0       5        5    3  No-tip
## 30 30               0       1        3    2  No-tip

Melihat struktur data dan statistika dari data.

str(data)
## 'data.frame':    30 obs. of  6 variables:
##  $ no             : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ CustomerWillTip: int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Service        : int  4 6 5 6 6 3 5 5 7 7 ...
##  $ Ambience       : int  4 4 2 5 3 4 5 4 6 6 ...
##  $ Food           : int  5 4 4 5 4 5 5 4 4 4 ...
##  $ TipOrNo        : Factor w/ 2 levels "No-tip","Tip": 2 2 2 2 2 2 2 2 2 2 ...
summary(data)
##        no        CustomerWillTip    Service         Ambience    
##  Min.   : 1.00   Min.   :0.0     Min.   :1.000   Min.   :1.000  
##  1st Qu.: 8.25   1st Qu.:0.0     1st Qu.:3.000   1st Qu.:3.000  
##  Median :15.50   Median :0.5     Median :5.000   Median :4.000  
##  Mean   :15.50   Mean   :0.5     Mean   :4.567   Mean   :4.067  
##  3rd Qu.:22.75   3rd Qu.:1.0     3rd Qu.:6.000   3rd Qu.:5.000  
##  Max.   :30.00   Max.   :1.0     Max.   :7.000   Max.   :7.000  
##       Food       TipOrNo  
##  Min.   :2.0   No-tip:15  
##  1st Qu.:3.0   Tip   :15  
##  Median :4.0              
##  Mean   :3.6              
##  3rd Qu.:4.0              
##  Max.   :6.0

Membuat data training dan testing.

train = data[1:25,]
head(train)
##   no CustomerWillTip Service Ambience Food TipOrNo
## 1  1               1       4        4    5     Tip
## 2  2               1       6        4    4     Tip
## 3  3               1       5        2    4     Tip
## 4  4               1       6        5    5     Tip
## 5  5               1       6        3    4     Tip
## 6  6               1       3        4    5     Tip
test = data[26:30,]
head(test)
##    no CustomerWillTip Service Ambience Food TipOrNo
## 26 26               0       3        6    3  No-tip
## 27 27               0       4        3    2  No-tip
## 28 28               0       3        5    2  No-tip
## 29 29               0       5        5    3  No-tip
## 30 30               0       1        3    2  No-tip

Membuat model Neural Network single hiden layer

library(NeuralNetTools)
library(nnet)
model=nnet(CustomerWillTip~Service+Ambience+Food, 
           data=train, 
           size =10,
           rang=0.1,
           decay=5e-2, 
           maxit=5000)
## # weights:  51
## initial  value 6.253388 
## iter  10 value 5.185513
## iter  20 value 4.657975
## iter  30 value 4.462501
## iter  40 value 4.298093
## iter  50 value 4.270948
## iter  60 value 4.267003
## iter  70 value 4.266722
## iter  80 value 4.266704
## final  value 4.266704 
## converged

Bentuk model Neural Network single hiden layer

plotnet(model)

Menguji model dengan data testing dan hasil yang didapat

pred <- predict(model,test)
pred <- ifelse(pred>0.5, 1, 0)
test$pred <- pred
test
##    no CustomerWillTip Service Ambience Food TipOrNo pred
## 26 26               0       3        6    3  No-tip    0
## 27 27               0       4        3    2  No-tip    1
## 28 28               0       3        5    2  No-tip    0
## 29 29               0       5        5    3  No-tip    1
## 30 30               0       1        3    2  No-tip    0

Akurasi dari pada data test

mean(test$pred==test$CustomerWillTip)
## [1] 0.6