1.Διερεύνηση του συνόλου δεδομένων (dataset)

Περιγραφή του dataset και της πηγής του

Το σύνολο δεδομένων που αναλύεται είναι το IBM HR Analytics Employee Attrition & Performance, το οποίο αντλήθηκε από την πλατφόρμα Kaggle.

Αποτελείται από 1470 εγγραφές και 35 μεταβλητές, που σχετίζονται με δημογραφικά στοιχεία, την απόδοση και την εργασιακή ικανοποίηση και κυρίως αν έχουν Αποχωρήσει από την εταιρεία ή όχι.

Αιτιολόγηση της επιλογής σε σχέση με την επιχειρηματική αναλυτική

Η επιλογή του συγκεκριμένου dataset έγινε, διότι ο συνδυασμός των ποσοτικών και ποιοτικών δεδομένων, που προσφέρει σχετικά με το τμήμα του Ανθρωπίνου Δυναμικού στα πλαίσια της Επιχειρηματικής Αναλυτικής επιτρέπει την χρήση στατιστικών εργαλείων για τη λήψη αποφάσεων, που αφορούν τη διακράτηση του προσωπικού και τη βελτίωση του εργασιακού περιβάλλοντος.

Eπιχειρηματικά ερωτήματα, που θα μπορούσαν να απαντηθούν

  • Ποια η πιθανότητα να αποχωρήσει ένας υπάλληλος από την εταιρεία;
  • Υπάρχει διαφορά στην προϋπηρεσία μεταξύ των υπαλλήλων που αποχωρούν και αυτών που παραμένουν;
  • Ποιος είναι ο κύριος παράγοντας αποχώρησης των υπαλλήλων;

Περιγραφή των μεταβλητών

Ποσοτικές Μεταβλητές

Μεταβλητή Τύπος Εύρος Τιμών Μονάδες Μέτρησης
Age Διακριτή 18 - 60 Έτη
DailyRate Διακριτή 102 - 1499 Νομισματικές Μονάδες (π.χ. Ευρώ)
DistanceFromHome Διακριτή 1 - 29 Απόσταση (συνήθως Μίλια)
HourlyRate Διακριτή 30 - 100 Νομισματικές Μονάδες ανά ώρα
MonthlyIncome Συνεχής 1.009 - 19.999 Νομισματικές Μονάδες ανά μήνα
MonthlyRate Διακριτή 2.094 - 26.999 Νομισματικές Μονάδες
NumCompaniesWorked Διακριτή 0 - 9 Αριθμός εταιρειών
PercentSalaryHike Διακριτή 11 - 25 Ποσοστό (%)
TotalWorkingYears Διακριτή 0 - 40 Έτη
TrainingTimesLastYear Διακριτή 0 - 6 Αριθμός εκπαιδεύσεων
YearsAtCompany Διακριτή 0 - 40 Έτη
YearsInCurrentRole Διακριτή 0 - 18 Έτη
YearsSinceLastPromotion Διακριτή 0 - 15 Έτη
YearsWithCurrManager Διακριτή 0 - 17 Έτη

Ποιοτικές Μεταβλητές

Κατηγορικές Μεταβλητές

Μεταβλητή Περιγραφή / Τιμές
Attrition Εγκατάλειψη εργασίας (Yes, No)
BusinessTravel Συχνότητα ταξιδιών (Non-Travel, Travel_Rarely, Travel_Frequently)
Department Τμήμα (Sales, Research & Development, Human Resources)
EducationField Τομέας εκπαίδευσης (Life Sciences, Medical, Marketing, κ.α.)
Gender Φύλο (Female, Male)
JobRole Ρόλος εργασίας (Manager, Sales Executive, Laboratory Technician, κ.α.)
MaritalStatus Οικογενειακή κατάσταση (Single, Married, Divorced)
OverTime Υπερωρίες (Yes, No)

Τακτικές Μεταβλητές

