library(tidyverse)
library(tidyquant)
library(broom)
library(umap)
library(ggrepel)
library(plotly)
bike_orderlines_tbl <- read_rds("data/bike_orderlines.rds")
source("scripts/plot_customer_segmentation.R")

Problem Statement

Marketing would like to increase email campaign engagement by segmenting the customer-base using their buying habbits.

Solution Summary

The data science team has identified 4 customer segments. The 4 customer segments were given descriptions based on the customer’s top product purchases.

  1. Segment 1 Preferences: Road Bikes, Below $3200 (Economical Models)

  2. Segment 2 Preferences: Mountain Bikes, Above $3200 (Premium Models)

  3. Segment 3 Preferences: Road Bikes, Above $3200 (Premium Models)

  4. Segment 4 Preferences: Both Road and Mountain, Below $3200 (Economical Models)

Customer Preferences

Heat Map

Our customer-base consists of 30 bike shops. Several customers have purchasing preferences for Road or Mountain Bikes based on the proportion of bikes purchased by category_1 and category_2.

# PLOT CUSTOMER HEAT MAP
plot_customer_heatmap(interactive = params$interactive)

Customer Segmentation

This is a 2D projection based on customer similarity that exposes 4 clusters, which are key segments in the customer base.

# PLOT CUSTOMER SEGMENTS
plot_customer_segments(k = 4, seed = 123, interactive = params$interactive)

Customer Preferences By Segment

The 4 customer segments were given descriptions based on the customer’s top product purchases.

  1. Segment 1 Preferences: Road Bikes, Below $3200 (Economical Models)

  2. Segment 2 Preferences: Mountain Bikes, Above $3200 (Premium Models)

  3. Segment 3 Preferences: Road Bikes, Above $3200 (Premium Models)

  4. Segment 4 Preferences: Both Road and Mountain, Below $3200 (Economical Models)

# PLOT CUSTOMER BEHAVIOR
plot_customer_behavior_by_cluster(top_n_products = 5, k =4, seed = 123, interactive = params$interactive)