Вопрос или проблема
У меня есть набор данных (350 тысяч данных) о сотрудниках из разных регионов за последние 10 лет. Набор данных состоит из их навыков, региона, в котором они находятся, отрасли, их текущей роли, их зарплаты в соответствующей валюте.
После анализа я обнаружил, что 60% зарплат в SGD, 30% в INR, а остальные распределены по 15 другим валютам. Рекомендуется ли мне создать модель для каждой валюты или есть способ конвертировать все валюты в универсальное значение, чтобы я мог использовать все свои данные для обучения?
В настоящее время я использовал 40% доступных данных в SGD для обучения модели случайного леса и выяснил, что результаты на тестовом наборе достаточно точны. Для этой модели я рассматривал навыки, роль и отрасль в качестве признаков и ничего больше. Есть ли лучшая модель, которую я мог бы изучить?
Спасибо
В каждой валюте (например, SGD или INR) вы можете разделить зарплату по квартилям, например, верхние 25 процентов зарплат в каждой валюте можно присвоить значение 4, следующий 25-й процентиль — 3 и так далее. Таким образом, вы сможете нормализовать зарплаты в разных валютах.
Я бы предложил конвертировать все валюты в одну валюту с использованием сопоставления. (Допустим, мы конвертируем все валюты в SGD). Используйте следующий код на Python для конвертации.
conversion = dict{
'SGD' : 1.0,
'INR' : --- , #Курс обмена
..........
}
map(lambda x : conversion[x], mylist) # ваш список валют.
# Затем примените стандартную нормализацию
mylist = np.array(mylist)
mylist = (mylist - min(mylist))/(max(mylist) - min(mylist))
Один и тот же набор навыков не даст одинаковую зарплату в разных странах из-за различий в уровне жизни. Поэтому я бы конвертировал зарплаты в единую валюту, но используя ППС вместо официального обменного курса (узнайте об этом, это другой обменный курс, который пытается уравнять покупательную способность различных валют, устраняя различия в уровне цен между странами). Я бы также оставил валюту в качестве категориальной переменной, чтобы учесть особенности каждой страны, которые не объясняются ППС.
Ответ или решение
Нормализация зарплат для предсказания зарплаты: Подходы и Рекомендации
Введение
Ваша задача заключается в нормализации данных о зарплатах из разных валют для построения модели предсказания на основе исторических данных сотрудников. При таком подходе важно учитывать разнообразие валют и экономические условия, которые могут влиять на уровень зарплат. Давайте рассмотрим, как можно интегрировать данные из разных валют в единую модель и какие подходы и методы могут быть для этого использованы.
Проблема и возможности
Из вашего описания видно, что 60% зарплат выражены в сингапурских долларах (SGD), 30% в индийских рупиях (INR), а оставшаяся часть — в 15 других валютах. С учетом того, что зарплата не только зависит от навыков, но и от региона, уровня жизни, и других макроэкономических факторов, вам нужно будет выполнить несколько шагов для нормализации данных.
Подходы к нормализации
-
Конвертация валют: Рекомендуется проводить конвертацию всех зарплат в одну базовую валюту (например, SGD). Это можно сделать, используя актуальные курсы валют. Однако для большей точности следует рассмотреть использование индекса покупательной способности (Purchasing Power Parity, PPP) вместо официального обменного курса. Это обеспечит более справедливую оценку реальной стоимости зарплаты с учетом различий в стоимости жизни в разных странах.
Пример кода на Python для конвертации:
conversion = { 'SGD': 1.0, 'INR': <курс_PPP> # Другие валюты и их курсы } salaries = [...]; # Список зарплат и их валют converted_salaries = [salary * conversion[currency] for salary, currency in salaries]
-
Нормализация данных: После конвертации зарплат следует провести стандартную нормализацию, чтобы привести данные к единой шкале. Это важно для уменьшения влияния выбросов и увеличения стабильности модели. Формула для стандартной нормализации:
[
\text{normalized} = \frac{x – \min(x)}{\max(x) – \min(x)}
] -
Категоризация по валютах: Оставьте переменную "валюта" как категориальную, что позволит вашей модели учитывать специфику зарплат для каждой страны, которая может не покрываться только нормализованными данными.
Моделирование
С учетом ваших данных и выполненной нормализации, следует рассмотреть использование более сложных моделей, таких как:
- Глубокие нейронные сети: Они могут лучше справляться с многообразием и сложностью входных данных.
- Гребенчатые модели (Gradient Boosting): Эти модели показывают отличный результат на задачах предсказания и могут быть настроены для учета многообразия и неравномерности в ваших данных.
- Регрессия на основе деревьев решений: Модели, такие как XGBoost или LightGBM, могут оказаться более эффективными при работе с разными категориями и значениями.
Вывод
Нормализация зарплат с учетом валютных различий — это важный шаг для создания точной модели предсказания. Конвертация в единую валюту с использованием PPP, нормализация данных и применение более мощных алгоритмов машинного обучения позволят вам значительно улучшить качество вашей модели. Рекомендуется также проводить регулярные обновления и корректировки курсов и параллельно обучать модель на новых данных, чтобы поддерживать её актуальность и точность в условиях меняющегося рынка труда.