Μεταβλητή Εύρος (Κλίμακα) Περιγραφή
Education 1 - 5 Επίπεδο εκπαίδευσης (1: Χαμηλό, 5: Υψηλό)
EnvironmentSatisfaction 1 - 4 Ικανοποίηση από το περιβάλλον εργασίας
JobInvolvement 1 - 4 Βαθμός εμπλοκής στην εργασία
JobLevel 1 - 5 Ιεραρχικό επίπεδο θέσης
JobSatisfaction 1 - 4 Ικανοποίηση από την εργασία
PerformanceRating 3 - 4 Αξιολόγηση απόδοσης
RelationshipSatisfaction 1 - 4 Ικανοποίηση από τις σχέσεις στην εργασία
StockOptionLevel 0 - 3 Επίπεδο δικαιωμάτων προαίρεσης μετοχών
WorkLifeBalance 1 - 4 Ισορροπία επαγγελματικής/προσωπικής ζωής

Φόρτωση Δεδομένων

# Φόρτωση των δεδομένων
hr_data <- read.csv("WA_Fn-UseC_-HR-Employee-Attrition.csv", stringsAsFactors = TRUE)

# Έλεγχος των πρώτων γραμμών για να δούμε αν φορτώθηκαν σωστά
head(hr_data)
##   Age Attrition    BusinessTravel DailyRate             Department
## 1  41       Yes     Travel_Rarely      1102                  Sales
## 2  49        No Travel_Frequently       279 Research & Development
## 3  37       Yes     Travel_Rarely      1373 Research & Development
## 4  33        No Travel_Frequently      1392 Research & Development
## 5  27        No     Travel_Rarely       591 Research & Development
## 6  32        No Travel_Frequently      1005 Research & Development
##   DistanceFromHome Education EducationField EmployeeCount EmployeeNumber
## 1                1         2  Life Sciences             1              1
## 2                8         1  Life Sciences             1              2
## 3                2         2          Other             1              4
## 4                3         4  Life Sciences             1              5
## 5                2         1        Medical             1              7
## 6                2         2  Life Sciences             1              8
##   EnvironmentSatisfaction Gender HourlyRate JobInvolvement JobLevel
## 1                       2 Female         94              3        2
## 2                       3   Male         61              2        2
## 3                       4   Male         92              2        1
## 4                       4 Female         56              3        1
## 5                       1   Male         40              3        1
## 6                       4   Male         79              3        1
##                 JobRole JobSatisfaction MaritalStatus MonthlyIncome MonthlyRate
## 1       Sales Executive               4        Single          5993       19479
## 2    Research Scientist               2       Married          5130       24907
## 3 Laboratory Technician               3        Single          2090        2396
## 4    Research Scientist               3       Married          2909       23159
## 5 Laboratory Technician               2       Married          3468       16632
## 6 Laboratory Technician               4        Single          3068       11864
##   NumCompaniesWorked Over18 OverTime PercentSalaryHike PerformanceRating
## 1                  8      Y      Yes                11                 3
## 2                  1      Y       No                23                 4
## 3                  6      Y      Yes                15                 3
## 4                  1      Y      Yes                11                 3
## 5                  9      Y       No                12                 3
## 6                  0      Y       No                13                 3
##   RelationshipSatisfaction StandardHours StockOptionLevel TotalWorkingYears
## 1                        1            80                0                 8
## 2                        4            80                1                10
## 3                        2            80                0                 7
## 4                        3            80                0                 8
## 5                        4            80                1                 6
## 6                        3            80                0                 8
##   TrainingTimesLastYear WorkLifeBalance YearsAtCompany YearsInCurrentRole
## 1                     0               1              6                  4
## 2                     3               3             10                  7
## 3                     3               3              0                  0
## 4                     3               3              8                  7
## 5                     3               3              2                  2
## 6                     2               2              7                  7
##   YearsSinceLastPromotion YearsWithCurrManager
## 1                       0                    5
## 2                       1                    7
## 3                       0                    0
## 4                       3                    0
## 5                       2                    2
## 6                       3                    6
set.seed(971)

#Διαχωρισμός data set σε train και test sets 

split <- sample.split(hr_data$Attrition, SplitRatio = 0.65)

