Какой алгоритм анализа данных Вы предложили бы для этого конкретного сценария?

Это не связанный вопрос непосредственно программирования, но это о выборе правильного алгоритма анализа данных.

Я хочу вывести возраст людей от их имен от региона, они живут, и если у них есть интернет-продукт или нет. Идея позади него состоит в том что:

  • существуют имена, которые старомодны или популярны в конкретное десятилетие (знаменитости, политики и т.д.) (это не может содержать в США, но в стране интереса это правда),
  • молодые люди склонны жить в очень населенных регионах, тогда как старики предпочитают сельские местности, и
  • Интернет используется больше молодыми людьми, чем стариками.

Я не уверен, содержат ли те предположения, но я хочу протестировать это. Таким образом, то, что я имею, является 100K наблюдениями от нашей базы данных клиентов с

  • приблизительно 500 различных имен (номинальная входная переменная со слишком многими классами)
  • 20 различных регионов (номинальная входная переменная)
  • Интернет Да/Нет (переменная двоичного входа)
  • 91 отличный birthyears (числовая целевая переменная с диапазоном: 1910-1992)

Поскольку у меня есть столько номинальных исходных данных, я не думаю, что регрессия является хорошим кандидатом. Поскольку цель является числовой, я не думаю, что дерево решений является хорошим вариантом также. Кто-либо может предложить меня метод, который применим для такого сценария?

7
задан ercan 1 March 2010 в 16:39
поделиться

4 ответа

Я думаю, вы могли бы разработать дискретные переменные, отражающие разделение, которое вы пытаетесь определить. Не похоже, что вам нужно возвращаться к их точному возрасту.

Одна из возможностей - кластеризовать возрасты, а затем рассматривать кластеры как дискретные переменные. Если это не подходит, есть еще одна возможность - разделить возрасты на интервалы с равным распределением.

Один из способов, который может очень хорошо сработать для ваших целей, - это вместо кластеризации или разделения возрастов напрямую кластеризовать или разбивать средний возраст на имя. То есть создайте список всех средних возрастов и вместо этого работайте с ним. (Тем не менее, в классификаторе могут возникнуть некоторые статистические проблемы, если вы слишком детализировали дискретные категории).

Однако лучше всего, если у вас есть четкое представление о том, какой возрастной диапазон вы считаете подходящим для «молодых» и «старых». Затем используйте их напрямую.

3
ответ дан 7 December 2019 в 01:19
поделиться

Вы можете проверить мастера имени ребенка. Он показывает изменение частоты имен с течением времени и должен помочь преобразовать ваши имена в числовые значения. Кроме того, вы должны иметь возможность использовать плотность населения из данных census.gov для получения числового значения, связанного с вашими регионами. Я бы предложил дополнительный флаг, касающийся доступности доступа DSL - многие сельские районы не имеют покрытия DSL. Отсутствие покрытия = меньший спрос на интернет-услуги.

Сначала я хотел бы разделить ваш ответ на две группы: те, кто с большой вероятностью пользовался компьютером в школе или на работе, и те, кто с меньшей вероятностью. Знакомство с компьютером в раннем возрасте в начале карьеры или учебы, вероятно, в некоторой степени влияет на их вероятность использовать компьютер в более позднем возрасте. Затем вы можете рассмотреть регрессии по группам отдельно. Это должно устранить некоторую естественную корреляцию ваших входных данных.

2
ответ дан 7 December 2019 в 01:19
поделиться

Новый ответ

Я бы попытался использовать регрессию, но указанным мной способом. Я бы попробовал преобразовать в двоичную форму каждую переменную (если это правильный термин). Переменная Internet является двоичной, но я бы разделил ее на два отдельных двоичных значения. Я проиллюстрирую это примером, потому что считаю, что он будет более ярким. В моем примере я просто буду использовать три имени (Гертруда, Дженнифер и Мэри) и интернет-переменную.

У меня 4 женщины. Вот их данные:

Gertrude, Internet, 57
Jennifer, Internet, 23
Gertrude, No Internet, 60
Mary, No Internet, 35

Я бы сгенерировал матрицу A, подобную этой (каждая строка представляет соответствующую женщину в моем списке):

[[1,0,0,1,0], 
 [0,1,0,1,0],
 [1,0,0,0,1],
 [0,0,1,0,1]]

Первые три столбца представляют имена, а последние два - Интернет / Нет Интернета. Таким образом, столбцы представляют

[Gertrude, Jennifer, Mary, Internet, No Internet]

. Вы можете продолжать делать это с другими именами (500 столбцов для имен) и для регионов (20 столбцов для них). Тогда вы просто будете решать стандартную задачу линейной алгебры A * x = b, где b для приведенного выше примера равно

b=[[57],
   [23],
   [60],
   [35]]

. Вы можете беспокоиться, что теперь A будет огромной матрицей, но это огромная, чрезвычайно разреженная матрица и, следовательно, могут быть очень эффективно сохранены в виде разреженной матрицы. Каждая строка содержит 3 единицы, а остальные - 0. Затем вы можете просто решить эту проблему с помощью решателя разреженных матриц.Вы захотите провести какой-то тест корреляции для результирующего прогнозируемого возраста, чтобы увидеть, насколько он эффективен.

3
ответ дан 7 December 2019 в 01:19
поделиться

Я бы использовал алгоритм классификации, который принимает номинальные атрибуты и числовой класс, например M5 (для деревьев или правил). Возможно, я бы совмещал его с мета-классификатором упаковки, чтобы уменьшить дисперсию. Первоначальный алгоритм M5 был изобретен Р. Куинланом, а Йонг Ван внес улучшения.

Алгоритм реализован в R (библиотека RWeka )

Его также можно найти в программном обеспечении машинного обучения с открытым исходным кодом Weka

Дополнительные сведения см .:

Росс Дж. Куинлан: Обучение с помощью непрерывных классов . В: 5-я Австралийская объединенная конференция по искусственному интеллекту, Сингапур, 343-348, 1992.

Y. Ван, И. Х. Виттен: Индукция модельных деревьев для предсказания непрерывных классов . В: Стендовые доклады 9-й Европейской конференции по машинному обучению, 1997 г.

1
ответ дан 7 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: