Вход



Поиск по сайту
Google на mf.grsu.by

  
Главная страница >> Учебный процесс >> Букинист >> OLAP >> Средства аналитической обработки >> Практическое применение средств DM из Analysis Services

Практическое применение средств DM из Analysis Services


Рас Уитни, SQL Magazine OnLine, #02/2001

Взгляд специалиста по OLAP на инструментарий исследования данных в SQL Server 2000

Исследование данных (Data Mining - DM) - одно из самых ценных новшеств SQL Server 2000. Для себя я определяю исследование данных как автоматизированный процесс анализа данных с целью выявления интересной информации. Для исследования данных можно использовать как реляционные источники данных, так и кубы OLAP. Однако интеграция исследования данных и инструментария OLAP сулит большие преимущества, поскольку метаданные кубов уже структурированы таким образом, что пользователь избавлен от необходимости вводить большой объем информации для алгоритмов анализа данных. В настоящей статье речь пойдет об инструментарии для исследования данных, который входит в состав служб аналитической обработки Analysis Services. Я представлю обзор основных особенностей средств исследования данных в Analysis Manager (утилита конфигурации для Analysis Services) и покажу, как использовать их в аналитических приложениях.

Особенности Data Mining

В версии SQL Server 7.0 специалисты Microsoft впервые реализовали аналитическую службу OLAP, предоставляющую возможности составления нерегламентированных (гибких) запросов и анализа данных. В процессе работы с нерегламентированными запросами аналитик точно знает, на какие вопросы клиент хотел бы получить ответы, и просто извлекает нужную информацию из куба OLAP. Например, управляющий заведением типа Fast-food мог бы спросить: <Какова тенденция роста доходов и прибыли от продажи гамбургеров за последние четыре квартала?>

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

Исследование данных средствами DM отличается и от работы с нерегламентированными запросами, и от специального анализа данных. При проведении исследования данных службы Analysis Services путешествуют по информационным измерениям самостоятельно, отыскивают данные, которые относятся к делу, и представляют эти данные пользователю.

SQL Server 2000 применяет для предоставления возможностей DM новый интерфейс приложений (API), называемый OLE DB for Data Mining (OLE DB for DM). Этот программный интерфейс был разработан специально для того, чтобы унифицировать возможности DM с учетом интересов нескольких различных представлений. В OLE DB for DM корпорация Microsoft предлагает два алгоритма исследования данных, но этот интерфейс могут применять и независимые разработчики программного обеспечения. Теоретически аналитические приложения, разработанные на OLE DB for DM, смогут применять новые алгоритмы, как только они станут доступны.

В состав SQL Server 2000 вошли два алгоритма DM, так называемые деревья принятия решений и алгоритм кластеризации. Деревья принятия решений классифицируют информацию, используя для этого древовидную структуру, что помогает предсказывать некоторые атрибуты данных. К примеру, можно ввести информацию о заказчике (его доходы, семейное положение, образование и т.п.) в алгоритм дерева принятия решений, чтобы представить себе его способность вернуть полученный кредит, то есть провести оценку риска его кредитования. Алгоритм кластеризации можно с успехом применять для обнаружения естественного группирования данных. К примеру, можно ввести всю информацию о заказчиках в алгоритм кластеризации и дать задание разбить их на три группы. Алгоритм может выявить одну естественную группу женатых, высокообразованных людей с низкими доходами. Во вторую группу войдут одинокие люди с высокими доходами, а в третью - малообразованные люди с высокими доходами. Дальнейший анализ может выявить, что у одной группы прослеживается явно выраженный стереотип покупок. Исходя их этой информации, можно разработать стратегию ценообразования, а также провести целевую маркетинговую кампанию. Обратите внимание на то, что в определении второй и третьей групп были использованы не все три введенных параметра, поскольку не все они оказали влияние на формирование этих групп. Так, например, в описание второй группы не входит уровень образования, поскольку этот параметр оказался несущественным - для членов этой группы нельзя однозначно идентифицировать определенный уровень образования.

Применение Analysis Services

Если исследование данных средствами DM проводится чаще в кубах OLAP, чем в реляционных источниках данных, то не приходится напрямую использовать OLE DB for DM, поскольку Analysis Services демонстрируют возможности исследования данных через свои программные интерфейсы. На сервере можно получить доступ к средствам исследования данных через Decision Support Objects (DSO); а на клиентской машине - через OLE DB for OLAP или ActiveX Data Object Multidimensional (ADO MD).

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

Создание модели исследования