train = subset(hr_data, split == TRUE)
test  = subset(hr_data, split == FALSE)

nrow(train) 
## [1] 955
nrow(test) 
## [1] 515

Με τον διαχωρισμό τον δεδομένων σε 65%-35%, το training set αποτελείται από 955 καταγραφές και το testing set από 515 αντίστοιχα.

2. Δημιουργία Μοντέλου Λογιστικής Παλινδρόμησης

Τώρα θα δημιουργήσουμε το μοντέλο Λογιστικής Παλινδρόμησης, χρησιμοποιώντας όλες τις ανεξάρτητες μεταβλητές, για να προβλέψουμε το Attrition, που είναι η εξαρτημένη μεταβλητή. Αυτό θα γίνει με την χρήση της συνάρτησης glm.

# Εξαρτημένη μεταβλητή (Y): Attrition
# Aνεξάρτητες μεταβλητές (X): συμβολίζονται με ., δηλ. όλες αυτές που είναι κατάλληλες

# Διαγραφή των στηλών, που προκαλούν το σφάλμα "contrasts can be applied only to factors with 2 or more levels", 
# που σημαίνει ότι είναι μεταβλητές χωρίς 2ο επίπεδο, για να μπορεί να γίνει η σύγκριση

col_to_keep <- sapply(train, function(x) length(unique(x)) > 1)

# Αφαίρεση του EmployeeNumber, που είναι ID
train_clean <- train[, col_to_keep]
train_clean$EmployeeNumber <- NULL 

# Δημιουργία του μοντέλου, χρησιμοποιώντας το "καθαρό" dataset
modelHR <- glm(Attrition ~ ., data = train_clean, family = binomial)

