Справочник Statsoft (778920), страница 9
Текст из файла (страница 9)
В задачах анализа временных рядов целью является прогноз будущих значений переменной, зависящей от времени, на основе предыдущих значений ее и/или других переменных (Bishop, 1995)
Как правило, прогнозируемая переменная является числовой, поэтому прогнозирование временных рядов - это частный случай регрессии. Однако такое ограничение не заложено в пакет ST Neural Networks, так что в нем можно прогнозировать и временные ряды номинальных (т.е. классифицирующих) переменных.
Обычно очередное значение временного ряда прогнозируется по некоторому числу его предыдущих значений (прогноз на один шаг вперед во времени). В пакете ST Neural Networks можно выполнять прогноз на любое число шагов. После того, как вычислено очередное предполагаемое значение, оно подставляется обратно и с его помощью (а также предыдущих значений) получается следующий прогноз - это называется проекцией временного ряда. В пакете ST Neural Networks можно осуществлять проекцию временного ряда и при пошаговом прогнозировании. Понятно, что надежность такой проекции тем меньше, чем больше шагов вперед мы пытаемся предсказать. В случаях, когда требуется совершенно определенная дальность прогноза, разумно будет специально обучить сеть именно на такую дальность.
В пакете ST Neural Networks для решения задач прогноза временных рядов можно применять сети всех типов (тип сети должен подходить, в зависимости от задачи, для регрессии или классификации). Сеть конфигурируется для прогноза временного ряда установкой параметров Временное окно - Steps и Горизонт - Lookahead. Параметр Временное окно задает число предыдущих значений, которые следует подавать на вход, а параметр Горизонт указывает, как далеко нужно строить прогноз. Количество входных и выходных переменных может быть произвольным. Однако, чаще всего в качестве входной и одновременно (с учетом горизонта) выходной выступает единственная переменная. При конфигурировании сети для анализа временных рядов изменяется метод пре-процессирования данных (извлекаются не отдельные наблюдения, а их блоки), но обучение и работа сети происходят точно так же, как и в задачах других типов.
В задачах анализа временных рядов обучающее множество данных, как правило, бывает представлено значениями одной переменной, которая является входной/выходной (т.е. служит для сети и входом, и выходом).
В задачах анализа временных рядов особую сложность представляет интерпретация понятий обучающего, контрольного и тестового множеств, а также неучитываемых данных. В обычной ситуации каждое наблюдение рассматривается независимо, и никаких вопросов здесь не возникает. В случае же временного ряда каждый входной или выходной набор составлен из данных, относящихся к нескольким наблюдениям, число которых задается параметрами сети Временное окно - Steps и Горизонт - Lookahead. Из этого следуют два обстоятельства:
Категория, которое будет отнесен набор, определяется категорией выходного наблюдения. Например, если в исходных данных первые два наблюдения не учитываются, а третье объявлено тестовым, и значения параметров Временное окно и Горизонт равны соответственно 2 и 1, то первый используемый набор будет тестовым, его входы будут браться из первых двух наблюдений, а выход - из третьего. Таким образом, первые два наблюдения, хотя и помечены как не учитываемые, используются в тестовом множестве. Более того, данные одного наблюдения могут использоваться сразу в трех наборах, каждый из которых может быть обучающим, контрольным или тестовым. Можно сказать, что данные "растекаются" по обучающему, контрольному и тестовому множествам. Чтобы полностью разделить эти множества, пришлось бы сформировать отдельные блоки обучающих, контрольных и тестовых наблюдений, отделенные друг от друга достаточным числом неучитываемых наблюдений.
Несколько первых наблюдений можно использовать только в качестве входных данных. При выборе наблюдений во временном ряду номер наблюдения всегда соответствует выходному значению. Поэтому первые несколько наблюдений вообще невозможно выбрать (для этого были бы нужны еще несколько наблюдений, расположенных перед первым наблюдением в исходных данных), и они автоматически помечаются как неучитываемые.
В начало |
Отбор переменных и понижение размерности
До сих пор, говоря о построении и конструировании сети, мы предполагали, что входной и выходной слои заданы, то есть, что мы уже знаем, какие переменные будут подаваться на вход сети, и что будет ее выходом. То, какие переменные будут выходными, известно всегда (по крайней мере в случае управляемого обучения). Что же касается входных переменных, их правильный выбор порой представляет большие трудности (Bishop, 1995). Часто мы не знаем заранее, какие из входных переменных действительно полезны для решения задачи, и выбор хорошего множества входов бывает затруднен целым рядом обстоятельств:
-
Проклятие размерности. Каждый дополнительный входной элемент сети - это новая размерность в пространстве данных. С этой точки зрения становится понятно следующее: чтобы достаточно плотно "заселить" N-мерное пространство и "увидеть" структуру данных, нужно иметь довольно много точек. Необходимое число точек быстро возрастает с ростом размерности пространства (грубо говоря, как 2**N для большинства методов). Большинство типов нейронных сетей (в частности, многослойный персептрон MLP) в меньшей степени страдают от проклятия размерности, чем другие методы, потому что сеть умеет следить за проекциями участков многомерного пространства в пространства малой размерности (например, если все веса, выходящие из некоторого входного элемента, равны нулю, то MLP-сеть полностью игнорирует эту входную переменную). Тем не менее, проклятие размерности остается серьезной проблемой, и качество работы сети можно значительно улучшить, исключив ненужные входные переменные. На самом деле, чтобы уменьшить эффект проклятия размерности иногда бывает целесообразно исключить даже те входные переменные, которые несут в себе некоторою (небольшую) информацию.
-
Внутренние зависимости между переменными. Было бы очень хорошо, если бы каждую переменную - кандидата на то, чтобы служить входом сети, можно было бы независимо оценить на "полезность", а затем отобрать самые полезные переменные. К сожалению, как правило, это бывает невозможно сделать, и две или более взаимосвязанных переменных могут вместе нести существенную информацию, которая не содержится ни в каком их подмножестве. Классическим примером может служить задача с двумя спиралями, в которой точки данных двух классов расположены вдоль двух переплетающихся двумерных спиралей. Ни одна из переменных в отдельности не несет никакой полезной информации (классы будут выглядеть совершенно перемешанными), но глядя на обе переменные вместе, классы легко разделить. Таким образом, в общем случае переменные нельзя отбирать независимо.
-
Избыточность переменных. Часто бывает так, что одна и та же информация в большей или меньшей степени повторяется в разных переменных. Например, данные о росте и весе человека, как правило, несут в себе сходную информацию, поскольку они сильно коррелированы. Может оказаться так, что в качестве входов достаточно взять лишь часть из нескольких коррелированных переменных, и этот выбор может быть произвольным. В таких ситуациях вместо всего множества переменных лучше взять их часть - этим мы избегаем проклятия размерности.
Итак, выбор входных переменных - это исключительно важный этап при построении нейронной сети. Перед тем, как непосредственно начинать работать с пакетом ST Neural Networks , имеет смысл произвести предварительный отбор переменных, используя при этом свои знания в предметной области и стандартные статистические критерии. Затем, уже средствами пакета ST Neural Networks можно будет попробовать различные комбинации входных переменных. В пакете ST Neural Networks имеется возможность "игнорировать" некоторые переменные, так что полученная сеть не будет использовать их в качестве входов. Можно поочередно экспериментировать с различными комбинациями входов, строя всякий раз новые варианты сетей.
При таком экспериментировании очень полезными оказываются вероятностные и обобщенно-регрессионные сети. Несмотря на то, что они работают медленнее более компактных MLP и RBF сетей, они обучаются почти мгновенно, и это важно, поскольку при переборе большого числа комбинаций входных переменный приходится каждый раз строить новые сети. Кроме того, PNN и GRNN (как и RBF) - это радиальные сети (в первом слое они имеют радиальные элементы, и аппроксимирующие функция строятся в виде комбинаций гауссовых функций). При отборе входных переменных это является преимуществом, поскольку радиальные сети в меньшей степени страдают от проклятия размерности, чем сети, построенные на линейных элементах.
Чтобы понять причину этого, рассмотрим, что произойдет, если мы добавим в сеть новую, возможно совершенно несущественную входную переменную. Сеть на линейных элементах, например MLP, может научиться присваивать весам, идущим от этой переменной, нулевые значения, что означает игнорирование переменной (реально это происходит так: изначально малые веса этой переменной так и остаются малыми, а веса содержательных входных переменных меняются нужным образом). Радиальная сеть типа PNN или GRNN не может позволить себе такую роскошь: кластеры, образующиеся в пространстве небольшого числа существенных переменных, будут "размазаны" по направлениям несущественных размерностей - для учета разброса по несущественным направлениям требуется большее число элементов. Сеть, в большей степени страдающая от наличия плохих входных данных, имеет преимущество, когда мы стремимся избавиться то этих плохих данных.
Поскольку описанный процесс экспериментирования занимает много времени, в пакете ST Neural Networks имеется инструмент, который может сделать это за Вас. Для выбора подходящей комбинации входных переменных здесь используется так называемый генетический алгоритм (Goldberg, 1989). Генетические алгоритмы хорошо приспособлены для задач такого типа, поскольку они позволяют производить поиск среди большого числа комбинаций при наличии внутренних зависимостей в переменных.
Существует и другой подход к проблеме размерности, который может использоваться как альтернатива или как дополнение к методам отбора переменных: это понижение размерности. Суть его состоит в том, что исходная совокупность переменных преобразуется в новую совокупность, состоящую из меньшего числа переменных, но при этом (как мы надеемся) содержащую по возможности всю информацию, заложенную в исходных данных. В качестве примера рассмотрим данные, все точки которых расположены на некоторой плоскости в трехмерном пространстве. Истинная размерность данных равна двум (поскольку вся информация на самом деле содержится в двумерном подпространстве). Если мы сумеем обнаружить эту плоскость, то на вход нейронной сети можно будет подавать входные данные меньшей размерности, и будет больше шансов на то, что такая сеть будет работать правильно.
Самый распространенный метод понижения размерности - это анализ главных компонент (Bishop, 1995; см. также Факторный анализ). Метод состоит в следующем: к данным применяется линейное преобразование, при котором направлениям новых координатных осей соответствуют направления наибольшего разброса исходных данных. Как правило, уже первая компонента отражает большую часть информации, содержащейся в данных. Поскольку анализ главных компонент (АГК) представляет собой линейный метод, его можно реализовать с помощью линейной сети, и в пакете ST Neural Networks предусмотрена возможность обучать линейную сеть для выполнения АГК. Очень часто метод АГК выделяет из многомерных исходных данных совсем небольшое число компонент, сохраняя при этом структуру информации.
Один из недостатков метода главных компонент (АГК) состоит в том, что это чисто линейный метод, и из-за этого он может не учитывать некоторые важные характеристики структуры данных. В пакете ST Neural Networks реализован также вариант "нелинейного АГК", основанный на использовании так называемой автоассоциативной сети (Bishop, 1995; Fausett, 1994; Bouland and Kamp, 1988). Это такая нейронная сеть, которую обучают выдавать в качестве выходов свои собственные входные данные, но при этом в ее промежуточном слое содержится меньше нейронов, чем во входном и выходном слоях. Поэтому, чтобы восстановить свои входные данные, сеть должна научиться представлять их в более низкой размерности. Сеть "впихивает" наблюдения в формат промежуточного слоя и только потом выдает их на выходе. После обучения автоассоциативной сети ее внешний интерфейс может быть сохранен и использован для понижения размерности. Как правило, в качестве автоассоциативной сети берется многослойный персептрон с тремя промежуточными слоями. При этом средний слой отвечает за представление данных в малой размерности, а два других скрытых слоя служат соответственно для нелинейного преобразования входных данных в средний слой и выходов среднего слоя в выходной слой. Автоассоциативная сеть с единственным промежуточным слоем может выполнять только линейное понижение размерности, и фактически осуществляет АГК в стандартном варианте.
В начало |
(c) Copyright StatSoft, Inc., 1984-2001
STATISTICA является торговой маркой StatSoft, Inc.