Чтобы приступить к созданию модели исследования, откройте Analysis Manager и раскройте дерево на левой панели настолько, чтобы попасть в базу данных FoodMart 2000. Там вы увидите папку моделей исследования, Mining Models. Модель исследования определяет конкретные данные, подлежащие исследованию, и тип ваших предсказаний относительно этой информации. Щелкните правой кнопкой на папке моделей и выберите из контекстного меню пункт New Mining Model. На экране появится мастер создания моделей исследования. Сначала он спросит, с каким источником данных предстоит работать, с реляционным или многомерным. Выберите многомерный, Multidimensional, а затем щелкните Next. После этого выберите куб для исследования (например, Sales).На третьем шаге мастер предложит выбрать алгоритм исследования. Выберите Microsoft Decision Trees и нажмите Next.

На следующем шаге выбирается ситуация для исследования. Ситуация представляет собой множество подлежащих исследованию данных. Выберите размерность Customers и уровень Name. На следующем шаге проводится выбор типа предсказаний, которые будут сделаны. Представьте себе, что алгоритм исследования данных, DM, имеет вход и выход. В данном примере информация о заказчиках соответствует входным параметрам, а выходом будет служить уровень годового дохода в качестве предсказанного параметра. Годовой доход является свойством члена размерности Customers на уровне Name. Выберите соответствующий этому вариант A member property of the case level, а затем, как показано на рисунке 1, пункт Yearly Income, что и означает годовой доход.

Следующий шаг позволяет выбрать ту часть куба OLAP, которая будет использоваться для предсказания годового дохода. Выберите размерность Customers и отметьте все ее уровни, а также пометьте все элементы, расположенные под свойствами Member Properties на уровне Name, как показано на рисунке 2.

Обратите внимание, что именно они используются по умолчанию. Заметьте также, что параметр <годовой доход> выступает в двух качествах: и как входной, и как выходной. Это естественно на этапе обучения (настройки) модели. Чтобы провести обучение модели исследования данных, необходимо сообщить алгоритму правильные ответы, в нашем примере это фактические цифры годового дохода реально существующих заказчиков.

Нажмите Next для создания размерности OLAP и виртуального куба. Заполните диалоговое окно, как показано на рисунке 3.

Мастер создания модели исследования данных построит виртуальный куб, взяв за основу куб Sales и добавив в него новую размерность под именем PredictIncome для хранения предсказанного значения годового дохода. Нажмите Next, чтобы задать имя созданной модели исследования данных и решить, следует ли немедленно приступить к работе с ней. Назовите модель IncomeModel, затем нажмите Save и Process Now. При этом модель будет сохранена, и система немедленно начнет обработку. Когда вы нажмете Finish, Analysis Service сожмет данные и перейдет в режим редактирования модели для просмотра полученных результатов.

На рисунке 4 показан редактор модели исследования данных.

Средняя панель демонстрирует несколько узлов результирующего дерева принятия решений. На рисунке 5 показано полное дерево.

Расположенная в правом верхнем углу панель, помеченная как навигатор содержимого (Content Navigator), представляет в графическом виде все дерево решений. При этом используется цветовая кодировка результатов, то есть более насыщенные цвета представляют большее число заказчиков. На средней панели я выбрал один узел, Customers.Name.Member Card = Normal. Этот узел представляет всех заказчиков, у которых свойство Member Card имеет значение Normal. На панели, размещенной в середине правой части экрана, изображена гистограмма различных уровней годового дохода для этой категории заказчиков. Обратите внимание на то, что для 83 % таких заказчиков годовой доход колеблется от 10 до 30 тысяч долларов. Это означает, что наличие подобной членской карты является хорошим прогнозирующим параметром для заказчиков с таким уровнем доходов. Это заключение не должно удивлять вас, так как модель ввела членские карты по результатам исследования годового дохода и образовательного уровня.

Анализ куба без применения Analysis Manager

Предположим теперь, что вы хотели бы проанализировать куб Trained Income из клиентского приложения, но у вас нет привилегий администратора OLAP, необходимых для запуска Analysis Manager. В этом случае для просмотра тех же гистограмм можно воспользоваться запросом Multidimensional Expression (MDX), приведенным в листинге 1.

ЛИСТИНГ1: Запрос для просмотра информации гистограммы.
 
WITH SET [CustMembers] as `Filter([Customers].[Name].Members, not IsEmpty([Customers].CurrentMember))`
   MEMBER [Measures].[Cust Count] as `Count( Filter( [CustMembers],
    [Customers].CurrentMember.Properties("Yearly Income") =
             [Yearly Income].CurrentMember.Name))`
SELECT { [Measures].[Cust Count] } ON COLUMNS ,
    [Yearly Income].[All Yearly Income].Children  ON ROWS
FROM [TrainedIncome]
WHERE ([PredictIncome].[All].[Customers.Name.Member Card = Normal] )

 

Запрос возвращает число заказчиков для каждого уровня дохода, для которых выполняется условие Member Card = Normal. При обработке этого запроса сначала формируется множество заказчиков (CustMembers) с нормальной членской картой. После этого строится новый показатель для подсчета из этого множества доли заказчиков, которые обладают указанным уровнем дохода.