# Εμφάνιση των αποτελεσμάτων 
summary(modelHR)
## 
## Call:
## glm(formula = Attrition ~ ., family = binomial, data = train_clean)
## 
## Coefficients:
##                                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                      -1.130e+01  7.323e+02  -0.015 0.987693    
## Age                              -3.887e-02  1.754e-02  -2.216 0.026687 *  
## BusinessTravelTravel_Frequently   1.984e+00  5.480e-01   3.620 0.000295 ***
## BusinessTravelTravel_Rarely       1.151e+00  5.003e-01   2.302 0.021362 *  
## DailyRate                        -1.041e-04  2.847e-04  -0.366 0.714661    
## DepartmentResearch & Development  1.487e+01  7.323e+02   0.020 0.983800    
## DepartmentSales                   1.497e+01  7.323e+02   0.020 0.983688    
## DistanceFromHome                  3.467e-02  1.412e-02   2.456 0.014038 *  
## Education                         1.856e-02  1.142e-01   0.162 0.870925    
## EducationFieldLife Sciences      -1.390e+00  9.909e-01  -1.403 0.160627    
## EducationFieldMarketing          -1.234e+00  1.057e+00  -1.167 0.243146    
## EducationFieldMedical            -1.340e+00  9.846e-01  -1.361 0.173453    
## EducationFieldOther              -8.096e-01  1.086e+00  -0.746 0.455948    
## EducationFieldTechnical Degree   -1.092e-01  1.006e+00  -0.109 0.913554    
## EnvironmentSatisfaction          -4.472e-01  1.054e-01  -4.245 2.19e-05 ***
## GenderMale                        5.029e-01  2.378e-01   2.115 0.034453 *  
## HourlyRate                        1.901e-03  5.791e-03   0.328 0.742741    
## JobInvolvement                   -6.504e-01  1.601e-01  -4.064 4.83e-05 ***
## JobLevel                          6.159e-02  4.100e-01   0.150 0.880579    
## JobRoleHuman Resources            1.628e+01  7.323e+02   0.022 0.982260    
## JobRoleLaboratory Technician      1.623e+00  6.061e-01   2.679 0.007395 ** 
## JobRoleManager                    1.298e+00  1.088e+00   1.192 0.233145    
## JobRoleManufacturing Director     9.539e-01  6.475e-01   1.473 0.140715    
## JobRoleResearch Director         -3.719e-01  1.349e+00  -0.276 0.782721    
## JobRoleResearch Scientist         6.914e-01  6.270e-01   1.103 0.270131    
## JobRoleSales Executive            1.238e+00  1.527e+00   0.811 0.417410    
## JobRoleSales Representative       2.846e+00  1.601e+00   1.777 0.075572 .  
## JobSatisfaction                  -5.354e-01  1.090e-01  -4.910 9.10e-07 ***
## MaritalStatusMarried              1.970e-01  3.489e-01   0.565 0.572352    
## MaritalStatusSingle               1.064e+00  4.557e-01   2.336 0.019500 *  
## MonthlyIncome                    -4.866e-05  1.042e-04  -0.467 0.640613    
## MonthlyRate                       1.169e-05  1.620e-05   0.722 0.470277    
## NumCompaniesWorked                2.331e-01  4.914e-02   4.743 2.11e-06 ***
## OverTimeYes                       2.002e+00  2.531e-01   7.908 2.62e-15 ***
## PercentSalaryHike                -2.948e-02  5.231e-02  -0.564 0.573060    
## PerformanceRating                 1.628e-01  5.222e-01   0.312 0.755160    
## RelationshipSatisfaction         -3.608e-01  1.065e-01  -3.387 0.000707 ***
## StockOptionLevel                 -2.336e-01  2.099e-01  -1.113 0.265622    
## TotalWorkingYears                -6.105e-02  3.765e-02  -1.621 0.104944    
## TrainingTimesLastYear            -2.512e-01  9.427e-02  -2.665 0.007706 ** 
## WorkLifeBalance                  -4.427e-01  1.632e-01  -2.713 0.006661 ** 
## YearsAtCompany                    1.277e-01  4.941e-02   2.585 0.009750 ** 
## YearsInCurrentRole               -1.475e-01  6.163e-02  -2.394 0.016681 *  
## YearsSinceLastPromotion           1.788e-01  5.598e-02   3.193 0.001407 ** 
## YearsWithCurrManager             -2.064e-01  6.201e-02  -3.329 0.000871 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 843.74  on 954  degrees of freedom
## Residual deviance: 530.76  on 910  degrees of freedom
## AIC: 620.76
## 
## Number of Fisher Scoring iterations: 15
modelHR <- glm(Attrition ~ ., data = train_clean, family = binomial)
summary(modelHR)
## 
## Call:
## glm(formula = Attrition ~ ., family = binomial, data = train_clean)
## 
## Coefficients:
##                                    Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                      -1.130e+01  7.323e+02  -0.015 0.987693    
## Age                              -3.887e-02  1.754e-02  -2.216 0.026687 *  
## BusinessTravelTravel_Frequently   1.984e+00  5.480e-01   3.620 0.000295 ***
## BusinessTravelTravel_Rarely       1.151e+00  5.003e-01   2.302 0.021362 *  
## DailyRate                        -1.041e-04  2.847e-04  -0.366 0.714661    
## DepartmentResearch & Development  1.487e+01  7.323e+02   0.020 0.983800    
## DepartmentSales                   1.497e+01  7.323e+02   0.020 0.983688    
## DistanceFromHome                  3.467e-02  1.412e-02   2.456 0.014038 *  
## Education                         1.856e-02  1.142e-01   0.162 0.870925    
## EducationFieldLife Sciences      -1.390e+00  9.909e-01  -1.403 0.160627    
## EducationFieldMarketing          -1.234e+00  1.057e+00  -1.167 0.243146    
## EducationFieldMedical            -1.340e+00  9.846e-01  -1.361 0.173453    
## EducationFieldOther              -8.096e-01  1.086e+00  -0.746 0.455948    
## EducationFieldTechnical Degree   -1.092e-01  1.006e+00  -0.109 0.913554    
## EnvironmentSatisfaction          -4.472e-01  1.054e-01  -4.245 2.19e-05 ***
## GenderMale                        5.029e-01  2.378e-01   2.115 0.034453 *  
## HourlyRate                        1.901e-03  5.791e-03   0.328 0.742741    
## JobInvolvement                   -6.504e-01  1.601e-01  -4.064 4.83e-05 ***
## JobLevel                          6.159e-02  4.100e-01   0.150 0.880579    
## JobRoleHuman Resources            1.628e+01  7.323e+02   0.022 0.982260    
## JobRoleLaboratory Technician      1.623e+00  6.061e-01   2.679 0.007395 ** 
## JobRoleManager                    1.298e+00  1.088e+00   1.192 0.233145    
## JobRoleManufacturing Director     9.539e-01  6.475e-01   1.473 0.140715    
## JobRoleResearch Director         -3.719e-01  1.349e+00  -0.276 0.782721    
## JobRoleResearch Scientist         6.914e-01  6.270e-01   1.103 0.270131    
## JobRoleSales Executive            1.238e+00  1.527e+00   0.811 0.417410    
## JobRoleSales Representative       2.846e+00  1.601e+00   1.777 0.075572 .  
## JobSatisfaction                  -5.354e-01  1.090e-01  -4.910 9.10e-07 ***
## MaritalStatusMarried              1.970e-01  3.489e-01   0.565 0.572352    
## MaritalStatusSingle               1.064e+00  4.557e-01   2.336 0.019500 *  
## MonthlyIncome                    -4.866e-05  1.042e-04  -0.467 0.640613    
## MonthlyRate                       1.169e-05  1.620e-05   0.722 0.470277    
## NumCompaniesWorked                2.331e-01  4.914e-02   4.743 2.11e-06 ***
## OverTimeYes                       2.002e+00  2.531e-01   7.908 2.62e-15 ***
## PercentSalaryHike                -2.948e-02  5.231e-02  -0.564 0.573060    
## PerformanceRating                 1.628e-01  5.222e-01   0.312 0.755160    
## RelationshipSatisfaction         -3.608e-01  1.065e-01  -3.387 0.000707 ***
## StockOptionLevel                 -2.336e-01  2.099e-01  -1.113 0.265622    
## TotalWorkingYears                -6.105e-02  3.765e-02  -1.621 0.104944    
## TrainingTimesLastYear            -2.512e-01  9.427e-02  -2.665 0.007706 ** 
## WorkLifeBalance                  -4.427e-01  1.632e-01  -2.713 0.006661 ** 
## YearsAtCompany                    1.277e-01  4.941e-02   2.585 0.009750 ** 
## YearsInCurrentRole               -1.475e-01  6.163e-02  -2.394 0.016681 *  
## YearsSinceLastPromotion           1.788e-01  5.598e-02   3.193 0.001407 ** 
## YearsWithCurrManager             -2.064e-01  6.201e-02  -3.329 0.000871 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 843.74  on 954  degrees of freedom
## Residual deviance: 530.76  on 910  degrees of freedom
## AIC: 620.76
## 
## Number of Fisher Scoring iterations: 15
train_plot <- train_clean
train_plot$Attrition_Num <- ifelse(train_plot$Attrition == "Yes", 1, 0)

