Напишите реализацию класса SparseVector
class SparseVector:
def __init__(self, elements: list[int]) -> None:
pass
def dot_product(self, other_vector: 'SparseVector') -> int:
pass
data1 = [0, 0, 3, 40, 0, 0, 0, 5, 0]
data2 = [1, 0, 0, 2, 0, 14, 0, 0, 0]
sparse_vec1 = SparseVector(data1)
sparse_vec2 = SparseVector(data2)
product_result = sparse_vec1.dot_product(sparse_vec2)
# Ожидаемый результат: 80
class SparseVector:
def __init__(self, elements: list[int]) -> None:
self.non_zero = {i: val for i, val in enumerate(elements) if val != 0}
def dot_product(self, other_vector: 'SparseVector') -> int:
common_indices = set(self.non_zero.keys()) & set(other_vector.non_zero.keys())
return sum(self.non_zero[i] * other_vector.non_zero[i] for i in common_indices)
Как бустинги обрабатывают категориальные признаки?
например, CatBoost и LightGBM имеют встроенную обработку, а вот XGBoost — требует ручного кодирования
Дайте объяснение target encoding
значение категориального признака кодируется в зависимости от его влияния на целевую переменную(категории заменяются на среднее/медиану таргета для каждой группы)
Напишите формулы энтропии и индекса Джини в узле дерева
H(S)= -Sigma_{i=1}^N(p_i*log(p_i))
G(S)=1-Sigma_{i=1}^N(p_i^2),
где S-текущий узел, N-кол-во классов, p_i- доля объектов класса i в узле S
Как определяется наилучшее разбиение в дереве?
максимизацией для Information Gain, максимизируем "информативность" разделения
Как обучается случайный лес?
Случайный лес обучается путём создания множества деревьев решений, каждое из которых обучается на случайной подвыборке данных aka бутстрэп и выбирает признаки для разбиения узлов из случайного подмножества. Итоговый результат определяется голосованием (классификация) или усреднением (регрессия) предсказаний всех деревьев
Как дать оценку важности признаков?
Для линейных моделей важность признаков оценивают по абсолютным значениям весов (после масштабирования данных), для деревьев/леса — по частоте использования признака в разбиениях и суммарному уменьшению примеси (Gini/Information Gain), нормированному на число деревьев.
Permutation importance — универсальный метод: для каждого признака случайно перемешивают его значения и измеряют, насколько падает точность модели; чем сильнее падение, тем важнее признак
Какая есть функция потерь для деревьев?😜
@zadachi_ds
