У меня есть набор данных с личными характеристиками клиентов, которые совершают покупки у вымышленной компании. Изначально у меня нет никакой целевой переменной, только их характеристики. Моя цель — найти закономерность, которая не обязательно может быть наиболее часто встречающейся характеристикой в каждом столбце. Можно ли это сделать, например, с помощью RandomForest? Или мне следует использовать другую технику?
Набор данных имеет структуру, подобную следующей. Все столбцы имеют формат object
, и некоторые значения NaN
представлены как 'Blank'
:
Date Name Salary Position Age
'05/10/2023' 'Daniel' '10,000' 'IT' 32
'05/12/2024' 'John' '9,000' 'Blank' 27
'03/01/2023' 'Niel' 'Blank' 'Data Scients' 21
'03/01/2023' 'Isa' '10,000' 'Engineer' 51
'05/10/2023' 'Ana' '11,000' 'Data Scients' 52
'05/12/2024' 'Ian' '9,500' 'Doctor' 48
'03/01/2023' 'Fred' 'Blank' 'IT' 21
'03/01/2023' 'Carol' '15,000' 'Blank' 30
Я думаю о чем-то, что возвращает результат, например, указывая характеристики, которые формируют наиболее стандартный профиль, например:
The most standard profile is: Salary x, Position y, and Age z.
Я думал об использовании кластеризации, но не считаю, что это лучший метод (например, результат по зарплате был простым средним значением). Я считаю, что лучшим подходом было бы создание профиля, который не обязательно может существовать и основан на изучении закономерностей каждой переменной (зарплата, должность и возраст).
# Encode categorical variables
df['Position'] = pd.Categorical(df['Position']).codes
# Perform clustering
kmeans = KMeans(n_clusters=1, random_state=42)
kmeans.fit(df[['Salary', 'Position', 'Age']])
# Get the centroid of the cluster
centroid = kmeans.cluster_centers_[0]
Есть ли лучший способ сделать это? НЛП или RandomForest — вариант?
Чтобы найти наиболее «стандартный» профиль без целевой переменной, хорошей идеей является кластеризация, но KMeans с одним кластером может слишком упростить ситуацию. Вместо этого попробуйте использовать KMeans с несколькими кластерами (например, 3–5), а затем проанализируйте центроиды, чтобы найти репрезентативный профиль. Каждый центроид даст вам средний профиль для этого кластера.
В качестве альтернативы вы можете использовать анализ главных компонентов (PCA) для определения основных характеристик, которые изменяются меньше всего, что дает вам представление о «стандартных» функциях в наборе данных.
RandomForest больше связан с классификацией или регрессией с целевой переменной, поэтому здесь он менее полезен. При использовании подхода НЛП, если у вас много текстовых данных, вы можете попробовать тематическое моделирование (например, LDA), чтобы найти закономерности в описаниях или названиях должностей.
Итак, пока придерживайтесь кластеризации KMeans или PCA!
Спасибо за ответ!! У меня есть второй набор данных с «потенциальными новыми клиентами». И я хочу классифицировать по шкале от 0 до 100, какие из них действительно могут стать новыми клиентами на основе существующих. Вот почему я подумал о том, чтобы сначала создать стандартный профиль существующих клиентов. Считаете ли вы, что в этом случае KMeans и PCA по-прежнему будут хорошим выбором? Я думаю, да, да? А затем используйте cosine_similarity
, чтобы сравнить существующих клиентов с потенциальными новыми клиентами.
Может быть, Регрессия или Анализ принципиальных компонентов. Регрессия позволяет определить, какие переменные или комбинации переменных наиболее значимы, а какие не имеют значения.
(Примечание: «Регрессия» связана с тем, что первоначальное изобретение математики должно было показать, как виды «регрессируют» обратно к своей совершенной форме. Это было до того, как была принята эволюция и считалось, что люди рождаются с отклонениями от идеальной формы вида). были отбракованы в результате естественного отбора. Таким образом, «идеальная» длина ног в зависимости от общего роста может быть найдена на основе регрессии многих примеров видов. Гениальность Дарвина заключалась в том, что он рассматривал естественный отбор как творческую, а не стабилизирующую силу.)
Пожалуйста, ознакомьтесь с примечанием в теге wiki, посвященном машинному обучению.