ggplot(train_plot, aes(x = TotalWorkingYears, y = Attrition_Num)) +
  geom_point(alpha = 0.2, position = position_jitter(height = 0.02)) + 
  geom_smooth(method = "glm", method.args = list(family = "binomial"), color = "magenta") +
  labs(title = "Πιθανότητα Αποχώρησης βάσει Συνολικής Προϋπηρεσίας",
       x = "Συνολικά Έτη Προϋπηρεσίας",
       y = "Πιθανότητα Attrition") +
  theme_minimal()
## `geom_smooth()` using formula = 'y ~ x'

## Παρατηρήσεις

Από τη δημιουργία του Μοντέλου Λογιστικής Παλινδρόμησης, παρατηρούμε ότι οι μεταβλητές, που έχουν πιο ισχυρή συσχέτιση με το **Attrition”, δηλαδή στην πιθανότητα αποχώρησης ενός υπαλληλήλου από την εταιρία είναι:

Πολύ Ισχυρή Συσχέτιση (p < 0.001 - ):*** - BusinessTravelTravel_Frequently - EnvironmentSatisfaction
- JobInvolvement
- JobSatisfaction - NumCompaniesWorked
- OverTimeYes - RelationshipSatisfaction - YearsWithCurrManager

Ισχυρή Συσχέτιση (p < 0.01 - ):** - JobRoleLaboratory Technician - TrainingTimesLastYear
- WorkLifeBalance
- YearsAtCompany - YearsSinceLastPromotion