Создание модели исследования из клиентского приложения

Испытайте несколько различных моделей, чтобы выяснить, какая из них работает лучше. Безусловно, пользователи предпочтут создавать модели для исследования данных на своих персональных компьютерах, а не на сервере, хотя в настоящее время клиентские приложения еще не поддерживают подобную деятельность. Но аналитические приложения клиентов должны обеспечивать такие возможности. Сейчас для создания моделей исследования данных при помощи OLE DB for OLAP или ADO MD можно воспользоваться расширениями, поддерживающими синтаксис MDX. Чтобы создавать модели исследования данных на клиентских компьютерах, необходимо установить на сервере версию SQL Server Enterprise Edition. Это обусловлено тем, что подобные возможности основаны на свойстве Enterprise Edition выполнять откат по заказу.

Создание виртуального куба с размерностями для исследования данных проводится в три этапа. На первом этапе строится модель для исследования данных. Команда, приведенная в листинге 2, генерирует модель для исследования данных при помощи деревьев принятия решений.

ЛИСТИНГ 2: Создание модели исследования данных.
 
CREATE OLAP MINING MODEL [Local Find Salary]
FROM [Sales]
(
   CASE
      DIMENSION [Customers]
      LEVEL [Name]
         PROPERTY [Gender] ,
         PROPERTY [Marital Status] ,
         PROPERTY [Education] ,
         PROPERTY [Yearly Income] PREDICT
)
USING Microsoft_Decision_Trees

 

Она прогнозирует годовой доход на основании пола, семейного положения и образования заказчика.

Обратите внимание на то, что оператор FROM вызывает имя куба, а каждое ключевое слово PROPERTY вызывает свойство члена на уровне Name размерности Customers. После выполнения этой команды появится пустая модель исследования данных, уникальная для вашего соединения с Analysis Services. К этой модели не смогут получить доступ другие рабочие станции. Для создания разделяемых моделей исследования данных надо использовать либо Analysis Manager, либо программный интерфейс DSO. Следующая команда наполняет модель исследования данных информацией из куба Sales. Она представляет собой простой оператор INSERT INTO, указывающий имя модели:

INSERT INTO [Local Find Salary]

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

ЛИСТИНГ 3: Создание виртуального куба.
 
CREATE SESSION VIRTUAL CUBE [PredictIncomeCube]
FROM [Sales]
(
    MEASURE [Sales].[Unit Sales] ,
    DIMENSION [Sales].[Customers],
    DIMENSION [Sales].[Time],
    DIMENSION [PredictIncome] NOT_RELATED_TO_FACTS
       FROM [Local Find Salary]
COLUMN [Customers.Name.Yearly Income]
)

 

В этом операторе я воспользовался только показателем Unit Sales и двумя размерностями, Customers и Time. Последняя размерность, PredictIncome, создается предложением CREATE VIRTUAL CUBE. Ключевое слово NOT_RELATED_TO_FACTS сообщает Analysis Services, что эта размерность не заполняется данными из таблицы, связанной с фактографической таблицей указанного куба. Операторы FROM и COLUMN уточняют, какая модель и какой прогнозируемый параметр модели исследования данных будут использоваться для создания размерности. В SQL Server Books Online содержится много информации, относящейся к этим операторам. Но в версии SQL Server 2000 beta 2, которой я пользовался при написании данной статьи, не оказалось никакой информации, касающейся предложения CREATE VIRTUAL CUBE.

В листинге 4 приведена короткая программа на Visual Basic (VB), которая демонстрирует применение этих команд.

LISTING 4: Option Explicit
 
Const sGUID_SCHEMA_SERVICE_PARAMETERS As String = "{3ADD8A75-D8B9-11D2-8D2A-00E029154FDE}"
Const sGUID_SCHEMA_MINING_SERVICES    As String = "{3ADD8A95-D8B9-11D2-8D2A-00E029154FDE}"
Const sGUID_SCHEMA_MINING_MODELS      As String = "{3ADD8A77-D8B9-11D2-8D2A-00E029154FDE}"
Const sGUID_SCHEMA_MINING_COLUMNS     As String = "{3ADD8A78-D8B9-11D2-8D2A-00E029154FDE}"
Const sGUID_SCHEMA_MODEL_CONTENT      As String = "{3ADD8A76-D8B9-11D2-8D2A-00E029154FDE}"
Const sGUID_SCHEMA_MODEL_CONTENT_PMML As String = "{4290B2D5-0E9C-4AA7-9369-98C95CFD9D13}"
 
Dim m_conn As New ADODB.Connection
 
