Какой тип алгоритма вы бы использовали для прогнозирования будущей производительности на основе исторических данных? - PullRequest
2 голосов
/ 19 июня 2009

В прошлом мы использовали сводку исторической производительности "Продавца", чтобы решить, как распределить новый бизнес для каждого поставщика.

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

Например, давайте скажем, что сейчас у меня есть три Продавца и 9 частей бизнеса для раздачи. В настоящее время я просто раздаю информацию о результатах своей деятельности. Однако это не учитывает их сильные стороны по географии, размеру, возрасту и т. Д.

Итак, допустим, Vendor-A действительно хорошо справляется с небольшими счетами в Техасе, а Vendor-B хорошо работает с большими счетами во Флориде. Я хочу убедиться, что каждый поставщик получает то, в чем он хорош, и не получает бизнеса, в котором он плох.

У нас есть вся эта информация в базе данных, но нет реального алгоритма или подхода для ее извлечения и принятия решений о том, сколько и какого рода бизнесу мы передаем кому. Мы искали службы SQL Server Analysis Services для этой задачи, но мы могли бы использовать некоторые очень общие указания о том, какой алгоритм нам следует использовать для этого.

Кто-нибудь знает какой-нибудь подход или алгоритм, разработанный для обработки сегментации данных, чтобы делать более точные прогнозы?

Ответы [ 6 ]

5 голосов
/ 19 июня 2009

Если у вас достаточно большое количество исторических данных для работы, вы можете использовать наивный байесовский классификатор . Используя функции учетных записей в качестве входных данных, вы можете обучить семейство классификаторов для прогнозирования производительности каждого поставщика.

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

3 голосов
/ 19 июня 2009

Наивный Байес - хороший выбор, но я бы также рассмотрел деревья решений. Основные плюсы в использовании деревьев решений таковы:

  1. Человеку легко понять, что происходит, и настроить его.
  2. Это хорошо, даже если у вас есть только небольшой набор данных для тренировки.

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

Например: вместо возраста в виде числа, вам может быть более интересно указать возрастной диапазон (0-10, 11-20, ...) для целей принятия решения. Аналогично с географией, городом и т. Д.

2 голосов
/ 19 июня 2009

Преобразование общих величин в числовые значения: (добавлено в редактировании)

Вам НУЖЕН какой-то способ получить показатель качества (меру "добродетели") из данных и преобразовать многие из этих вещей в числовые величины. Возможными метриками могут быть время выполнения задачи (в сравнении с первоначальной оценкой, чтобы узнать, не лгут ли они об этом), стоимость, стоимость в сравнении с указанными затратами (чтобы проверить, дают ли они вам правдивые цитаты), и некоторый вид конгломерата для удовлетворения клиента к проекту, над которым они работали.

Регионы / области предыдущих контрактов могут быть закодированы как координаты GPS с X, Y для центра региона для данной транзакции (IE "Калифорния" или "Соединенные Штаты" и width-x, width-y для этой области (границы ошибок). Чтобы увидеть, имеет ли значение география, вы найдете все предыдущие бизнесы в пределах заданного расстояния вашего нового контракта (простая форма: просто проверьте расстояние для всех их предыдущих транзакций, сложную форму с большим количеством данных: какой-то алгоритм кластеризации или 3-ий извлечение поверхности).

Затем вы получаете средневзвешенное значение (метрика качества для предыдущей коммерческой сделки), уменьшенное на (расстояние между текущим желаемым местоположением сделки и предыдущим местоположением сделки). Сложно, но это даст вам региональные бизнес-показатели.

Анализ данных для извлечения значения

Я предлагаю вам преобразовать данные в стандартные кортежи CSV (идентификатор компании, код / ​​координаты региона, размер счета, показатель эффективности), а затем выполнить статистические регрессии и методы численного анализа. Ваша цель - это набор уравнений, описывающих эффективность компании с точки зрения каждой характеристики. Анализ основных компонентов может упростить этот процесс путем определения наиболее важных характеристик для работы компании.

Выбор программного обеспечения:

Честно говоря, этот вид анализа, по сути, является областью программного обеспечения для статистического анализа или анализа данных, а не механизмами анализа SQL, поскольку они являются чисто статистическими и математическими. Если ваши показатели и характеристики являются числовыми и поддаются количественной оценке, R, Matlab, Mathematica и т. Д. Являются хорошим выбором. Если ваш набор данных очень большой, вам нужно инвестировать в самый надежный пакет, который вы можете получить.

Выбор лучшей компании-кандидата: простой случай

Проблема присвоения бизнеса лучшему кандидату является классической задачей оптимизации. Если отношения между переменными и производительностью линейны, у вас есть действительно удобный случай. Методы линейного программирования были разработаны для оптимального решения именно такой проблемы (при условии, что вы можете извлечь отношения).

Выбор лучшей компании-кандидата: сложный случай

Если уравнения производительность-характеристики нелинейны, вам нужна нечеткая логика, чтобы найти лучшее решение. Это будет использовать очень, очень продвинутые алгоритмы, чтобы найти очень хорошее (не обязательно лучшее) решение для бизнеса, когда есть много переменных. По опыту, Mathematica имеет первоклассный набор инструментов оптимизации (на основе генетических алгоритмов) для нелинейной оптимизации, а Matlab также имеет нечеткие логические / генетические алгоритмы для решения этой проблемы. Дополнительные инструменты см. В разделе «Глобальная нелинейная оптимизация».

0 голосов
/ 19 июня 2009

Регрессионный анализ - это то, что вам нужно, линейная регрессия в частности.

0 голосов
/ 19 июня 2009

Рассчитайте дисперсию ваших исторических данных. Это можно использовать для «предсказания» того, что вы увидите в будущем. Если предположение «будущее будет чем-то похожим на прошлое» имеет смысл для вашего процесса. Это довольно просто, и многие sql-серверы предлагают встроенные функции, помогающие выполнять вычисления.

0 голосов
/ 19 июня 2009

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

Затем оцените каждого поставщика по каждой характеристике, например, от 1 до 10.

Затем задайте приоритет каждой характеристике, также может быть от 1 до 10.

Этот приоритет может быть общим или для каждой работы.

Затем вы «просто» умножаете оценку вендора * на приоритетность для каждой желаемой характеристики. Тот, у кого больше всего, получает работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...