Πράγματι αν παρατηρήσουμε τα αποτελέσματα, που προέκυψαν καταλαβαίνουμε ότι η εξάρτηση της “Αποχώρησης” ενός υπαλληλήλου είναι λογική απόρροια. Για παράδειγμα, είναι πολύ σημαντικό, αν κάποιος είναι ικονοποιημένος τόσο με το αντικείμενο της εργασίας όσο και από το εργασιακό περιβάλλον, καθώς και τα άτομα, που το αποτελούν. Σημαντική, επίσης, είναι και ισορροπία εργασιακής και προσωπικής ζωής, αν η εργασία δεν επιτρέπει στον υπάλληλο να βρει τη “χρυσή τομή”, τότε δε θα παραμέινει σε αυτή.

Στο διάγραμμα, επίσης, παρατηρούμε ότι η πιθανότητα να αποχωρήσει κάποιος υπάλληλος από την εταιρεία, έχοντας βάλει ως σημείο αναφοράς την μεταβλητή TotalWorkingYears, που έχει μεγάλη συσχέτιση, μειώνεται όσο αυξάνονται τα έτη προϋπηρεσίας και άρα καταλαβαίνουμε ότι παίζει σημαντικό ρόλο ενδεχομένως να εκπαιδεύονται οι υπάλληλοι, για να εκσυγχρονίζουν τις δεξιότητές τους αντί να απολυθούν ή να αποχωρήσουν οικειοθελώς.

3. Πρόβλεψη

predictTrain <- predict(modelHR,type='response')
predictTest <-  predict(modelHR, type='response', newdata=test)

head(predictTrain)
##           1           2           3           6           7          10 
## 0.775048727 0.009047115 0.788204055 0.037008792 0.160750364 0.021658272
head(predictTest)
##          4          5          8          9         16         17 
## 0.12227586 0.35243048 0.06842238 0.03796082 0.02466347 0.03444428

Με την εντολή predict βλέπουμε την πιθανότητα στο διάστημα 0 εώς 1, που θα αποχωρήσει κάποιος υπάλληλος. Ουσιαστικά την πιθανότητα να ανήκει μία παρατήρηση/ καταγραφή στην κατηγορία “Yes” για το “Attrition” Για παράδειγμα, ο υπάλληλος 1 (0,78) είναι πιο πιθανό να αποχωρήσει από την εταιρεία σε σχέση μετον υπάλληλο 2(0,01), ο οποίος έχει σχεδόν μηδενική πιθανότητα αποχώρησης.

4.Δημιουργία Confusion Matrix

# Δημιουργία Confusion Matrix με κατωφλι 0.5
table_test <- table(test$Attrition, predictTest > 0.5)
print(table_test)
##      
##       FALSE TRUE
##   No    413   19
##   Yes    49   34
# Υπολογισμός Ακρίβειας (Accuracy)
accuracy <- (table_test[1,1] + table_test[2,2]) / sum(table_test)

# Sensitivity (True Positive) 
sensitivity <- table_test[2,2] / (table_test[2,1] + table_test[2,2])

# Specificity (True Negative ) 
specificity <- table_test[1,1] / (table_test[1,1] + table_test[1,2])

# Ακρίβεια Baseline Model (Πρόβλεψη πάντα 'No')
table(train$Attrition) 
## 
##  No Yes 
## 801 154
baseline_acc <- table(test$Attrition)[1] / nrow(test)