Private Sub ExecuteMDX(ByVal v_sMDX As String)
    On Error GoTo ErrHandler
 
    Dim cmd As New ADODB.Command
    Dim rec As Recordset
    Dim nNum As Integer
 
    Set cmd.ActiveConnection = m_conn
    cmd.CommandText = v_sMDX
    Set rec = cmd.Execute(nNum)
 
    MsgBox "Command Executed Successfully. " & nNum & " rows affected.",
    vbOKOnly + vbInformation
    Exit Sub
 
ErrHandler:
    MsgBox Err.Description, vbExclamation
End Sub
 
Private Sub Form_Load()
    ` Укажите .2 для поставщика, тогда будет работать только SQL 2000
    ` Соединитесь с сервером на локальном компьютере.  Измените это, если вы
     ` подключаетесь к другому компьютеру, на котором установлена
     ` служба Analysis Services.
    Call m_conn.Open("PROVIDER=MSOLAP.2;Data Source=LOCALHOST;")
 
    ` Создайте модель исследования данных
    Call ExecuteMDX( _
      "CREATE OLAP MINING MODEL [Local Find Salary] " & _
      "From [Sales] " & _
      "( " & _
      "   CASE " & _
      "      Dimension [Customers] " & _
      "      Level [Name] " & _
      "         PROPERTY [Gender] ," & _
      "         PROPERTY [Marital Status] ," & _
      "         PROPERTY [Education] ," & _
      "         PROPERTY [Yearly Income] PREDICT " & _
      ")" & _
      "USING Microsoft_Decision_Trees")
 
    ` Fill the mining model
    Call ExecuteMDX("INSERT INTO [Local Find Salary]")
 
    ` Создайте виртуальный куб на основании модели исследования данных
    Call ExecuteMDX( _
      "CREATE SESSION VIRTUAL CUBE [PredictIncomeCube] " & _
      "FROM [Sales] " & _
      "( " & _
      "    MEASURE [Sales].[Unit Sales] , " & _
      "    DIMENSION [Sales].[Customers], " & _
      "    DIMENSION [Sales].[Time], " & _
      "    DIMENSION [PredictIncome] NOT_RELATED_TO_FACTS " & _
      "      FROM [Local Find Salary] " & _
      "      COLUMN [Customers.Name.Yearly Income] " & _
      ") ")
 
    Dim recCols As Recordset
    Dim vtRestrict As Variant
 
    vtRestrict = Array(Empty, Empty, "Local Find Salary")
 
    ` откройте содержимое модели исследования данных в виде набора строк
    Set recCols = m_conn.OpenSchema(adSchemaProviderSpecific, vtRestrict, _
            sGUID_SCHEMA_MODEL_CONTENT)
 
    ` покажите заголовок каждого узла в результирующем дереве принятия решений
    Do While Not recCols.EOF
        MsgBox recCols.Fields("NODE_CAPTION").Value
        recCols.MoveNext
    Loop
 
    m_conn.Close
End Sub

 

К сожалению, приходится применять программы, подобные этой, а не такие, как приведенный ранее пример MDX. Это обусловлено тем, что должны выполняться команды, возвращающие набор записей, а не стандартный многомерный набор ячеек. Заметьте, что в листинге предусматривается сначала выполнение трех команд, обсуждавшихся выше, и последующее открытие набора строк с собственной схемой Microsoft. Я добавил в демонстрационную программу функцию OpenSchema, чтобы показать, как получить доступ к содержимому модели исследования данных. В этом примере перечисляются только заголовки каждого узла дерева принятия решений. Набор строк структурирован подобно таблице размерности с отношениями родитель-дитя. Каждая строка в этом наборе идентифицирует узел дерева решений и содержит поля NODE_UNIQUE_NAME и PARENT_UNIQUE_NAME. Второе поле содержит уникальный идентификатор родителя, то есть это поле показывает, в какой строке находится <родитель> данной строки. В начале листинга 4 перечислены константы, которые включают и глобальные уникальные идентификаторы (GUID). Они применяются для доступа к специфическим для каждого производителя наборам строк, предназначенных для исследования данных. В своем примере я их не использовал, но они могут понадобиться, если вы решите поэкспериментировать, прежде чем приступать к разработке приложения, позволяющего исследовать данные.

Проще, чем кажется

Когда я впервые прочитал спецификацию на OLE DB for DM, она показалась мне очень сложной. Однако после тщательного изучения спецификации я понял, что такое впечатление возникает из-за информации, необходимой для исследования реляционных источников данных, а не из-за кубов OLAP. Исследование данных OLAP происходит просто, быстро и приносит практическую пользу. Деревья принятия решений предоставляют замечательный способ структурирования больших объемов данных.

Рас Уитни rwhitney@knosysinc.com возглавляет исследовательское отделение в компании Knosys, руководит разработкой клиентского инструментария OLAP. Является членом совета директоров компаний Knosys и Distributed Database Consulting (DDBC).

 

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017