{"cells":[{"metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","trusted":true},"cell_type":"code","source":"# This R environment comes with many helpful analytics packages installed\n# It is defined by the kaggle/rstats Docker image: https://github.com/kaggle/docker-rstats\n# For example, here's a helpful package to load\n\nlibrary(randomForest)\nlibrary(missForest)\nlibrary(tidyverse)\nlibrary(DataExplorer) \nlibrary(magrittr)\nlibrary(lubridate)\nlibrary(ggpubr)\nlibrary(ggthemes)\nlibrary(countrycode)\nlibrary(highcharter)\nlibrary(PerformanceAnalytics)\nlibrary(pROC)\nlibrary(ROCR)\nlibrary(keras)\nlibrary(mltools)\nlibrary(data.table)\nlibrary(pscl)\nlibrary(survey)\nlibrary(caret)\nlibrary(MLmetrics)\nlibrary(rpart)\nlibrary(EnvStats)\nlibrary(DMwR)\nlibrary(sampleSelection)\nlibrary(doParallel) \n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data <- read_csv(\"../input/r-quick-start-and-setup-1-4gb-to-242mb/train.min.csv\")\n\ndim(data) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data %>% plot_missing","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"clean_up <- function(df) {\n    df %<>%\n    mutate_at(c(\"hits\",\"transactionRevenue\", \"pageviews\", \"visitNumber\"), as.integer) %>%\n    mutate_at(c(\"fullVisitorId\",\"sessionId\",\"visitId\"), as.character) %>%\n    mutate(\n         newVisits = ifelse(is.na(newVisits), 0, 1),\n         bounces = ifelse(is.na(bounces), 0, 1),\n         transacted = ifelse(is.na(transactionRevenue), 0, 1),\n         transactionRevenue = ifelse(is.na(transactionRevenue), 0, transactionRevenue),\n         isTrueDirect = ifelse(is.na(isTrueDirect), 0, 1),\n         isMobile = ifelse(isMobile == TRUE, 1, 0),\n         date = ymd(date),\n         visitStartTime = as.POSIXct(visitStartTime, tz=\"UTC\", origin='1970-01-01'),\n         medium = ifelse(is.na(medium), \"None\", medium),\n         referralPath = ifelse(is.na(referralPath), \"None\", referralPath),\n         pageviews = ifelse(is.na(pageviews), 0, pageviews)\n    ) %>%\n    mutate_at(c(\"channelGrouping\",\"browser\",\"operatingSystem\",\n                \"deviceCategory\",\"continent\",\"subContinent\",\"country\",\"medium\", \"source\", \"referralPath\", \"newVisits\", \"isMobile\", \"isTrueDirect\", \"transacted\"), as.factor) %>%\n    mutate_at(vars(channelGrouping,browser,operatingSystem,deviceCategory,continent,subContinent,country,medium,source,referralPath), funs(fct_lump(., n = 10))) %>%\n    select(-starts_with(\"adwordsClickInfo\"), -visits, -adContent, -keyword, -campaign, -metro, -region, -city, -networkDomain)\n    \n    na_rows <- df %>% mutate(row_no = 1:n()) %>% filter_all(any_vars(is.na(.))) %>% select(row_no)\n        \n    message(paste0(\"Removed \",nrow(na_rows), \" rows with Invalid values.\"))\n    \n    df <- df[-na_rows$row_no,]\n    \n    return(df)\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data <- clean_up(data)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"set.seed(0)\n\nindex = sample(1:nrow(data), nrow(data)*0.5)\n\ntrain = data[index,]\ntest = data[-index,]\n\ndim(train)\ndim(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"balanced_data <- SMOTE(transacted ~ ., data=as.data.frame(data %>% select(-where(is.character), -visitStartTime, -date)), perc.over = 100)\n\ndim(balanced_data)\ntrain_transacted <- balanced_data %>% filter(transacted == 1)\ntrain_not_transacted <- balanced_data %>% filter(transacted == 0)\n\ndim(train_transacted)\ndim(train_not_transacted)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train <- balanced_data","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train %>% \nfilter(transactionRevenue > 0 ) %>% \nggplot(aes(x=transactionRevenue)) + \ngeom_histogram(aes(y=..density..), binwidth=1,  colour=\"black\", fill=\"white\") +\nstat_overlay_normal_density(color = \"red\") +\nlabs(x = \"log1p(transactionRevenue)\") +\n  theme_minimal()\n\ntrain %>% \nmutate(transactionRevenue = exp(transactionRevenue) - 1 ) %>% \nggplot(aes(x=transactionRevenue)) + \ngeom_histogram(aes(y=..density..), binwidth=1e8,  colour=\"black\", fill=\"white\") +\nlabs(x = \"transactionRevenue\")+\n  theme_minimal()\n\ntrain %>% \nfilter(transactionRevenue > 0 ) %>% \nmutate(transactionRevenue = exp(transactionRevenue) - 1 ) %>% \nggplot(aes(x=transactionRevenue)) + \ngeom_histogram(aes(y=..density..), binwidth=1e8,  colour=\"black\", fill=\"white\") +\nlabs(x = \"transactionRevenue\")+\n  theme_minimal()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train %>% \n  group_by(visitNumber) %>% \n  summarize(revenue = sum(transactionRevenue), .groups = 'drop') %>% \n  ggplot(aes(x = visitNumber, y = revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  scale_x_continuous(breaks=c(1, 3, 5, 10, 15, 25, 50), limits=c(0, 50)) +\n  theme_minimal()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- train %>% \n  group_by(channelGrouping) %>% \n  summarize(mean_revenue = mean(transactionRevenue)) %>% \n  mutate(channelGrouping = reorder(channelGrouping, -mean_revenue)) %>% \n  ggplot(aes(channelGrouping, mean_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal() + \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np2 <- train %>% \n  group_by(channelGrouping) %>% \n  summarize(visits = n()) %>% \n  mutate(channelGrouping = reorder(channelGrouping, -visits)) %>% \n  ggplot(aes(channelGrouping, visits)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\n\np3 <- train %>% \n  group_by(channelGrouping) %>% \n  summarize(total_revenue = sum(transactionRevenue)) %>% \n  mutate(channelGrouping = reorder(channelGrouping, -total_revenue)) %>% \n  ggplot(aes(channelGrouping, total_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- train %>% \n  group_by(deviceCategory) %>% \n  summarize(mean_revenue = mean(transactionRevenue)) %>% \n  mutate(deviceCategory = reorder(deviceCategory, -mean_revenue)) %>% \n  ggplot(aes(deviceCategory, mean_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal() + \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np2 <- train %>% \n  group_by(deviceCategory) %>% \n  summarize(visits = n()) %>% \n  mutate(deviceCategory = reorder(deviceCategory, -visits)) %>% \n  ggplot(aes(deviceCategory, visits)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\n\np3 <- train %>% \n  group_by(deviceCategory) %>% \n  summarize(total_revenue = sum(transactionRevenue)) %>% \n  mutate(deviceCategory = reorder(deviceCategory, -total_revenue)) %>% \n  ggplot(aes(deviceCategory, total_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- train %>% \n  group_by(continent) %>% \n  summarize(mean_revenue = mean(transactionRevenue)) %>% \n  mutate(continent = reorder(continent, -mean_revenue)) %>% \n  ggplot(aes(continent, mean_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal() + \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np2 <- train %>% \n  group_by(continent) %>% \n  summarize(visits = n()) %>% \n  mutate(continent = reorder(continent, -visits)) %>% \n  ggplot(aes(continent, visits)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\n\np3 <- train %>% \n  group_by(continent) %>% \n  summarize(total_revenue = sum(transactionRevenue)) %>% \n  mutate(continent = reorder(continent, -total_revenue)) %>% \n  ggplot(aes(continent, total_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- train %>% \n  group_by(source) %>% \n  summarize(mean_revenue = mean(transactionRevenue)) %>% \n  mutate(source = reorder(source, -mean_revenue)) %>% \n  top_n(10) %>%\n  ggplot(aes(source, mean_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal() + \n  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + coord_flip()\n\np2 <- train %>% \n  group_by(source) %>% \n  summarize(visits = n()) %>% \n  mutate(source = reorder(source, -visits)) %>% \n  top_n(10) %>%\n  ggplot(aes(source, visits)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))  + coord_flip()\n\n\np3 <- train %>% \n  group_by(source) %>% \n  summarize(total_revenue = sum(transactionRevenue)) %>% \n  mutate(source = reorder(source, -total_revenue)) %>% \n  top_n(10) %>%\n  ggplot(aes(source, total_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + coord_flip()\n\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- train %>% \n  group_by(country) %>% \n  summarize(mean_revenue = mean(transactionRevenue)) %>% \n  mutate(country = reorder(country, -mean_revenue)) %>% \n  top_n(10) %>%\n  ggplot(aes(country, mean_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal() + \n  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + coord_flip()\n\np2 <- train %>% \n  group_by(country) %>% \n  summarize(visits = n()) %>% \n  mutate(country = reorder(country, -visits)) %>% \n  top_n(10) %>%\n  ggplot(aes(country, visits)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1))  + coord_flip()\n\n\np3 <- train %>% \n  group_by(country) %>% \n  summarize(total_revenue = sum(transactionRevenue)) %>% \n  mutate(country = reorder(country, -total_revenue)) %>% \n  top_n(10) %>%\n  ggplot(aes(country, total_revenue)) +\n  geom_bar(stat = \"identity\", colour=\"black\", fill=\"blue\") +\n  theme_minimal()+ \n  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + coord_flip()\n\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"highchart(type = \"map\") %>%\n  hc_add_series_map(worldgeojson,\n                    train %>% \n                      group_by(country) %>% \n                      summarise(revenue = sum(visitNumber)) %>% \n                      ungroup() %>% \n                      mutate(iso2 = countrycode(country, origin=\"country.name\", destination=\"iso2c\")),\n                    value = \"revenue\", joinBy = \"iso2\") %>%\n  hc_title(text = \"visits by country\") %>%\n  hc_tooltip(useHTML = TRUE, headerFormat = \"\",\n             pointFormat = \"{point.country}: {point.revenue:.0f}\") %>% \n  hc_colorAxis(minColor = \"white\", maxColor = \"blue\", max= 5e3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"highchart(type = \"map\") %>%\n  hc_add_series_map(worldgeojson,\n                    train %>% \n                      group_by(country) %>% \n                      summarise(revenue = sum(transactionRevenue)) %>% \n                      ungroup() %>% \n                      mutate(iso2 = countrycode(country, origin=\"country.name\", destination=\"iso2c\")),\n                    value = \"revenue\", joinBy = \"iso2\") %>%\n  hc_title(text = \"log Revenue by country\") %>%\n  hc_tooltip(useHTML = TRUE, headerFormat = \"\",\n             pointFormat = \"{point.country}: {point.revenue:.0f}\") %>% \n  hc_colorAxis(minColor = \"white\", maxColor = \"blue\", max= 5e3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"chart.Correlation(train[,which(sapply(train, is.numeric))])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- ggplot(data=train %>% filter(transacted == 1), aes(x=country, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='Country') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np2 <- ggplot(data=train %>% filter(transacted == 1), aes(x=continent, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='Continent') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np3 <- ggplot(data=train %>% filter(transacted == 1), aes(x=subContinent, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='Sub Continent') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- ggplot(data=train %>% filter(transacted == 1), aes(x=deviceCategory, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='deviceCategory') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np2 <- ggplot(data=train %>% filter(transacted == 1), aes(x=operatingSystem, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='operatingSystem') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np3 <- ggplot(data=train %>% filter(transacted == 1), aes(x=browser, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='Broswer') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\nggarrange(p1,p2,p3, ncol=3)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"p1 <- ggplot(data=train %>% filter(transacted == 1), aes(x=channelGrouping, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='channelGrouping') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np2 <- ggplot(data=train %>% filter(transacted == 1), aes(x=medium, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='medium') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np3 <- ggplot(data=train %>% filter(transacted == 1), aes(x=source, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='source') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\np4 <- ggplot(data=train %>% filter(transacted == 1), aes(x=referralPath, y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='referralPath') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\nggarrange(p1,p2,p3,p4)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_train <- cbind(\n                train %>% select(where(is.numeric)) %>% scale(),\n                train %>% select(where(is.factor), where(is.logical)) %>% as.data.table %>% one_hot\n            ) %>%\n            select(-starts_with(\"transact\")) %>%\n            as.matrix","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_response_binary_train <- train %>% select(transacted) %>% as.data.table %>% as.matrix %>% as.integer","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn <- keras_model_sequential() \nnn %>% \n  layer_dense(units = 256, activation = \"relu\", input_shape=ncol(nn_train)) %>% \n  layer_dense(units = 128, activation = \"relu\") %>%\n  layer_dense(units = 1, activation = \"sigmoid\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn %>%  compile(\n  loss = 'binary_crossentropy',\n  optimizer = \"adam\",\n  metrics = c('accuracy')\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history <- nn %>% \n  fit(\n  nn_train, nn_response_binary_train,\n  epochs = 50, batch_size = 100,\n  validation_split = 0.3,\n  verbose = 1\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"summary(nn)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"summary(history)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plot(history)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_test <- cbind(\n                test %>% select(where(is.numeric)) %>% scale(),\n                test %>% select(where(is.factor), where(is.logical)) %>% as.data.table %>% one_hot\n            ) %>%\n            select(-starts_with(\"transact\")) %>%\n            as.matrix\n\ndim(nn_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_response_binary_test <- test %>% select(transacted)%>% mutate(transacted = as.logical(transacted)) %>% as.data.table %>% one_hot %>% as.matrix","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"score <- nn %>% evaluate(nn_test, nn_response_binary_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"score","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class_pred <- nn %>% predict_classes(nn_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"confusionMatrix(as.factor(class_pred), test$transacted, positive='1')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"set.seed(0)\n\n# index = sample(1:nrow(train), 20000)\n\nrf_train <- train %>% select(-where(is.character), -transactionRevenue)\nrf_test <- test %>% select(-where(is.character), -transactionRevenue)\n\ndim(rf_train)\ndim(rf_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"quick_RF <- randomForest(transacted ~ .,data=rf_train, ntree=100,importance=TRUE)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"vip::vip(quick_RF, num_features = 20, fill=\"blue\", color=\"black\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"reprtree:::plot.getTree(quick_RF)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_pred <- predict(quick_RF, newdata = rf_test , type = \"response\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_response <- test %>% select(transacted) \n\nconfusionMatrix(as.factor(test_pred), test$transacted, positive='1')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"lmodel02 <- glm(transacted ~ newVisits + log1p(pageviews) + isTrueDirect + isMobile , family = \"binomial\", data = train)\nsummary(lmodel02)\n\npR2(lmodel02)\n\nsum(residuals(lmodel02, type=\"deviance\")^2) \npchisq(lmodel02$deviance, 11000, lower.tail=F) \n\nsum(residuals(lmodel02, type=\"pearson\")^2) \npchisq(sum(residuals(lmodel02, type=\"pearson\")^2), 11000, lower.tail=F) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"predictions_All <- predict(lmodel02, newdata = test, type = \"response\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ROCRpred <- prediction(predictions_All, test$transacted)\nROCRperf <- performance(ROCRpred, 'tpr','fpr')\nplot(ROCRperf, colorize = TRUE)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cutoff_acc <- matrix(data=c(\"Cutoff\",\"Accuracy\"),ncol = 2)\n\nfor (cutoff in seq(0.01, 0.90, by=0.01)) {\n    pred_cutoff <- ifelse(predictions_All > cutoff,1,0)\n    Tab <- table(test$transacted,pred_cutoff)\n    Accuracity <- (Tab[1,1]+Tab[2,2])/nrow(test)    \n    cutoff_acc <- rbind(cutoff_acc,c(cutoff,Accuracity))\n}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plot(cutoff_acc, ylab=\"Accuracy\", xlab=\"Cutoff\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cutoff <- 0.6\npred_cutoff <- ifelse(predictions_All > cutoff,1,0)\nconfusionMatrix(as.factor(pred_cutoff), test$transacted, positive='1')","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"# Revenue Prediction"},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_response_cont_train <- train  %>% select(transactionRevenue) %>% scale() %>% as.matrix\nnn_cont_train <- cbind(\n                train %>% select(where(is.numeric)) %>% scale(),\n                train %>% select(where(is.factor), where(is.logical)) %>% as.data.table %>% one_hot\n            ) %>%\n            select(-starts_with(\"transact\")) %>%\n            as.matrix","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_response_cont_test <- test  %>% select(transactionRevenue)  %>% scale() %>% as.matrix\nnn_cont_test <- cbind(\n                test %>% select(where(is.numeric)) %>% scale(),\n                test %>% select(where(is.factor), where(is.logical)) %>% as.data.table %>% one_hot\n            ) %>%\n            select(-starts_with(\"transact\")) %>%\n            as.matrix","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"nn_cont <- keras_model_sequential() \nnn_cont %>% \n  layer_dense(units = 256, activation = \"relu\", input_shape=ncol(nn_cont_train)) %>% \n  layer_dropout(rate=0.5) %>%\n  layer_dense(units = 128, activation = \"relu\") %>%\n  layer_dropout(rate=0.5) %>%\n  layer_dense(units = 64, activation = \"relu\") %>%\n  layer_dropout(rate=0.5) %>%\n  layer_dense(units = 1, activation = \"linear\")\n\nnn_cont %>%  compile(\n  loss = 'mse',\n  optimizer = \"adam\"\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history <- nn_cont %>% \n  fit(\n  nn_cont_train, nn_response_cont_train,\n  epochs = 100, batch_size = 100,\n  validation_split = 0.3,\n  verbose = 1\n)\n\nplot(history)\nsummary(history)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"score <- nn_cont %>% evaluate(nn_cont_test, nn_response_cont_test)\nscore","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"set.seed(0)\n\n# index = sample(1:nrow(train), 20000)\n\nrf_train <- train %>% select(-where(is.character), -transacted)\nrf_test <- test %>% select(-where(is.character), -transacted)\n\ndim(rf_train)\ndim(rf_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cl<-makePSOCKcluster(4) \n  \nregisterDoParallel(cl) \n  \nstart.time<-proc.time() \n  \nrf_cont <- randomForest(transactionRevenue ~ .,data=rf_train, ntree=100,importance=TRUE)\n\nstop.time<-proc.time() \n  \nrun.time<-stop.time -start.time \n  \nprint(run.time) \n  \nstopCluster(cl) ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"vip::vip(rf_cont, num_features = 20, fill=\"blue\", color=\"black\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plot(rf_cont)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_pred <- predict(rf_cont, newdata = rf_test , type = \"response\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"mse(test_pred, test$transactionRevenue)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ggplot(data=train , aes(x=factor(pageviews) , y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='pageviews') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1)) + \n        scale_x_discrete( limits=c(\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\", \"15\"))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ggplot(data=train , aes(x=factor(visitNumber) , y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='pageviews') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1)) + \n        scale_x_discrete( limits=c(\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\",\"10\",\"11\",\"12\",\"13\",\"14\", \"15\"))\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ggplot(data=train , aes(x=factor(newVisits) , y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='is New Visits') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))\n\nggplot(data=train , aes(x=factor(isTrueDirect) , y=transactionRevenue))+\n        geom_boxplot(col='blue') + labs(x='is Organic') + \n        theme(axis.text.x = element_text(angle = 90, hjust = 1))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"tobit_model <- selection( transacted ~   isMobile + hits + pageviews + medium ,\n                    transactionRevenue ~  visitNumber+ newVisits + isMobile + pageviews + continent  + isTrueDirect, data=train) \n\nsummary(tobit_model)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_pred <- predict(tobit_model, newdata = test , type = \"response\")\nmse(test_pred, test$transactionRevenue)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"heckit_model <- selection( transacted ~   isMobile + hits + pageviews + medium ,\n                    transactionRevenue ~  visitNumber+ newVisits + isMobile + pageviews + continent  + isTrueDirect, data=train, method=\"2step\") \n\nsummary(heckit_model)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_pred <- predict(heckit_model, newdata = test , type = \"response\")\nmse(test_pred, test$transactionRevenue)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"3.6.3"}},"nbformat":4,"nbformat_minor":4}