Skip to Content

§2. Эвристические методы

Научное исследование — это искусство, а правила его, если они слишком жёстки, приносят больше вреда, чем пользы.

— Дж. Томсон, «Дух науки»

Подавляющая часть классификаций на практике проводится именно эвристическими методами. Причины:

  • они относительно просты, и смысл их ясен;
  • в работу алгоритма можно вмешаться, меняя один-два параметра с понятным смыслом;
  • трудоёмкость у них невысокая.

A1. Связные компоненты

Все объекты разбиваются на классы типа ленты (слабого сгущения, C3 из §1), где задаваемый параметр τ∈(min⁡dij,max⁡dij)\tau \in (\min d_{ij}, \max d_{ij}). В этой постановке задача классификации эквивалентна нахождению связных компонент графа: вершины ii и jj соединены ребром, если dij≤τd_{ij} \le \tau. Алгоритм выделения связных компонент — поиск в глубину — изложен в §9.

Для выбора τ\tau полезно построить гистограмму межобъектных расстояний: высота прямоугольника над промежутком Δl\Delta_l пропорциональна количеству dijd_{ij}, попавших в Δl\Delta_l. При хорошей структурированности данных гистограмма, как правило, имеет два выделяющихся максимума:

  • при dij≈dintd_{ij} \approx d_{int} — типичное внутриклассовое расстояние;
  • при dij≈doutd_{ij} \approx d_{out} — типичное межклассовое расстояние.

Часто удачным выбором τ\tau оказывается значение (dint+dout)/2(d_{int} + d_{out})/2.

Смысл по-пацански: договорились, что «свои» — это те, до кого можно дотянуться рукой длиной τ\tau, хотя бы через знакомых. Короткая рука — каждый сам за себя; длинная — весь район одна компания. Гистограмма подсказывает длину руки.

Песочница кластеризации: эвристические методы

Ребро, если dᵢⱼ ≤ τ = 0,60. Классы — связные компоненты графа (поиск в глубину, §9).0,037,07τГистограмма всех dᵢⱼ (рис. 7). Хорошее τ лежит между «горбом» внутриклассовых и «горбом» межклассовых расстояний.Найдено классов: 8. Доля пар, разбитых не так, как задумано при моделировании: 4,9 %.

Подвигай τ\tau на «облаках с центром» и на «лентах». Окно удачных τ\tau узкое:

  • чуть короче — и от облаков откалываются одиночки, а ленты рвутся на куски;
  • чуть длиннее — и соседние классы склеиваются через пару случайно оказавшихся между ними точек. Это цепочечный эффект, о нём ещё будет речь в §3.

Поэтому гистограмма так важна: без неё τ\tau приходится угадывать.

A2. Кратчайший незамкнутый путь

Его также называют минимальным покрывающим деревом или каркасом (КНП). Строится так:

  1. соединяются ребром две ближайшие точки;
  2. затем среди оставшихся отыскивается точка, ближайшая к любой из уже соединённых, и присоединяется к ним;
  3. и т. д. до исчерпания всех точек.

Р. Прим в 1957 г. доказал, что построенный таким способом граф имеет минимальную общую длину рёбер среди всевозможных соединений, связывающих все вершины.

В найденном КНП затем отбрасывают k−1k - 1 самых длинных дуг и получают kk классов. Число kk задаёт исследователь; на практике обычно 2≤k≤52 \le k \le 5. Метод позволяет выделять классы произвольной формы.

Загрузка редактора…

Длины рёбер КНП — это ровно уровни объединения в методе «ближнего соседа» из §3: каркас и дендрограмма P1 несут одну и ту же информацию.

Отступление: точка Штейнера

Если разрешается добавлять в граф новые вершины (точки Штейнера), то можно добиться меньшей, чем у КНП, длины пути. Уже для трёх точек AA, BB и CC на плоскости, у которых наибольший из углов △ABC\triangle ABC меньше 120°120°, существует точка OO внутри треугольника, для которой минимальна сумма ∣OA∣+∣OB∣+∣OC∣|OA| + |OB| + |OC|.

