Pull to refresh
  • by relevance
  • by date
  • by rating

Реализация алгоритма k-means на c# (с обобщенной метрикой)

.NETData MiningAlgorithms
Всем привет. Продолжая тему того, что Andrew Ng не успел рассказать в курсе по машинному обучению, приведу пример своей реализации алгоритма k-средних. У меня стояла задача реализовать алгоритм кластеризации, но мне необходимо было учитывать степень корреляции между величинами. Я решил использовать в качестве метрики расстояние Махаланобиса, замечу, что размер данных для кластеризации не так велик, и не было необходимости делать кэширование кластеров на диск. За реализацией прошу под кат.

кат
Total votes 20: ↑16 and ↓4+12
Views30K
Comments 19

Кластеризация k-means с расстоянием Евклида и Махаланобиса

Data MiningAlgorithms
В предыдущей статье я рассказывал, как можно реализовать алгоритм k-means на c# с обобщенной метрикой. В комментах можно почитать обсуждение того, насколько целесообразно использовать разные метрики, о математической природе использования разных метрик и тому прочее. Мне тогда хотелось привести красивый пример, но не было под рукой подходящих данных. И вот сегодня я столкнулся с задачей, которая хорошо иллюстрирует преимущества использования расстояния Махаланобиса в k-means кластеризации. Подробности под катом.

Читать дальше →
Total votes 23: ↑19 and ↓4+15
Views13K
Comments 26

Кластеризация nodejs web-сервера с помощью node-clusterize-cli

Website developmentNode.JS
Последние полгода я занимаюсь разработкой достаточно большого web-приложения, под капотом которого ревет и дымится NodeJS. Когда дело дошло до деплоя на продакшн я задумался: «почему бы мне не использовать несколько тредов с инстансом приложения?».

Реализовав кластер, я увидел, что производительность от его использования возросла в 1,5 раза, что очень даже не плохо, учитывая малый объем потраченных усилий. Но я решил не останавливаться на этом, и сделать удобный CLI для работы с кластером, чтобы отвязать код, который отвечает за запуск кластера от конкретного приложения. Кроме того, очень хотелось демонизировать кластер, чтобы он висел себе молча в процессах, поднимал упавшие воркеры, писал в логи, и никого больше не отвлекал.

Так появился node-clusterize-cli — утилита работающая из командной строки, не затрагивающая кода приложения. Основанная на оригинальном модуле «cluster» NodeJS.
Читать дальше →
Total votes 26: ↑22 and ↓4+18
Views8.6K
Comments 18

Кластеризация СХД NetApp используя подручные свичи

SAN
Кластеризация систем хранения данных сейчас набирает оборотов, особенно в свете бурно развивающихся Flash технологий, которые требуют наличия большего количества контроллеров способных обрабатывать выскокопроизводительные накопители. Кроме поддерживаемых кластерных свичей есть множетсво других, которые временно можно исспользовать для этих целей. В этой статье я хотел бы привести пример настройки нескольких свичей, которые мною протестированны для кластерной сети. Многие другие свичи, уверен, тоже будут работать, ведь это обычный Ethernet


Схема подключения свичей для Cluster Interconnect

Когда у вас есть на руках (хотябы временно) больше двух контроллеров FAS, кластерный свич может понадобится, в случае:
Настроить кластерный свич
Total votes 11: ↑10 and ↓1+9
Views8.4K
Comments 11

Gobetween Exec discovery+ Elasticsearch. L4 балансировка с Data Node Discovery

Open source
Tutorial

Зачем все это нужно


Все кто использовал Elasticsearch каластер для своих нужд (особенно для логирования и как основную базу данных) на больших нагрузках сталкивался с проблемами консистентности и масштабируемости. Когда требуется распараллелить нагрузку на Elasticsearch обычно применялись статические решения то типу NGINX+Elasticsearch. Это позволяет распараллелить нагрузку, но выглядит не слишком гибко. Особенно если учесть что ноды могут сами выпадать из кластера и простой хелсчек покажет что все отлично, а на самом деле нода перегружена, исключена из кластера. В любом случае хотелось бы иметь данные о состоянии кластера из первых рук, а не довольствоваться простыми проверками.
Итак, приступим к построению балансировки .


Как мы будем это делать


В данном случае мы будем использовать CAT node API, которое является частъю мощнейшего CAT API, который является инструментом поиска заголовков по Elasticsearch клстреру.
Мы будем использовать только Gobetween и встроенные механизмы Elasticsearch для балансировки записи /чтения СRUD (DATA) нод при произвольном количестве/статусе нод в кластере.

Читать дальше →
Total votes 7: ↑7 and ↓0+7
Views5.2K
Comments 0

Docker Swarm+Consul+Gobetween в виде движка для гео распределенного кластера

Open sourceDevelopment for Linux
Tutorial

Преамбула


Некоторе время назад перед нами стала задача спроектировать и развернуть систему для потокового видео. Суть была в массовом запуске/остановке инстанций, на которых происходит обратная сборка потокового видео и стриминг на множество media cdn провайдеров (youtube, livestream, ustream итд ) а также на собственные rtmp и ts точки назначения. Каждая инстанция требовала настройки перед запуском т.к. содержала специфическую для каждого клиента информацию. Также было понятно, что система должна работать в большом количестве регионов (как минимум во всех точках, где присутствует Амазон, а как максимум — в любом месте где можно арендовать сервер). Также основное требование — запуск инстанции в течении 1-2 секунд максимум, чтобы это было прозрачно для пользователя.


