✍️ Разбор сложных задач прошедшей недели



1️⃣ Как узнать произведение вектора на матрицу?

Сначала нужно проверить, совпадает ли число элементов в векторе с числом строк в матрице. В нашем примере есть вектор A размером 3 и матрица B размером 3x3, что делает умножение возможным.

Каждый элемент вектора умножается на соответствующий элемент строки матрицы, и результаты суммируются, чтобы получить новый элемент результата.

✔️Первый элемент: (1 * 3) + (2 * 2) + (3 * 1) = 3 + 4 + 3 = 10

✔️Второй элемент: (1 * 2) + (2 * 1) + (3 * 3) = 2 + 2 + 9 = 13

✔️Третий элемент: (1 * 1) + (2 * 3) + (3 * 2) = 1 + 6 + 6 = 13

Результат — [10, 13, 13].

2️⃣ У синтаксиса Python есть особенность. Символы {} используются для создания и словарей, и множеств. Но есть нюанс. Однако если мы хотим создать пустое множество, то такой способ уже не сработает. Необходимо воспользоваться конструкцией s = set(). Конструкция s = {} создаст пустой словарь.

3️⃣ Изолирующий лес позволяет искать выбросы в данных. С геометрической точки зрения дерево-классификатор разбивает пространство признаков на зоны прямоугольного вида. И когда мы ставим какую-то новую точку-объект, то она попадает в одну из зон.

Представим, что дерево строит эти прямоугольные зоны произвольным образом. Тогда мы будем считать, что объект изолировался, если дерево построило прямоугольник, в который попал только этот объект. Чаще всего такое происходит, если объект лежит где-то на периферии, то есть проще всего изолировать выбросы.

Для алгоритма изолирующий лес нужно:

▪️Построить N деревьев.

▪️Каждое дерево строится до исчерпания выборки.

▪️Для ветвления в дереве выбирается случайный признак и случайное значение для расщепления.

▪️В конце концов для каждого объекта считается мера нормальности — среднее арифметическое глубин листьев, в который он попал, или изолировался. Выбросы будут попадать в листья на более ранних этапах построения дерева.



#разбор_задач