cat("\nAccuracy:", accuracy, "\nSensitivity:", sensitivity, "\nSpecificity:", specificity, "\nBaseline Accuracy:", baseline_acc)
## 
## Accuracy: 0.8679612 
## Sensitivity: 0.4096386 
## Specificity: 0.9560185 
## Baseline Accuracy: 0.838835

Συμπεράσματα

Από τον Confusion Matrix προκύπτουν τα εξής: True Negatives (413): Υπάλληλοι που το μοντέλο προέβλεψε σωστά ότι θα μείνουν στην εταιρεία. True Positives (34): Υπάλληλοι που το μοντέλο προέβλεψε σωστά ότι θα αποχωρήσουν.
False Negatives (49): Το μοντέλο υπολόγισε λανθασμένα 49 υπαλλήλους, που τελικά αποχώρησαν False Positives (19): 19 υπάλληλοι, που προέβλεψε ότι θα φύγουν, ενώ παρέμειναν στην εταιρεία.

Το μοντέλο είναι σχεδόν τέλειο στο να αναγνωρίζει αυτούς που δεν σκοπεύουν να παραιτηθούν και αυτό φαίνεται από το υψηλό Specificity (95,6%), ωστόσο το Sensitivity ανέρχεται στο 41%, που είναι σχετικά χαμηλό. Αυτό σημαίνει ότι με κατώφλι 0.5, το μοντέλο εντοπίζει λιγότερους από τους μισούς υπαλλήλους, που πραγματικά αποχωρούν. Ενδεχομένως, καθότι θέλουμε το μοντέλο να προβλέπει όσο το δυνατό καλύτερα το ποιος θα αποχωρήση, ώστε η εταιρεία να λάβει τα αντίστοιχα μέτρα, η λύση να είναι η μείωση του κατωφλιού, ώστε να αυξηθεί η ευαισθησία, με την παραδοχή βέβαια ότι θα υπάρχουν περισσότερα False positives.

Επίσης, με βάση τα αποτελέσματα η ακρίβεια (Accuracy) ανέρχεται στο 86,8%, που είναι 3% περισσότερο από την ακρίβεια (Accuracy) του Baseline μοντέλου, που υπολογίστηκε στο 83,9%.Επομένως, το μοντέλο modelHR έχει καλύτερη επίδοση από το μοντέλο βάσης.

# Δημιουργία των νέων συνόλων δεδομένων χωρίς ελλιπείς τιμές
train2 <- na.omit(train) 
test2 <- na.omit(test) 

# Καταγραφή του αριθμού των καταχωρήσεων
nrow(train2) 
## [1] 955
nrow(test2) 
## [1] 515

5. Δημιουργία ROCRpred, καμπύλης ROC και υπολογισμός AUC

ROCRpred <- prediction(predictTest, test$Attrition)

# Υπολογισμός της απόδοσης 
ROCRperf <- performance(ROCRpred, "tpr", "fpr")

plot(ROCRperf, colorize = TRUE, 
     print.cutoffs.at = seq(0, 1, by = 0.1), 
     text.adj = c(-0.2, 1.7),
     main = "ROC Curve for HR Attrition Model")

# Υπολογισμός AUC
auc_val <- as.numeric(performance(ROCRpred, "auc")@y.values)
cat("Η τιμή AUC του μοντέλου είναι:", round(auc_val, 4))
## Η τιμή AUC του μοντέλου είναι: 0.8306

Ο δείκτης AUC αποτελεί μετρική της ποιότητας του μοντέλου. Η τιμή 83%, που προκύπτει υποδεικνύει ότι το μοντέλο μπορεί να διαχωρίσει επιτυχημένα τους υπαλλήλους, που θα αποχωρήσουν από εκείνους που θα μείνουν στην εταιρεία με σχετικά μεγάλη επιτυχία.

Συμπέρασμα: Το μοντέλο αυτό επιτρέπει στη διοίκηση να αναγνωρίσει έγκαιρα τους υπαλλήλους υψηλού κινδύνου και να προβεί σε στοχευμένες παρεμβάσεις π.χ. βελτίωση Job Satisfaction ή μείωση Overtime (υπερωρίας) για τη μείωση του Attrition (Αποχώρησης)