Читать дальше →
Total votes 11: ↑11 and ↓0+11
Views16K
Comments 12

Создание собственной View под Android – может ли что-то пойти не так?

Development of mobile applicationsAlgorithmsDevelopment for Android
«Дело было вечером, делать было нечего» — именно так родилась идея сделать вью с возможностью зума, распределяющую юзеров по рангам в зависимости от кол-ва их очков. Так как до этого я не имел опыта в создании собственных вьюшек такого уровня, задача показалась мне интересной и достаточно простой для начинающего… но, *ох*, как же я ошибался.

В статье я расскажу о том, с какими проблемами мне пришлось столкнутся как со стороны Android SDK, так и со стороны задачи (алгоритма кластеризации). Основная задача статьи – не научить делать так называемыми “custom view”, а показать проблемы, которые могут возникнуть при их создании.

Тема будет интересна тем из вас, кто имеет мало (или не имеет вовсе) опыта в создании чего-то подобного, а также тем, кто хочет словить лулзов с автора в сто первый раз уверовать в «гибкость» Android SDK.
Читать дальше →
Total votes 26: ↑24 and ↓2+22
Views35K
Comments 10

Открытый курс машинного обучения. Тема 7. Обучение без учителя: PCA и кластеризация

Open Data Science corporate blogData MiningAlgorithmsMachine learning

Привет всем! Приглашаем изучить седьмую тему нашего открытого курса машинного обучения!


Данное занятие мы посвятим методам обучения без учителя (unsupervised learning), в частности методу главных компонент (PCA — principal component analysis) и кластеризации. Вы узнаете, зачем снижать размерность в данных, как это делать и какие есть способы группирования схожих наблюдений в данных.


UPD: теперь курс — на английском языке под брендом mlcourse.ai со статьями на Medium, а материалами — на Kaggle (Dataset) и на GitHub.


Видеозапись лекции по мотивам этой статьи в рамках второго запуска открытого курса (сентябрь-ноябрь 2017).

Читать дальше →
Total votes 53: ↑52 and ↓1+51
Views137K
Comments 7

InnoDB cluster — оно работает, и вроде бы именно так, как обещали

Database AdministrationData storages
Tutorial

Я занимаюсь АТСками. И как-то так сложилась, что с самого первого заказа от меня хотели отказоустойчивости. Одним из ключевых компонентов современной АТС (как и любой информационной системы, наверное) является БД, где хранятся как данные о текущем состоянии системы, так и всякие конфигурационные параметры. Естественно, падение БД приводит к поломке всей системы. Начиналось все с MASTER-MASTER репликации в MySQL (исключительно для оперативности переключения), потом были эксперименты с MySQL over DRBD. Все это жило в pacemaker/corosync инфраструктуре. Там ездили IP-адреса, шлюзы и прочая лабудень. Со временем оно даже стало работать как-то более-менее устойчиво. Но тут мне попалась пара серверов, на которых DRBD сделать было нельзя, в MASTER-MASTER я разочаровался довольно давно (постоянно она у меня ломается, такая репликация), а без отказоустойчивой БД терялся весь смысл решения. На глаза мне попалось название InnoDB cluster и я решил: "была-не-была". Что из этого получилось — смотрите под катом.

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Views13K
Comments 23

Как я понял, что ем много сладкого, или классификация товаров по чекам в приложении

PythonData Mining
Sandbox

Задача


В этой статье мы хотим рассказать, как мы создали решение для классификации названий продуктов из чеков в приложении для учёта расходов по чекам и помощника по покупкам. Мы хотели дать пользователям возможность просматривать статистику по покупкам, собранную автоматически на основе отсканированных чеков, а именно распределить все купленные пользователем товары по категориям. Потому что заставлять пользователя самостоятельно группировать товары — это уже прошлый век. Есть несколько подходов для решения такой задачи: можно попробовать применить алгоритмы кластеризации с разными способами векторного представления слов или классические алгоритмы классификации. Ничего нового мы не изобрели и в этой статье лишь хотим поделиться небольшим гайдом о возможном решении задачи, примерами того, как делать не надо, анализом того, почему не сработали другие методы и с какими проблемами можно столкнуться в процессе.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Views9.8K
Comments 23

Продвинутый подход к обнаружению границ на примере стенок сосуда

Inobitec corporate blogAlgorithmsImage processingSoftware

Интересная информация


На рисунке ниже изображена трехмерная реконструкция сердца, полученная в результате работы современного томографа:


Для масштаба указана толщина луковицы аорты — 3.2 см, подумать только! Однако, когда у людей возникают проблемы с сердцем из-за сосудов, то речь, как правило, идет вовсе не о таких больших. На изображении видно, что сердце окружено более мелкими сосудами, и некоторые из них ответвляются прямо из крупных артерий. Это так называемые коронарные артерии, которые питают кровью непосредственно сердце. Если в них происходит сужение просвета (стеноз), например, из-за образования кальция, то уменьшается поток крови. Когда стеноз ярко выражен, то случается некроз ткани, другими словами инфаркт. Далее я расскажу о нашем подходе к вычислению границ сосудов, который в результате позволяет автоматически находить сужения и давать им оценку.
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Views6.2K
Comments 37

Кластеризация в Proxmox VE

Selectel corporate blogIT InfrastructureVirtualization


В прошлых статьях мы начали рассказывать о том, что такое Proxmox VE и как он работает. Сегодня мы расскажем о том, как можно использовать возможность кластеризации и покажем какие преимущества это дает.
Читать дальше →
Total votes 8: ↑8 and ↓0+8
Views6.6K
Comments 10