Доказательство. Пусть OO — некоторая точка внутри △ABC\triangle ABC. При повороте на 60°60° вокруг вершины AA точки OO, BB и CC перейдут в точки O′O', B′B' и C′C' соответственно. Так как △AOO′\triangle AOO' равносторонний, то ∣AO∣=∣OO′∣|AO| = |OO'|. Отрезок OCOC переходит в отрезок O′C′O'C', поэтому ∣OC∣=∣O′C′∣|OC| = |O'C'|. Значит, сумма ∣OA∣+∣OB∣+∣OC∣=∣OO′∣+∣OB∣+∣O′C′∣|OA| + |OB| + |OC| = |OO'| + |OB| + |O'C'| равна длине ломаной BOO′C′BOO'C'. Она минимальна, когда ломаная является отрезком. Поскольку ∠AOO′=60°\angle AOO' = 60°, для этого необходимо, чтобы ∠BOA=120°\angle BOA = 120°. Иначе говоря, сторона ABAB должна быть видна из оптимальной точки под углом 120°120°. Из симметрии то же самое должно быть верно и для двух других сторон △ABC\triangle ABC. ■\blacksquare

Как построить такую точку циркулем и линейкой — вопрос 2, где она для выпуклого четырёхугольника — вопрос 3. Для произвольного расположения вершин и любого числа точек Штейнера эффективные алгоритмы построения кратчайшего соединения неизвестны.

A3. Метод k-средних

Предназначен для выделения классов типа C4 («класс с центром»). Название, ставшее популярным, введено Дж. Мак-Кином. Два варианта.

(a) Алгоритм Г. Болла и Д. Холла (1965).

  1. Случайно выбираются kk объектов — эталонов.
  2. Каждый объект присоединяется к ближайшему эталону — образуется kk классов.
  3. В качестве новых эталонов принимаются центры масс классов (каждому объекту приписана масса 1).
  4. После пересчёта объекты снова распределяются по ближайшим эталонам и т. д.

Критерий окончания — стабилизация центров масс всех классов.

Вместо случайно выбираемых эталонов лучше использовать kk наиболее удалённых объектов. Сначала отыскиваются два самых удалённых друг от друга объекта, затем ll-й эталон (l=3,…,kl = 3, \dots, k) определяется как наиболее удалённый в среднем от уже имеющихся.

(b) Алгоритм Дж. Мак-Кина (1967). Отличается тем, что при просмотре списка объектов пересчёт центра масс класса происходит сразу после присоединения к нему очередного объекта. Алгоритм Мак-Кина связан с функционалом качества F2F2 из §5.

Смысл по-пацански: выбрали kk «старших», каждый прибился к ближайшему, старший переехал в середину своей компании, все снова перебежали к ближайшему — и так, пока никто не переезжает. Болл и Холл пересаживают всех разом, Мак-Кин — по одному.

Песочница кластеризации: эвристические методы

Болл и Холл, эталоны — самые удалённые объекты. Показан шаг 3 из 3. Крестики — центры.Найдено классов: 3. Доля пар, разбитых не так, как задумано при моделировании: 0,0 %.

Пощёлкай «Эталоны: случайные» и «Новая выборка». Случайные эталоны нередко ставят двух «старших» в одно облако, и алгоритм застревает в плохом разбиении. Самые удалённые объекты спасают почти всегда. Двигая «Шаг алгоритма», видно, как центры сползают к серединам облаков за несколько итераций. На лентах и кольце k-средних беспомощен: это не классы с центром.

A4. Алгоритм «Форель»

Первоначальное название — ФОРЭЛ, «ФОРмальный ЭЛемент». Предложен В. Н. Елкиной и Н. Г. Загоруйко в 1966 г.

  1. Случайный объект объявляется центром класса; все объекты на расстоянии не больше RR от него входят в первый класс.
  2. В классе определяется центр масс, который объявляется новым центром класса, и т. д. до стабилизации центра.
  3. Затем все объекты, попавшие в первый класс, изымаются, и процедура повторяется с новым случайным центром.

