или-были данные. Многие пытались их посчитать, но не многим это удавалось. Каждый раз это происходило против их воли, их нормировали, прореживали и подвергали другими гнусными занятиями. Конечно же, они чувствовали это, но были не в силах этому помешать. А как же им хотелось посчитать себя самим. Один раз и навсегда. И жить долго и счастливо в детерминированном единстве своего существа.
Учёный! Останови насилие над данными!
Дай возможность им самим раскрыть себя. Воспользуйся диалектическим алгоритмом кластеризации ДРУГ.
Нажми одну кнопку! Восхитись первичностью Материи!
fromdruhgimportDRUHGdr=DRUHG()dr.fit(your_dataset)dr.minimum_spanning_tree_.plot()dr.labels_# -1 are outliers# enjoy
150 лет назад Карл Маркс взял единичку Капитализма — товар и с помощью диалектики Гегеля раскрутил его внутренние противоречия.
Товар имеет качественную и количественную стороны, то есть потребительную полезность и цену. Находясь в единстве, цена и полезность борются с друг другом, и эта борьба развивается в отношениях производитель, покупатель, продавец, потребитель.
Из этого выводится отчуждение труда и не заинтересованность производителя в конечном потреблении, а в итоге приводит к отчуждению человека человеком, так как всё становится товаром.
Эти и другие вытекающие из товарности фичи баги вы и так ежедневно наблюдаете вокруг себя.
Оставим коммодификацию в покое.
Нас в первую очередь интересует диалектический метод. Почему бы не применить его к данным? Не заставить их говорить за себя?
Взять единичку данных, выделить качественную и количественный стороны, синтезировать меру, получить новую сущность и за счёт этого перейти от единичного к всеобщему, особенному, к кластеру?
Если K будет считать ближних к себе,
то получится так.
K первый
L второй
М третий и тд
Если же L начнёт считать от себя, то:
L первый
M второй
K третий и тд
Субъект K считает от себя
Субъект L считает от себя
Ранг 2
Ранг 3
Расстояния KL друг для друга совпадают, а ранги нет.
Ближайшие различаются!
Для K L второй, для L K третий.
Расстояние то же, но наиближайшие и ранги различаются.
Ближайшие отношения могут быть взаимными (как у LM, AB), тогда ранги и расстояния совпадут и противоречий не будет.
Или не взаимными, как у KL: для K K→L особенное, а для L L→K не особенное, безразличное. Выходит, что одно и то же отношение и особенное и не особенное, ближайшее и нет, одновременно. Это противоречие и его нужно снять (позитивно разрешить).
Посмотрим на эти отношения с двух сторон, с качественной и количественной:
Качества-расстояния на первый взгляд равны. Но только на первый взгляд. Категория качество означает внутренние свойства объекта. Качества не доступны для внешнего наблюдателя. Передать качество невозможно.
Субъект K не знает, как к нему относится L, он может только посчитать какой он в нумерации L.
Чтобы получить чужое качество, нужно взять своё качество чужого количества.
Тогда для обоих участников качества будут равны с их точки зрения и противоречие будет устранено.
Расстояние от K к L увеличилось, до третьего ранга.
(“удлинилось” от тонкой белой стрелки до толстой прозрачной синей)
$$ D_{KL} = d_{KM} = d_{3} \neq d_{KL} $$
Субъект K будет относится к L так же, как к M. По его мнению, к нему так относится L!
Теперь для субъекта K расстояние до L и M одинаково особенное, отношение к субъекту растворилось, породив отношение с нечто иным.
Для каждого субъекта мы можем найти наиближайшее отношение, посчитать качественную и количественную стороны. Самые близкие объединятся и возникнут сущности следующего уровня - общности.
Нельзя просто так добавить общности, они должны органически родиться/вывестись из субъектов.
Прежде чем применить законы диалектики и выразить отношения в оптимизационной функции.
Стоит отдельно сказать о субъекте. Почему субъекты, если мы говорим о данных?
Мы рассматривали отношения записей данных к другим записям, как будто у них есть сознание и свобода воли.
На самом деле, мы могли бы рассматривать частички материи: увеличивать радиус для того, чтобы в кружочки попало одинаковое количество точек. То есть выравнивать плотность, не определяя её.
В зелёной окружности 3 объекта, в противоположной 4. Как увеличить зелёную окружность, чтобы выровнять количество объектов внутри?
Есть воля или нет, нам не важно, данный подход можно использовать к любым типам материи: записям данных, людям в обществе, частицам вещества и тд.
Вспомним нашего субъекта K, он был независим, но тем не менее, он видел более близких LM. Для того чтобы выравнять свои отношения, субъектам необходимо “ждать” чужих.
Подсчёт выражения из А в М. В окружностях должно быть по 4 объекта, это увеличит расстояние от \(D_{AM}\) до \(D_{AL}\). В своей окружности 2 своих, а в чужих 1(чужая принадлежность субъективна не доступна). Мера \(\sqrt{\frac{2
+1}{2}}\).
Построим математическое выражение, упорядочивающее все отношения. Чтобы одни ждали других.
Будем обозначать свои субъектные величины заглавными латинскими, а иные строчными.
Тогда диалектическое отношение равно $$ r · D^2_r · \sqrt{\frac{1+M_D}{1·M_D}}. $$
Количество: чем меньше ранг, тем первичней отношение
\(r\) — чужой ранг (\(r >= R\))
Качество: чем ближе, тем первичней.
\(D_r\) — своё расстояние чужого ранга (\(D_r >= D_R = d_r\))
Мостик-Мера: чем выше принадлежность, тем первичней
\(\frac{1+M_D}{1·M_D}\) — принадлежность в моменте, M количество своих членов в рамках D, 1 количество членов другого.
Мера это уже почти новая сущность. Субъект уже ощущает себя общностью. Действует за неё и для неё. (см. Приложение)
Качество-количество-мера (расстояние-ранг-принадлежность) гегелевская триада соединяется не просто через произведение, а через степень, чтобы качественно оторвать величины друг от друга. Подобным образом площадь и длина оторваны друг от друга.
(По сути, степенная зависимость помогает разбивать ничьи)
Взяв самое минимальное особенное субъективное отношение одного, увидим, что оно удовлетворит вообще все субъекты и общности, и станет объективным всех. Взяв следующее субъективное, опять получим объективное. И так пока не соединим всех воедино.
Субъективные единичные приводят нас к единому всеобщему.
Минимальное Остовное Дерево(MST): все субъекты соединены в единую сеть с минимальным суммарными диалектическими расстояниями.
# TODO: видео как всё сливается в единое. Может не через точки, а через площади?
Общности это всего лишь стороны предстоящего слияния. Ещё чуть-чуть и они исчезнут став единой стороной следующего противостояния.
Между сторонами пролегает граница одновременно соединяющая и разделяющая их.
Кластеры “знают” о себе по одну сторону границы, но не знают о кластерах по другую сторону.
Если граница значима, то субъекты становятся новым кластером.
Они за той границей сильно не такие, как мы. Мы разные, но сильно не такие как они. Значит мы равны и едины.
Кластеры смотрят на границу. Чем больше граница, тем проще им сплотиться.
Раньше мы имели отношения между субъектами, теперь перед нами общности.
Общность состоит из кластеров, у которых есть внутренности — субъекты.
Мы будем рассматривать отношение внутреннего к внешнему.
Раньше мы считали субъектов, чтобы получить ранг. Находясь на уровне кластеров, мы будем считать кластеры.
Отношение общности к границе:
Количественное отношение. Каждый из кластеров видит границу.
(Чем мы разнообразней, тем больше выделяемся как целое)
\(K\) — количество кластеров.
Качественное отношение. Граница задаётся через “восприятие” субъекта.
(Чем дальше, тем проще выделиться)
\(D^2\) — диалектическое расстояние из предыдущей фазы.
Мостик. Переводит из уровня отношения общностей/частей на уровень Всеобщего/целого.
(Чем больше обе из сторон, тем проще выделиться)
\(\sqrt{\frac{N·N'}{N + N'}}\) — прирост субъектов к Целому. Для общностей происходит соединение, но со стороны целого происходит прирост меньшего к большему.
Внешнее выражение границы для всех кластеров общности вместе: $$ K · D^2 · \sqrt{\frac{N·N'}{N + N'}}. $$
Внутреннее выражение общности — это сумма различий субъектов, те преодоленные пределы задающие сами кластеры: $$ \sum_{K} N_{i} · D^2_{i}. $$
Общность станет кластером, если её внутренние различия будут преодолены $$\sum_{K} N_{i} · D^2_{i} \leqslant K · D^2_r · \sqrt{\frac{N·N'}{N + N'}}.$$
И тогда внешнее станет внутренним: все различия сотрутся, все субъекты возьмут новое качество \(D^2\). Родится кластер с пределом \(N · D^2\).
Если предел не преодолен, то внутренние противоречия будут накапливаться, пока количество не перейдёт в качество.
Но это не так просто сделать, так как граница \(K · D^2_{new}\) борется с количеством субъектов \(N · D^2_{old}\)! Кластеров всегда меньше субъектов.
Если наблюдать весь процесс роста отношений, то в самом начале у субъектов нет предела, так как нет иного для соотношения. Если не будет иного, то не будет движения.
Найдя ближайшие отношения субъекты начнут приращивать свои кластеры, объединяясь во всё большие группы, пока не останутся две стороны-общности, которые никогда не станут единым кластером.
Последняя общность есть всеобщее, оно не может стать кластером, так как у неё нет иного, чтобы в нём отразиться. Нет границы, чтобы её перейти.
Обычный алгоритм кластеризации требует ввода параметров от которых будет зависеть конечная группировка. Ошибся и получил неправильное решение.
ДРУГ застрахован от ошибки, так как из параметров у него только метрика - то есть то, как измерять расстояние между субъектами (по умолчанию Евклидова метрика).
ДРУГ кластеризует лучше стандартных алгоритмов, предоставляя пользователю “природную” группировку.
Сравнение алгоритмов смотрите в приложении.
На выходе получаем детерминированный результат:
дерево-граф
все субъекты соединёны в единую сеть
веса рёбер
равные квадраты диалектических расстояний
размеченные данных
каждый субъект принадлежит кластеру, или отмечен как выброс
вложенные кластера
при желании их можно дробить
Формулы использованные в ДРУГе несколько раз менялись, что приводило к незначительному изменению результата.
Что говорит о том, что работа ещё не закончена. И только практика сможет поставить окончательную точку истины.
Ваша практика. Ваша практика работы с данными.
Поэтому если вы нашли ошибку или видите как можно улучшить алгоритм, то непременно присоединяйтесь к проекту.
В этой статье вы познакомились с применением диалектики в программировании и математике.
Развитие противоречий позволило перейти от сущности субъекта к сущности более высокого уровня.
Этот переход не был привнесён из вне, его породили сами данные.
Материя сама раскрыла себя, а не учёный привнёс идею из головы.
Основной вопрос философии в очередной раз закрыт — материя первична!
Диалектика Гегеля из “Науки Логики” была перевёрнута с головы на ноги.
Вместо стремления к Мировому духу/идеи, мы двигались к соседу, такому же бытию-субъекту.
Таким образом идеялистическая диалектика, превратилась в материялистическую, в диамат.
Некоторые люди спрашивают меня, а почему не показать просто формулы? Зачем весь этот текст?
Отвечаю.
Мне важно понять причины, докопаться до сути. Понять откуда всё берётся.
Максима “заткнись и считай” превращает человека в бездумный калькулятор, что в конечном итоге выливается в застой в науке.
Чем лучше вы понимаете внутренности машины, тем лучше вы будете ею пользоваться.
Чтобы разбираться в причинно-следственных связях, нужно разбираться во внутренних противоречиях объекта, что и как им движет?
Для этого вам необходим диамат, если вы хотите самостоятельно продолжить ваше знакомство с диалектикой, то начинайте со статей классиков. Они объясняют на пальцах.
“О диалектическом историческом материализме” Сталина и “Относительно противоречия” Мао.
Не пренебрегайте самой главной гегелевской триадой: Лайк-Подписка-Колокольчик. Пользуйтесь сами, делитесь с друзьями.
Гегель поэтапно рассматривал два противоречия и обосновывал третий член. Из троицы рождалась новая сущность. Он находил для неё противоречие, и обосновывал третий член. Таким образом он прошёлся по всем филосовским категориям, включив их в одну стройную систему.
При этом он не категоризовал свою систему. Он не использовал терминов мостик и уровень.
Одной из первых троиц его системы были Качество-Количество-Мера. Именно эта троица помогла нам перейти от субъектов к общности и кластерам.
Вот что пишет Гегель на 60ти страницах Науки Логики, том 1, раздел 3, Мера. Выжимка из текста:
В мере соединены абстрактно выраженные качество и количество. Но такое количество, что оно имеет определённость не в себе самом, а в ином. Мера это соотносящаяся с самой собой внешность. Некая рефлексия в себя.
Таким образом мера это уже почти новая сущность. В нашем случае, субъект уже ощущает себя общностью. Действует за неё и для неё.
(INIT)
FOR every point:
Find it's near neighbors and distances.
(Pure reciprocity)
FOR every point:
IF nearest neigbor has the point as it's nearest
Add the edge to the tree
Weight = distance squared
(Find minimal edge and connect to the tree)
REPEAT until all edges are connected in one tree:
INIT Optimal = INF
FOR every point:
FOR every point's neighbor:
IF point and neighbor are connected:
PASS
Evaluate R and r:
R - rank of the neighbor in point's POV
r - rank of the point in neighbor's POV
IF R > r:
PASS
Evaluate Equation r * D^2 * sqrt(1+M/M):
D - distance from the point to the neighbor of rank r
M - how many neighbors the point has in the subtree limited by D
IF Optimal < Equation:
Optimal = Equation
MEMORIZE Edge = (point, neighbor, D^2)
Add Edge to the tree
Labelclusters: Every datapoint has it’s cluster label.
INIT Limits(energies) of points to 0.
FOR every edge(pair, weight) from the MST(in order of appearing):
FOR Left and Right subtrees:
Evaluate Border equation K * D^2 * sqrt((N·N')/(N + N')):
K - number of clusters in that subtree
D^2 - weight of the edge
N and N' - amount of points in subtrees
IF Border >= limit of subtree:
That subtree is a cluster
It's limit = N * D^2
Merge subtrees
Add limits
Add number of clusters
Add number of points
Отношения между общностями существуют, так как существуют отношения между субъектами этих общностей.
Среди них есть особенные, особенные для общностей, но не для субъектов. Но в то же время отношения между общностями возможны только через призму субъектов.
Субъекты вступают в общности из-за особенности, они являются действующими лицами, хоть и соотносят общности. И поэтому для субъекта важно, к какой общности принадлежит он, и к какой будет принадлежать. Для субъекта важно, чья общность больше, то есть важна мерапринадлежности в пределах ранга.
Сколько субъектов принадлежат к его общности, а сколько к иной?