Что такое дерево моделями каких
Что такое дерево? Моделями каких систем могут служить деревья? Приведите пример такой системы.
Просмотров: 1353 | Добавил: аgent (10.07.2018) (Изменено: 10.07.2018)
Всего ответов: 2 | |
Обсуждение вопроса:Пример: генеалогическое дерево. Дерево — это граф, в котором нет циклов, т. е. в нём нельзя из некоторой вершины пройти по нескольким различным рёбрам и вернуться в ту же вершину. Отличительной особенностью дерева является то, что между любыми двумя его вершинами существует единственный путь. Всякая иерархическая система может быть представлена с помощью дерева. У дерева выделяется одна главная вершина, называемая его корнем. Каждая вершина дерева (кроме корня) имеет только одного предка, обозначенный предком объект входит в один класс (класс — множество объектов, обладающих общими признаками.) высшего уровня. Любая вершина дерева может порождать несколько потомков — вершин, соответствующих классам нижнего уровня. Такой принцип связи называется «один-ко-многим». Вершины, не имеющие порождённых вершин, называются листьями. Родственные связи между членами семьи удобно изображать с помощью графа, называемого генеалогическим или родословным деревом. 2.6. Дерево моделиДерево построения документа — структурированный список («дерево») объектов, отражающий последовательность создания документа. Отображение значка «+» рядом с объектом означает, что он имеет подчиненные объекты. Чтобы развернуть их список, щелкните мышью на значке. Контекстные меню объектов Дерева построения облегчают доступ к командам, которые наиболее часто используются при работе с объектами данного типа. При работе с любой деталью на экране может отображаться окно, содержащее Дерево модели. Дерево модели — это графическое представление набора объектов, составляющих деталь. Корневой объект Дерева — сама деталь. Пиктограммы объектов автоматически возникают в Дереве модели сразу после фиксации этих объектов в детали. В зависимости от выбранного варианта отображения объекты детали могут располагаться в Дереве в порядке создания или группироваться по типам. Дерево модели отображается в отдельном окне, которое всегда находится внутри окна документа-детали. В верхней части окна Дерева находится Панель управления, содержащая четыре кнопки: В Дереве модели отображаются: обозначение начала координат, плоскости, оси, эскизы, операции и Указатель окончания построения модели. Эскиз, задействованный в любой операции, размещается на «ветви» Дерева модели, соответствующей этой операции. Слева от названия операции в Дереве отображается знак «+». После щелчка мышью на этом знаке в Дереве разворачивается список участвующих в операции эскизов. Эскизы, не задействованные в операциях, отображаются на верхнем уровне Дерева модели. Каждый элемент автоматически возникает в Дереве модели сразу после того, как он создан. Название присваивается элементам также автоматически в зависимости от способа, которым они получены. Например, «Ось через ребро», «Плоскость через три вершины», «Операция вращения», «Фаска» и т. д. В детали может существовать множество однотипных элементов. Чтобы различать их, к названию элемента автоматически прибавляется порядковый номер элемента данного типа. Например, «Скругление:1» и «Скругление:2». Можно переименовать любой элемент в Дереве модели. Для этого необходимо дважды щелкнуть мышью по его названию; оно откроется для редактирования. Введите новое название элемента и щелкните мышью вне списка элементов дерева. Новое название элемента будет сохранено в Дереве модели. Слева от названия каждого объекта в Дереве отображается пиктограмма, соответствующая способу, которым этот элемент получен. Пиктограмму, в отличие от названия объекта, изменить невозможно. Благодаря этому при любом переименовании элементов в Дереве построения остается наглядная информация о способе и порядке их создания. Дерево модели служит не только для фиксации последовательности построения, но и для облегчения выбора и указания объектов при выполнении команд. Обычно пиктограммы отображаются в Дереве модели синим цветом. Если объект выделен, то его пиктограмма в Дереве зеленая. Если объект указан для выполнения операции, то его пиктограмма в Дереве красная. Можно отключить показ Дерева модели. Для этого из меню Вид вызывается команда Дерево модели. Чтобы включить показ Дерева, команда вызывается снова. Когда показ Дерева включен, рядом с названием команды в меню отображается «галочка». Данный текст является ознакомительным фрагментом. Продолжение на ЛитРес Читайте такжеДерево семейства процессовДерево семейства процессов В операционной системе Linux существует четкая иерархия процессов. Все процессы являются потомками процесса init, значение идентификатора PID для которого равно 1. Ядро запускает процесс init на последнем шаге процедуры загрузки системы. Процесс init, в Базисное деревоБазисное дерево Так как ядро должно проверять наличие страниц в страничном кэше перед тем, как запускать любую операцию страничного ввода-вывода, то этот поиск должен выполняться быстро. В противном случае затраты на поиск могут свести на нет все выгоды кэширования (по Семантическое DOM-деревоСемантическое DOM-дерево Логическим продолжением уже проведенных исследований CSS/DOM-производительности браузеров стало рассмотрение зависимости времени создания документа от числа тегов (узлов дерева). Раздельно были проанализированы случаи, когда DOM-дерево является Глава 5 Дерево каталогов LinuxГлава 5 Дерево каталогов Linux Эта глава полностью посвящена структуре и размещению каталогов и файлов в Linux. Поскольку для различных дистрибутивов структура может слегка отличаться, для определенности будем рассматривать дистрибутив Red Hat 7.1.Для того чтобы ориентироваться 5.6 Всемирное дерево имен5.6 Всемирное дерево имен Имена Интернета структурированы как дерево (см. рис. 5.1). Каждому узлу дерева присвоена метка. Каждый узел дерева имеет имя, называемое именем домена (domain name). Имя домена для узла создается из меток, проходимых по пути от этого узла до вершины дерева. 20.5.1 Дерево SMI20.5.1 Дерево SMI Вспомним, что первоначально SNMP предполагался как временное решение до выпуска стандартов управления ISO. На рис. 20.4 дерево администрирования/именования отражает первичные попытки согласования с ISO. Рис. 20.4. Дерево администрирования и именования SMIУзлы вверху Wood (Дерево)Wood (Дерево) Текстура дерева имеет большое значение при разработке дизайна. Рисунок поверхности среза дерева часто используется для декорирования объектов интерьера. Рисунок дерева наносится на предметы мебели, сделанные из ДСП, пластика и других материалов, бытовую Вставка в красно-черное деревоВставка в красно-черное дерево Теперь, когда мы ознакомились с правилами, определяющими структуру красно-черного дерева, возникает вопрос, как их использовать для вставки нового узла в красно-черное дерево? Начнем со знакомой операции, и выполним поиск узла. Если он будет Сортирующее деревоВставка в сортирующее деревоВставка в сортирующее дерево Рассмотрим алгоритмы вставки и удаления. Вначале ознакомимся со вставкой. Чтобы вставить элемент в сортирующее дерево, мы добавляем его в конец этого дерева, в единственную позицию, которая соответствует требованию полноты (на рис. 5 этой Глава 3. Связывание модели процессов и модели данных 3.1. Модель данных и ее соответствие модели процессов Функциональная модель BPwin является основой для построения модели данных. Действительно, не имея информации о том, как работает предприятие, бессмысленно строить 4.2. Создание модели данных на основе объектной модели с помощью ERwin Translation Wizard4.2. Создание модели данных на основе объектной модели с помощью ERwin Translation Wizard Rational Rose позволяет строить объектную модель, но не может построить качественную физическую модель данных. Для решения этой задачи фирмой PLATINUM technology выпущена утилита ERwin Translation Wizard, позволяющая 10.2. AVL-дерево: приближенно сбалансированное дерево10.2. AVL-дерево: приближенно сбалансированное дерево AVL-дерево — это дерево, обладающее следующими свойствами:(1) Левое и правое поддеревья отличаются по глубине не более чем на 1.(2) Оба поддерева являются AVL-деревьями.Деревья, удовлетворяющие этому определению, могут быть 2.6. Дерево модели2.6. Дерево модели Дерево построения документа — структурированный список («дерево») объектов, отражающий последовательность создания документа. Отображение значка «+» рядом с объектом означает, что он имеет подчиненные объекты. Чтобы развернуть их список, щелкните Все что нужно знать о древовидных структурах данныхJul 1, 2018 · 14 min read Деревья прекрасны. Вот рисунок, который я сделал ребенком Когда вы впервые учитесь кодировать, общепринято изучать массивы в качестве «основной структуры данных». В конце концов, вы также изучаете хэш-таблицы. Для получения степени по «Компьютерным наукам» (Computer Science) вам придется походить на занятия по структурам данных, на которых вы узнаете о связанных списках, очередях и стеках. Эти структуры данных называются «линейными», поскольку они имеют логические начало и завершение. Однако в самом начале и зучения деревьев и графов мы можем оказаться слегка сбитыми с толку. Нам привычно хранить данные линейным способом, а эти две структуры хранят данные совершенно иначе. Данная статья поможет вам лучше понять древовидные структуры данных и устранить все недоразумения на их счет. Из этой статьи вы узнаете: Давайте начнем наше учебное путешествие 🙂 ОпределенияКогда вы только начинаете изучать программирование, обычно бывает проще понять, как строятся линейные структуры данных, чем более сложные структуры, такие как деревья и графы. Деревья являются широко известными нелинейными структурами. Они хранят данные не линейным способом, а упорядочивают их иерархически. Давайте вплотную займемся реальными примерамиЧто я имею в виду, когда я говорю иерархически? Представьте себе генеалогическое древо отношений между поколениями: бабушки и дедушки, родители, дети, братья и сестры и т.д. Мы обычно организуем семейные деревья иерархически. Мое фамильное дерево Приведенный рисунок — это мое фамильное древо. Тосико, Акикадзу, Хитоми и Такеми — мои дедушки и бабушки. Тошиаки и Джулиана — мои родители. ТК, Юдзи, Бруно и Кайо — дети моих родителей (я и мои братья). Структура организации — еще один пример иерархии. Структура компании является примером иерархии В HTML, объектная модель документа (DOM) представляется в виде дерева. Объектная модель документа (DOM) Техническое определениеДерево представляет собой набор объектов, называемых узлами. Узлы соединены ребрами. Каждый узел содержит значение или данные, и он может иметь или не иметь дочерний узел. Первый узел дерева называется корнем. Если этот корневой узел соединен с другим узлом, тогда корень является родительским узлом, а связанный с ним узел — дочерним. Все узлы дерева соединены линиями, называемыми ребрами. Это важная часть деревьев, потому что она управляет связью между узлами. Листья — это последние узлы на дереве. Это узлы без потомков. Как и в реальных деревьях, здесь имеется корень, ветви и, наконец, листья. Другими важными понятиями являются высота и глубина. Высота дерева — это длина самого длинного пути к листу. Глубина узла — это длина пути к его корню. Справочник терминовБинарные деревьяТеперь рассмотрим особый тип деревьев, называемых бинарными или двоичными деревьями. “В информатике бинарным (двоичным) деревом называется иерархическая структура данных, в которой каждый узел имеет не более двух потомков (детей). Как правило, первый называется родительским узлом, а дети называются левым и правым наследниками.” — Wikipedia Рассмотрим пример бинарного дерева. Давайте закодируем бинарное деревоКак мы реализуем простое двоичное дерево, которое инициализирует эти три свойства? Вот наш двоичный класс дерева. Когда мы создаем наш узел, он не имеет потомков. Просто есть данные узла. Давайте это проверим: Перейдем к части вставки. Что нам нужно здесь сделать? Мы реализуем метод вставки нового узла справа и слева. Давайте это нарисуем 🙂 Вот программный код: Еще раз, если текущий узел не имеет левого дочернего элемента, мы просто создаем новый узел и устанавливаем его в качестве left_child текущего узла. Или мы создаем новый узел и помещаем его вместо текущего левого потомка. Назначим этот левый дочерний узел в качестве левого дочернего элемента нового узла. И мы делаем то же самое, чтобы вставить правый дочерний узел. Но не полностью. Осталось протестировать. Давайте построим следующее дерево: Подытоживая изображенное дерево, заметим: Таким образом, вот код для нашего дерева следующий: Теперь нам нужно подумать об обходе дерева. У нас есть два варианта: поиск в глубину (DFS) и поиск по ширине (BFS). • Поиск в глубину (Depth-first search, DFS) — один из методов обхода дерева. Стратегия поиска в глубину, как и следует из названия, состоит в том, чтобы идти «вглубь» дерева, насколько это возможно. Алгоритм поиска описывается рекурсивно: перебираем все исходящие из рассматриваемой вершины рёбра. Если ребро ведёт в вершину, которая не была рассмотрена ранее, то запускаем алгоритм от этой нерассмотренной вершины, а после возвращаемся и продолжаем перебирать рёбра. Возврат происходит в том случае, если в рассматриваемой вершине не осталось рёбер, которые ведут в не рассмотренную вершину. Если после завершения алгоритма не все вершины были рассмотрены, то необходимо запустить алгоритм от одной из не рассмотренных вершин. • Поиск в ширину (breadth-first search, BFS) — метод обхода дерева и поиска пути. Поиск в ширину является одним из неинформированных алгоритмов поиска. Поиск в ширину работает путём последовательного просмотра отдельных уровней дерева, начиная с узла-источника. Рассмотрим все рёбра, выходящие из узла. Если очередной узел является целевым узлом, то поиск завершается; в противном случае узел добавляется в очередь. После того, как будут проверены все рёбра, выходящие из узла, из очереди извлекается следующий узел, и процесс повторяется. Давайте подробно рассмотрим каждый из алгоритмов обхода. Поиск в глубину (DFS)DFS исследует все возможные пути вплоть до некоторого листа дерева, возвращается и исследует другой путь (осуществляя, таким образом, поиск с возвратом). Давайте посмотрим на пример с этим типом обхода. Результатом этого алгоритма будет: 1–2–3–4–5–6–7. Давайте разъясним это подробно. Проход в глубь дерева, а затем возврат к исходной точке называется алгоритмом DFS. После знакомства с этим алгоритмом обхода, рассмотрим различные типы DFS-алгоритма: предварительный обход (pre-order), симметричный обход (in-order) и обход в обратном порядке (post-order). Предварительный обходИменно это мы и делали в вышеприведенном примере. 1. Записать значение узла. 2. Перейти к левому потомку и записать его. Это выполняется тогда и только тогда, когда имеется левый потомок. 3. Перейти к правому потомку и записать его. Это выполняется тогда и только тогда, когда имеется правый потомок. Открытый курс машинного обучения. Тема 3. Классификация, деревья решений и метод ближайших соседейПривет всем, кто проходит курс машинного обучения на Хабре! В первых двух частях (1, 2) мы попрактиковались в первичном анализе данных с Pandas и в построении картинок, позволяющих делать выводы по данным. Сегодня наконец перейдем к машинному обучению. Поговорим о задачах машинного обучения и рассмотрим 2 простых подхода – деревья решений и метод ближайших соседей. Также обсудим, как с помощью кросс-валидации выбирать модель для конкретных данных. UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub. Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017). ВведениеНаверное, хочется сразу рвануть в бой, но сначала поговорим про то, какую именно задачу будем решать и каково ее место в области машинного обучения.
Далее в разных сценариях под T, P, и E подразумеваются совершенно разные вещи. Среди самых популярных задач T в машинном обучении: Под опытом E понимаются данные (без них никуда), и в зависимости от этого алгоритмы машинного обучения могут быть поделены на те, что обучаются с учителем и без учителя (supervised & unsupervised learning). В задачах обучения без учителя имеется выборка, состоящая из объектов, описываемых набором признаков. В задачах обучения с учителем вдобавок к этому для каждого объекта некоторой выборки, называемой обучающей, известен целевой признак – по сути это то, что хотелось бы прогнозировать для прочих объектов, не из обучающей выборки. ПримерЗадачи классификации и регрессии – это задачи обучения с учителем. В качестве примера будем представлять задачу кредитного скоринга: на основе накопленных кредитной организацией данных о своих клиентах хочется прогнозировать невозврат кредита. Здесь для алгоритма опыт E – это имеющаяся обучающая выборка: набор объектов (людей), каждый из которых характеризуется набором признаков (таких как возраст, зарплата, тип кредита, невозвраты в прошлом и т.д.), а также целевым признаком. Если этот целевой признак – просто факт невозврата кредита (1 или 0, т.е. банк знает о своих клиентах, кто вернул кредит, а кто – нет), то это задача (бинарной) классификации. Если известно, на сколько по времени клиент затянул с возвратом кредита и хочется то же самое прогнозировать для новых клиентов, то это будет задачей регрессии. Наконец, третья абстракция в определении машинного обучения – это метрика оценки производительности алгоритма P. Такие метрики различаются для разных задач и алгоритмов, и про них мы будим говорить по мере изучения алгоритмов. Пока скажем, что самая простая метрика качества алгоритма, решающего задачу классификации – это доля правильных ответов (accuracy, не называйте ее точностью, этот перевод зарезервирован под другую метрику, precision) – то есть попросту доля верных прогнозов алгоритма на тестовой выборке. Далее будем говорить о двух задачах обучения с учителем: о классификации и регресcии. Дерево решенийНачнем обзор методов классификации и регрессии с одного из самых популярных – с дерева решений. Деревья решений используются в повседневной жизни в самых разных областях человеческой деятельности, порой и очень далеких от машинного обучения. Деревом решений можно назвать наглядную инструкцию, что делать в какой ситуации. Приведем пример из области консультирования научных сотрудников института. Высшая Школа Экономики выпускает инфо-схемы, облегчающие жизнь своим сотрудникам. Вот фрагмент инструкции по публикации научной статьи на портале института. В терминах машинного обучения можно сказать, что это элементарный классификатор, который определяет форму публикации на портале (книга, статья, глава книги, препринт, публикация в «НИУ ВШЭ и СМИ») по нескольким признакам: типу публикации (монография, брошюра, статья и т.д.), типу издания, где опубликована статья (научный журнал, сборник трудов и т.д.) и остальным. Зачастую дерево решений служит обобщением опыта экспертов, средством передачи знаний будущим сотрудникам или моделью бизнес-процесса компании. Например, до внедрения масштабируемых алгоритмов машинного обучения в банковской сфере задача кредитного скоринга решалась экспертами. Решение о выдаче кредита заемщику принималось на основе некоторых интуитивно (или по опыту) выведенных правил, которые можно представить в виде дерева решений. В этом случае можно сказать, что решается задача бинарной классификации (целевой класс имеет два значения: «Выдать кредит» и «Отказать») по признакам «Возраст», «Наличие дома», «Доход» и «Образование». Дерево решений как алгоритм машинного обучения – по сути то же самое: объединение логических правил вида «Значение признака Как строится дерево решенийВ примере с кредитным скорингом мы видели, что решение о выдаче кредита принималось на основе возраста, наличия недвижимости, дохода и других. Но какой признак выбрать первым? Для этого рассмотрим пример попроще, где все признаки бинарные. Здесь можно вспомнить игру «20 вопросов», которая часто упоминается во введении в деревья решений. Наверняка каждый в нее играл. Один человек загадывает знаменитость, а второй пытается отгадать, задавая только вопросы, на которые можно ответить «Да» или «Нет» (опустим варианты «не знаю» и «не могу сказать»). Какой вопрос отгадывающий задаст первым делом? Конечно, такой, который сильнее всего уменьшит количество оставшихся вариантов. К примеру, вопрос «Это Анджелина Джоли?» в случае отрицательного ответа оставит более 7 миллиардов вариантов для дальнейшего перебора (конечно, поменьше, не каждый человек – знаменитость, но все равно немало), а вот вопрос «Это женщина?» отсечет уже около половины знаменитостей. То есть, признак «пол» намного лучше разделяет выборку людей, чем признак «это Анджелина Джоли», «национальность-испанец» или «любит футбол». Это интуитивно соответствует понятию прироста информации, основанного на энтропии. ЭнтропияЭнтропия Шеннона определяется для системы с где ПримерДля иллюстрации того, как энтропия поможет определить хорошие признаки для построения дерева, приведем тот же игрушечный пример, что в статье «Энтропия и деревья принятия решений». Будем предсказывать цвет шарика по его координате. Конечно, ничего общего с жизнью это не имеет, но позволяет показать, как энтропия используется для построения дерева решений. Здесь 9 синих шариков и 11 желтых. Если мы наудачу вытащили шарик, то он с вероятностью В левой группе оказалось 13 шаров, из которых 8 синих и 5 желтых. Энтропия этой группы равна где Получается, разделив шарики на две группы по признаку «координата меньше либо равна 12», мы уже получили более упорядоченную систему, чем в начале. Продолжим деление шариков на группы до тех пор, пока в каждой группе шарики не будут одного цвета. Для правой группы потребовалось всего одно дополнительное разбиение по признаку «координата меньше либо равна 18», для левой – еще три. Очевидно, энтропия группы с шариками одного цвета равна 0 ( Алгоритм построения дереваМожно убедиться в том, что построенное в предыдущем примере дерево является в некотором смысле оптимальным – потребовалось только 5 «вопросов» (условий на признак В основе популярных алгоритмов построения дерева решений, таких как ID3 и C4.5, лежит принцип жадной максимизации прироста информации – на каждом шаге выбирается тот признак, при разделении по которому прирост информации оказывается наибольшим. Дальше процедура повторяется рекурсивно, пока энтропия не окажется равной нулю или какой-то малой величине (если дерево не подгоняется идеально под обучающую выборку во избежание переобучения). Другие критерии качества разбиения в задаче классификацииМы разобрались в том, как понятие энтропии позволяет формализовать представление о качестве разбиения в дереве. Но это всего лишь эвристика, существуют и другие: На практике ошибка классификации почти не используется, а неопределенность Джини и прирост информации работают почти одинаково. В случае задачи бинарной классификации ( Когда мы построим графики этих двух функций от аргумента ПримерРассмотрим пример применения дерева решений из библиотеки Scikit-learn для синтетических данных. Два класса будут сгенерированы из двух нормальных распределений с разными средними. Отобразим данные. Неформально, задача классификации в этом случае – построить какую-то «хорошую» границу, разделяющую 2 класса (красные точки от желтых). Если утрировать, то машинное обучение в этом случае сводится к тому, как выбрать хорошую разделяющую границу. Возможно, прямая будет слишком простой границей, а какая-то сложная кривая, огибающая каждую красную точку – будет слишком сложной и будем много ошибаться на новых примерах из того же распределения, из которого пришла обучающая выборка. Интуиция подсказывает, что хорошо на новых данных будет работать какая-то гладкая граница, разделяющая 2 класса, или хотя бы просто прямая (в А как выглядит само построенное дерево? Видим, что дерево «нарезает» пространство на 7 прямоугольников (в дереве 7 листьев). В каждом таком прямоугольнике прогноз дерева будет константным, по превалированию объектов того или иного класса. Как «читается» такое дерево? В начале было 200 объектов, 100 — одного класса и 100 – другого. Энтропия начального состояния была максимальной – 1. Затем было сделано разбиение объектов на 2 группы в зависимости от сравнения признака Как дерево решений работает с количественными признакамиДопустим, в выборке имеется количественный признак «Возраст», имеющий много уникальных значений. Дерево решений будет искать лучшее (по критерию типа прироста информации) разбиение выборки, проверяя бинарные признаки типа «Возраст Код для обучения и отрисовки дерева На картинке ниже видим, что дерево задействовало 5 значений, с которыми сравнивается возраст: 43.5, 19, 22.5, 30 и 32 года. Если приглядеться, то это аккурат средние значения между возрастами, при которых целевой класс «меняется» с 1 на 0 или наоборот. Сложная фраза, поэтому пример: 43.5 – это среднее между 38 и 49 годами, клиент, которому 38 лет не вернул кредит, а тот, которому 49 – вернул. Аналогично, 19 лет – среднее между 18 и 20 годами. То есть в качестве порогов для «нарезания» количественного признака, дерево «смотрит» на те значения, при которых целевой класс меняет свое значение. Подумайте, почему не имеет смысла в данном случае рассматривать признак «Возраст Код для обучения и отрисовки дерева Видим, что в дереве задействованы как разбиения по возрасту, так и по зарплате. Причем пороги, с которыми сравниваются признаки: 43.5 и 22.5 года – для возраста и 95 и 30.5 тыс. руб/мес – для зарплаты. И опять можно заметить, что 95 тыс. – это среднее между 88 и 102, при этом человек с зарплатой 88 оказался «плохим», а с 102 – «хорошим». То же самое для 30.5 тыс. То есть перебирались сравнения зарплаты и возраста не со всеми возможными значениями, а только с несколькими. А почему в дереве оказались именно эти признаки? Потому что по ним разбиения оказались лучше (по критерию неопределенности Джини). Вывод: самая простая эвристика для обработки количественных признаков в дереве решений: количественный признак сортируется по возрастанию, и в дереве проверяются только те пороги, при которых целевой признак меняет значение. Звучит не очень строго, но надеюсь, я донес смысл с помощью игрушечных примеров. Дополнительно, когда в данных много количественных признаков, и у каждого много уникальных значений, могут отбираться не все пороги, описанные выше, а только топ-N, дающих максимальный прирост все того же критерия. То есть, по сути, для каждого порога строится дерево глубины 1, считается насколько снизилась энтропия (или неопределенность Джини) и выбираются только лучшие пороги, с которыми стоит сравнивать количественный признак. Для иллюстрации: при разбиении по признаку «Зарплата Еще примеры дискретизации количественных признаков можно посмотреть в постах, подобных этому или этому. Одна из самых известных научных статей на эту тему – «On the handling of continuous-valued attributes in decision tree generation» (U.M. Fayyad. K.B. Irani, «Machine Learning», 1992). Основные параметры дереваВ принципе дерево решений можно построить до такой глубины, чтоб в каждом листе был ровно один объект. Но на практике это не делается (если строится только одно дерево) из-за того, что такое дерево будет переобученным – оно слишком настроится на обучающую выборку и будет плохо работать на прогноз на новых данных. Где-то внизу дерева, на большой глубине будут появляться разбиения по менее важным признакам (например, приехал ли клиент из Саратова или Костромы). Если утрировать, может оказаться так, что из всех 4 клиентов, пришедших в банк за кредитом в зеленых штанах, никто не вернул кредит. Но мы не хотим, чтобы наша модель классификации порождала такие специфичные правила. Есть два исключения, ситуации, когда деревья строятся до максимальной глубины: Картинка ниже – пример разделяющей границы, построенной переобученным деревом. Основные способы борьбы с переобучением в случае деревьев решений: Класс DecisionTreeClassifier в Scikit-learnПараметры дерева надо настраивать в зависимости от входных данных, и делается это обычно с помощью кросс-валидации, про нее чуть ниже. Дерево решений в задаче регрессииПри прогнозировании количественного признака идея построения дерева остается та же, но меняется критерий качества: ПримерСгенерируем данные, распределенные вокруг функции Видим, что дерево решений аппроксимирует зависимость в данных кусочно-постоянной функцией. Метод ближайших соседейМетод ближайших соседей (k Nearest Neighbors, или kNN) — тоже очень популярный метод классификации, также иногда используемый в задачах регрессии. Это, наравне с деревом решений, один из самых понятных подходов к классификации. На уровне интуиции суть метода такова: посмотри на соседей, какие преобладают, таков и ты. Формально основой метода является гипотеза компактности: если метрика расстояния между примерами введена достаточно удачно, то схожие примеры гораздо чаще лежат в одном классе, чем в разных. Согласно методу ближайших соседей, тестовый пример (зеленый шарик) будет отнесен к классу «синие», а не «красные». Например, если не знаешь, какой тип товара указать в объявлении для Bluetooth-гарнитуры, можешь найти 5 похожих гарнитур, и если 4 из них отнесены к категории «Аксессуары», и только один — к категории «Техника», то здравый смысл подскажет для своего объявления тоже указать категорию «Аксессуары». Для классификации каждого из объектов тестовой выборки необходимо последовательно выполнить следующие операции: Под задачу регрессии метод адаптируется довольно легко – на 3 шаге возвращается не метка, а число – среднее (или медианное) значение целевого признака среди соседей. Примечательное свойство такого подхода – его ленивость. Это значит, что вычисления начинаются только в момент классификации тестового примера, а заранее, только при наличии обучающих примеров, никакая модель не строится. В этом отличие, например, от ранее рассмотренного дерева решений, где сначала на основе обучающей выборки строится дерево, а потом относительно быстро происходит классификация тестовых примеров. Стоит отметить, что метод ближайших соседей – хорошо изученный подход (в машинном обучении, эконометрике и статистике больше известно, наверное, только про линейную регрессию). Для метода ближайших соседей существует немало важных теорем, утверждающих, что на «бесконечных» выборках это оптимальный метод классификации. Авторы классической книги «The Elements of Statistical Learning» считают kNN теоретически идеальным алгоритмом, применимость которого просто ограничена вычислительными возможностями и проклятием размерностей. Метод ближайших соседей в реальных задачахКачество классификации/регрессии методом ближайших соседей зависит от нескольких параметров: Класс KNeighborsClassifier в Scikit-learnОсновные параметры класса sklearn.neighbors.KNeighborsClassifier: Выбор параметров модели и кросс-валидацияГлавная задача обучаемых алгоритмов – их способность обобщаться, то есть хорошо работать на новых данных. Поскольку на новых данных мы сразу не можем проверить качество построенной модели (нам ведь надо для них сделать прогноз, то есть истинных значений целевого признака мы для них не знаем), то надо пожертвовать небольшой порцией данных, чтоб на ней проверить качество модели. Чаще всего это делается одним из 2 способов: Тут модель обучается Кросс-валидация дает лучшую по сравнению с отложенной выборкой оценку качества модели на новых данных. Но кросс-валидация вычислительно дорогостоящая, если данных много. Кросс-валидация – очень важная техника в машинном обучении (применяемая также в статистике и эконометрике), с ее помощью выбираются гиперпараметры моделей, сравниваются модели между собой, оценивается полезность новых признаков в задаче и т.д. Более подробно можно почитать, например, тут у Sebastian Raschka или в любом классическом учебнике по машинному (статистическому) обучению Примеры примененияДеревья решений и метод ближайших соседей в задаче прогнозирования оттока клиентов телеком-оператораСчитаем данные в DataFrame и проведем предобработку. Штаты пока сохраним в отдельный объект Series, но удалим из датафрейма. Первую модель будем обучать без штатов, потом посмотрим, помогают ли они. Выделим 70% выборки (X_train, y_train) под обучение и 30% будут отложенной выборкой (X_holdout, y_holdout). отложенная выборка никак не будет участвовать в настройке параметров моделей, на ней мы в конце, после этой настройки, оценим качество полученной модели. Обучим 2 модели – дерево решений и kNN, пока не знаем, какие параметры хороши, поэтому наугад: глубину дерева берем 5, число ближайших соседей – 10. Качество прогнозов будем проверять с помощью простой метрики – доли правильных ответов. Сделаем прогнозы для отложенной выборки. Дерево решений справилось лучше: доля правильных ответов около 94% против 88% у kNN. Но это мы пока выбирали параметры наугад. Теперь настроим параметры дерева на кросс-валидации. Настраивать будем максимальную глубину и максимальное используемое на каждом разбиении число признаков. Суть того, как работает GridSearchCV: для каждой уникальной пары значений параметров max_depth и max_features будет проведена 5-кратная кросс-валидация и выберется лучшее сочетание параметров. Лучшее сочетание параметров и соответствующая средняя доля правильных ответов на кросс-валидации:
|