Алгоритмы A4 и A2 можно скомбинировать:

  • при небольшом RR алгоритм A4 находит k′>kk' > k классов;
  • их центры соединяют КНП, из которого удаляют k−1k - 1 самых длинных рёбер, и получают kk классов.

При этом образуются классы более сложной формы, чем mm-мерные шары. Здесь важна идея двухэтапности: сначала выделить заведомо компактные маленькие группы, затем произвести их объединение. Так можно успешно классифицировать довольно большие массивы информации — сотни объектов.

A5. Метод потенциальных ям

Предположим, что каждый объект xi=(xi1,…,xim)\boldsymbol x_i = (x_{i1}, \dots, x_{im}) создаёт вокруг себя поле притяжения с некоторой весовой функцией, например гладким квартическим ядром

Wi(x)=[1−(ri/R)2]2 I{ri≤R},W_i(\boldsymbol x) = \bigl[1 - (r_i/R)^2\bigr]^2\,I_{\{r_i \le R\}},

где ri=∣x−xi∣r_i = |\boldsymbol x - \boldsymbol x_i|, а параметр R>0R > 0 задаёт эффективный размер области притяжения. Все вместе объекты создают потенциальное поле U(x)=−∑Wi(x)U(\boldsymbol x) = -\sum W_i(\boldsymbol x). Классам соответствуют потенциальные ямы: объект xi\boldsymbol x_i относится к яме, в которую он «скатывается» при свободном движении.

Практически приходится, стартовав с xi\boldsymbol x_i, запускать некоторый алгоритм (локальной) минимизации. Один из простейших — циклический перебор 2m2m точек, соседних с текущей по осям, с шагом ±h\pm h (hh — точность поиска точки минимума):

  • если значение UU в какой-то из них меньше, чем в текущей, происходит перемещение туда (противоположную по этой оси точку можно не проверять);
  • для ускорения полезно запоминать знак успешного перемещения по каждой оси и в следующем цикле пробовать сдвигаться сначала в том же направлении;
  • критерий окончания — отсутствие перемещений за время цикла.

Обозначим через yi\boldsymbol y_i конечную точку пути из xi\boldsymbol x_i. Объекты xi\boldsymbol x_i и xj\boldsymbol x_j отнесём к одному классу, если ∑l=1m∣yil−yjl∣≤2kh\sum_{l=1}^m|y_{il} - y_{jl}| \le 2kh, то есть если yi\boldsymbol y_i и yj\boldsymbol y_j близки в метрике города D1. (Буква kk в книге не расшифрована — это небольшое целое число шагов; в виджете взято k=mk = m.) Число перемещений при поиске локального минимума — длина пути — характеризует удалённость xi\boldsymbol x_i от «центра» класса, дна ямы.

Из-за необходимости численной минимизации для каждого xi\boldsymbol x_i метод рекомендуется применять для классификации небольшого числа (нескольких десятков) объектов.

Смысл по-пацански: каждый объект — ямка в резиновом листе. Ямки рядом сливаются в одну большую воронку. Пустил шарик с каждого объекта — куда скатился, там его и класс.

Песочница кластеризации: эвристические методы

Квартическое ядро с R = 2,00, шаг поиска h = 0,1. Крестики — «дно ям», куда скатились объекты.Найдено классов: 2. Доля пар, разбитых не так, как задумано при моделировании: 7,8 %.

На паре «большое облако + малое плотное» потенциальные ямы при RR около 2 обычно находят оба класса, хотя k-средних тут часто «отгрызает» от большого облака кусок в пользу малого. Попробуй и «Форель»: при маленьком RR она дробит всё на мелкие шарики — ровно тот первый этап, после которого их склеивают через КНП.

Проверь себя

Тест

Данные — две изогнутые ленты, вложенные одна в другую. Какой метод, скорее всего, разделит их правильно?

Тест

Чем алгоритм Мак-Кина отличается от алгоритма Болла и Холла?
Обновлено