Το σύνολο δεδομένων που αναλύεται είναι το IBM HR Analytics Employee Attrition & Performance, το οποίο αντλήθηκε από την πλατφόρμα Kaggle.
Αποτελείται από 1470 εγγραφές και 35 μεταβλητές, που σχετίζονται με δημογραφικά στοιχεία, την απόδοση και την εργασιακή ικανοποίηση και κυρίως αν έχουν Αποχωρήσει από την εταιρεία ή όχι.
Η επιλογή του συγκεκριμένου dataset έγινε, διότι ο συνδυασμός των ποσοτικών και ποιοτικών δεδομένων, που προσφέρει σχετικά με το τμήμα του Ανθρωπίνου Δυναμικού στα πλαίσια της Επιχειρηματικής Αναλυτικής επιτρέπει την χρήση στατιστικών εργαλείων για τη λήψη αποφάσεων, που αφορούν τη διακράτηση του προσωπικού και τη βελτίωση του εργασιακού περιβάλλοντος.
| Μεταβλητή | Τύπος | Εύρος Τιμών | Μονάδες Μέτρησης |
|---|---|---|---|
| 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 αντίστοιχα.
Τώρα θα δημιουργήσουμε το μοντέλο Λογιστικής Παλινδρόμησης,
χρησιμοποιώντας όλες τις ανεξάρτητες μεταβλητές, για να προβλέψουμε το
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, που έχει μεγάλη συσχέτιση, μειώνεται όσο αυξάνονται τα έτη προϋπηρεσίας και άρα καταλαβαίνουμε ότι παίζει σημαντικό ρόλο ενδεχομένως να εκπαιδεύονται οι υπάλληλοι, για να εκσυγχρονίζουν τις δεξιότητές τους αντί να απολυθούν ή να αποχωρήσουν οικειοθελώς.
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), ο οποίος έχει σχεδόν μηδενική πιθανότητα αποχώρησης.
# Δημιουργία 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
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 (Αποχώρησης)