Как использовать машинное обучение, чтобы найти шаблонный профиль клиента?

У меня есть набор данных с личными характеристиками клиентов, которые совершают покупки у вымышленной компании. Изначально у меня нет никакой целевой переменной, только их характеристики. Моя цель — найти закономерность, которая не обязательно может быть наиболее часто встречающейся характеристикой в ​​каждом столбце. Можно ли это сделать, например, с помощью 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 — вариант?

Пожалуйста, ознакомьтесь с примечанием в теге wiki, посвященном машинному обучению.

Ben Reiniger 31.08.2024 01:16
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
1
52
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Чтобы найти наиболее «стандартный» профиль без целевой переменной, хорошей идеей является кластеризация, но KMeans с одним кластером может слишком упростить ситуацию. Вместо этого попробуйте использовать KMeans с несколькими кластерами (например, 3–5), а затем проанализируйте центроиды, чтобы найти репрезентативный профиль. Каждый центроид даст вам средний профиль для этого кластера.

В качестве альтернативы вы можете использовать анализ главных компонентов (PCA) для определения основных характеристик, которые изменяются меньше всего, что дает вам представление о «стандартных» функциях в наборе данных.

RandomForest больше связан с классификацией или регрессией с целевой переменной, поэтому здесь он менее полезен. При использовании подхода НЛП, если у вас много текстовых данных, вы можете попробовать тематическое моделирование (например, LDA), чтобы найти закономерности в описаниях или названиях должностей.

Итак, пока придерживайтесь кластеризации KMeans или PCA!

Спасибо за ответ!! У меня есть второй набор данных с «потенциальными новыми клиентами». И я хочу классифицировать по шкале от 0 до 100, какие из них действительно могут стать новыми клиентами на основе существующих. Вот почему я подумал о том, чтобы сначала создать стандартный профиль существующих клиентов. Считаете ли вы, что в этом случае KMeans и PCA по-прежнему будут хорошим выбором? Я думаю, да, да? А затем используйте cosine_similarity, чтобы сравнить существующих клиентов с потенциальными новыми клиентами.

Heloisa Ramos 30.08.2024 16:01

Может быть, Регрессия или Анализ принципиальных компонентов. Регрессия позволяет определить, какие переменные или комбинации переменных наиболее значимы, а какие не имеют значения.

(Примечание: «Регрессия» связана с тем, что первоначальное изобретение математики должно было показать, как виды «регрессируют» обратно к своей совершенной форме. Это было до того, как была принята эволюция и считалось, что люди рождаются с отклонениями от идеальной формы вида). были отбракованы в результате естественного отбора. Таким образом, «идеальная» длина ног в зависимости от общего роста может быть найдена на основе регрессии многих примеров видов. Гениальность Дарвина заключалась в том, что он рассматривал естественный отбор как творческую, а не стабилизирующую силу.)

Другие вопросы по теме