Линейная зависимость векторов 🧩
В предыдущем уроке ты научился брать набор векторов и строить по нему линейную оболочку $\operatorname{span}(v_1, \dots, v_k)$ — множество всех линейных комбинаций. Оболочка получалась подпространством всегда, при любом наборе. Но тут же возникает вопрос, на который аппарат прошлого урока ответа не давал: а сколько векторов в наборе действительно нужно?
Возьми два вектора на плоскости: $(1, 0)$ и $(2, 0)$. Их линейная оболочка — прямая, ось абсцисс. Ровно ту же самую прямую даёт один вектор $(1, 0)$. Второй вектор в наборе есть, места занимает, а информации не несёт: любую комбинацию $\alpha(1,0) + \beta(2,0)$ можно переписать как $(\alpha + 2\beta)(1,0)$, то есть через один вектор. Он лишний. А вот к паре $(1,0)$ и $(0,1)$ такое рассуждение не применить: выкинь любой из них — и оболочка схлопнется с плоскости до прямой. Каждый несёт своё.
Разница между этими двумя ситуациями — и есть содержание урока. У неё есть точное имя: линейная зависимость и линейная независимость. Это, возможно, самое важное понятие всей линейной алгебры — не потому что оно сложное (определение занимает одну строчку), а потому что через него определяются почти все остальные: размерность, ранг, координаты, и то, что мы будем изучать в следующих уроках. Ранг матрицы, с которым ты работал в уроке 162 как с «числом ненулевых строк после приведения к ступенчатому виду», получит наконец честное содержательное определение — и им окажется именно максимальное число линейно независимых строк.
Важно, что вопрос «зависима ли система векторов» — не философский, а полностью вычислительный. Он сводится к однородной системе линейных уравнений $\lambda_1 v_1 + \dots + \lambda_k v_k = 0$, а с однородными системами ты разобрался в уроке 167 до последнего винтика: критерий $\operatorname{rank} A < n$, ядро, ФСР. Так что технический аппарат у тебя уже полностью в руках — нужно только правильно поставить задачу. Именно поэтому урок читается быстро в вычислительной части и медленно в понятийной: считать ты умеешь, разбираться в том, что именно посчитано, — учишься сейчас.
Отдельно предупрежу про ловушку, из-за которой этот урок регулярно понимают криво. У линейной зависимости есть два эквивалентных определения: «существует нетривиальная комбинация, равная нулю» и «один из векторов выражается через остальные». Оба верны, но во втором стоит слово «один», а не «каждый», и разница между ними — это разница между правильным и неправильным ответом на экзамене. Мы разберём её выпукло, на конкретном контрпримере, потому что она стоит целого раздела.
А в машинном обучении линейная зависимость признаков — это диагноз, который ставится матрице данных до всякого обучения. Если один столбец таблицы выражается через другие, веса модели перестают быть определимыми: бесконечно много разных наборов коэффициентов дают ровно одинаковые предсказания. Хуже того, на реальных данных строгая зависимость встречается редко, а вот «почти зависимость» — сплошь и рядом, и она, как ни странно, опаснее: формально всё в порядке, ранг полный, модель обучается, а коэффициенты — мусор, который скачет на десятки процентов от добавления одного наблюдения. Мы посчитаем это на конкретных числах и познакомимся с VIF — стандартным детектором коллинеарности.
🎯 Ты узнаешь:
-
Что такое линейная комбинация, чем тривиальная комбинация отличается от нетривиальной и почему всё держится именно на этом различии
-
Два эквивалентных определения линейной зависимости, честное доказательство их эквивалентности и контрпример, показывающий, где второе определение понимают неправильно
-
Рабочий алгоритм: как любой вопрос о зависимости свести к однородной системе и посчитать ранг — с разбором на пяти примерах разной размерности
-
Быстрые критерии для частных случаев: определитель для $n$ векторов в $\mathbb{R}^n$, автоматическая зависимость при $k > n$, коллинеарность двух векторов и компланарность трёх
-
Свойства систем векторов — про нулевой вектор, повторы, подсистемы и надсистемы — каждое с коротким доказательством, а не списком
-
Теорему о базисном миноре и её следствие: почему строчный и столбцовый ранг совпадают и почему ранг — это максимальное число независимых векторов
-
Как проверять на зависимость многочлены, функции и матрицы, где определителя «в лоб» нет
-
Как линейная зависимость признаков ломает линейную модель: неопределимость весов,
numpy.linalg.matrix_rank, VIF, разница между строгой и почти зависимостью, ситуация $p > n$
История: откуда это взялось?
Понятие линейной зависимости появилось не как ответ на вычислительную задачу, а как побочный продукт попытки построить геометрию заново — без координат.
В 1844 году немецкий школьный учитель Герман Грассман издал книгу «Die lineale Ausdehnungslehre» — «Учение о линейном протяжении». Книга была написана чудовищно тяжёлым языком, продавалась плохо, и большая часть тиража в итоге пошла на макулатуру. Но в ней впервые появилось то, чем мы пользуемся сегодня: понятие системы величин, которые можно складывать и умножать на числа, понятие «производной системы» (то, что мы называем линейной оболочкой), и — ключевое — понятие независимости. Грассман прямо формулирует: набор величин называется независимым, если ни одна из них не выражается через остальные, и число независимых величин в системе он называет её «ступенью» (Stufe) — прямой предок нашего слова «размерность». Там же у Грассмана появляется и рассуждение, которое сегодня называют леммой о замене: если одна система выражается через другую и при этом независима, то в ней не может быть больше элементов.
Через сорок с лишним лет итальянец Джузеппе Пеано в книге «Calcolo geometrico» (1888) переписал Грассмана на нормальном математическом языке, дал аксиоматику линейной системы (те самые восемь аксиом из прошлого урока) и аккуратно определил линейно независимые системы и размерность. Именно текст Пеано, а не оригинал Грассмана, стал источником современных формулировок.
Параллельно — и почти независимо — та же идея вызревала в теории определителей. Огюстен Луи Коши в 1815 году ввёл сам термин «определитель» в современном смысле, Джеймс Джозеф Сильвестр в 1850-м — слово «минор». К середине века уже было понятно, что обращение определителя в ноль означает какую-то «вырожденность» строк, но что именно вырождается, формулировали каждый по-своему. Точку поставил Георг Фробениус: в работе 1879 года он ввёл термин ранг (Rang) матрицы, определив его как наибольший порядок ненулевого минора, и связал это число с числом независимых строк и столбцов. Утверждение, которое мы разберём в этом уроке под именем теоремы о базисном миноре, по существу восходит именно к этому кругу работ Кронекера и Фробениуса; само же название «теорема о базисном миноре» закрепилось позже, в основном в русскоязычной учебной традиции — у Куроша, Гельфанда и их последователей.
Отдельная линия — лемма о замене. Её каноническая формулировка и доказательство принадлежат Эрнсту Штайницу (1913), хотя, как уже сказано, содержательно она была у Грассмана. Именно эта лемма гарантирует, что «число независимых векторов» — корректно определённое число, а не свойство того, как ты их перебирал; на ней стоит вся теория размерности, к которой мы подойдём в следующем уроке.
И, наконец, прикладная ветка. В 1934 году норвежский экономист Рагнар Фриш (первый нобелевский лауреат по экономике, 1969) в работе «Statistical Confluence Analysis by Means of Complete Regression Systems» ввёл термин мультиколлинеарность — для ситуации, когда объясняющие переменные в регрессии линейно зависимы или почти зависимы. Фриш занимался экономической статистикой, где переменные вроде «доход», «расходы» и «сбережения» связаны тождествами по построению, и линейная зависимость возникала сама собой, без всяких злых намерений исследователя. А в 1970 году Дональд Марквардт в статье про гребневую регрессию предложил численную меру этой беды — variance inflation factor, VIF, которым пользуются до сих пор и который мы посчитаем в конце урока.
Итого: понятие родилось в геометрии (Грассман, Пеано), получило вычислительный аппарат в теории определителей (Коши, Сильвестр, Кронекер, Фробениус), было доведено до логической аккуратности в начале XX века (Штайниц) и в тридцатых годах вернулось в прикладную науку в виде диагноза для регрессионных моделей (Фриш, Марквардт). Все четыре слоя мы в этом уроке пройдём.
Линейная комбинация: тривиальная и нетривиальная
Интуиция: единственная операция, которая у нас есть
В векторном пространстве разрешены ровно две вещи: складывать векторы и умножать их на числа. Больше ничего — ни делить вектор на вектор, ни возводить в квадрат нельзя. Значит, всё, что вообще можно построить из набора векторов, получается конечным числом сложений и умножений на числа. Собери все такие результаты в одну формулу — и получишь линейную комбинацию. Это буквально единственный способ «что-то сделать» с набором векторов, поэтому все содержательные вопросы линейной алгебры рано или поздно оказываются вопросами про линейные комбинации.
Определение: Пусть $v_1, v_2, \dots, v_k$ — векторы некоторого векторного пространства $V$, а $\lambda_1, \lambda_2, \dots, \lambda_k$ — числа (скаляры). Вектор
$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k$$называется линейной комбинацией векторов $v_1, \dots, v_k$ с коэффициентами $\lambda_1, \dots, \lambda_k$.
Множество всех линейных комбинаций набора — это и есть $\operatorname{span}(v_1, \dots, v_k)$, линейная оболочка из прошлого урока. Новое здесь не само понятие комбинации, а то, что мы начинаем смотреть не на результат комбинации, а на набор коэффициентов как на самостоятельный объект.
Разберём простой счёт. Возьмём $v_1 = (2, 1)$ и $v_2 = (1, 3)$ в $\mathbb{R}^2$. Линейная комбинация с коэффициентами $\lambda_1 = 2$, $\lambda_2 = 3$:
$$2 \cdot (2, 1) + 3 \cdot (1, 3) = (4, 2) + (3, 9) = (7, 11).$$Меняя коэффициенты, получаем разные векторы: при $(\lambda_1, \lambda_2) = (1, -1)$ выйдет $(1, -2)$, при $(0, 5)$ — вектор $(5, 15)$, при $(-3, 0)$ — вектор $(-6, -3)$. Каждая пара чисел даёт свой вектор.
А теперь вопрос, ради которого всё затевалось: какие коэффициенты дают нулевой вектор? Один ответ известен заранее и никакой информации не несёт.
Определение: Линейная комбинация называется тривиальной, если все её коэффициенты равны нулю: $\lambda_1 = \lambda_2 = \dots = \lambda_k = 0$. Если хотя бы один коэффициент отличен от нуля, комбинация называется нетривиальной.
Тривиальная комбинация любого набора векторов равна нулевому вектору:
$$0 \cdot v_1 + 0 \cdot v_2 + \dots + 0 \cdot v_k = 0 + 0 + \dots + 0 = 0.$$Это следует прямо из аксиом (свойство $0 \cdot v = 0$ мы выводили в прошлом уроке) и верно всегда, при любых векторах в любом пространстве. Ноль получить тривиально — умение бесполезное, как умение решать однородную систему нулевым вектором.
Содержательный вопрос звучит иначе: можно ли получить нулевой вектор нетривиально? То есть подобрать коэффициенты, не все равные нулю, так, чтобы сумма схлопнулась в ноль. Вот это уже свойство конкретного набора, и оно бывает и так и эдак.
Проверим на наших $v_1 = (2,1)$, $v_2 = (1,3)$. Ищем $\lambda_1, \lambda_2$ с условием $\lambda_1(2,1) + \lambda_2(1,3) = (0,0)$. Покоординатно:
$$\begin{cases} 2\lambda_1 + \lambda_2 = 0 \\ \lambda_1 + 3\lambda_2 = 0 \end{cases}$$Из первого уравнения $\lambda_2 = -2\lambda_1$; подставляем во второе: $\lambda_1 - 6\lambda_1 = -5\lambda_1 = 0$, откуда $\lambda_1 = 0$ и следом $\lambda_2 = 0$. Нетривиальной комбинации нет — только тривиальная.
А вот другая пара: $u_1 = (2, 1)$, $u_2 = (6, 3)$. Здесь $3u_1 - u_2 = (6,3) - (6,3) = (0,0)$, коэффициенты $(3, -1)$ — не нули. Нетривиальная комбинация нашлась.
Заметь, что во втором случае мы фактически обнаружили, что $u_2 = 3u_1$: второй вектор — просто растянутый первый. Это не совпадение, и именно эту связь мы формализуем в следующем разделе.
Разбор примеров
Пример 1. Разные комбинации одного набора.
Пусть $v_1 = (1, 0, 2)$, $v_2 = (0, 1, -1)$ в $\mathbb{R}^3$. Посчитаем несколько комбинаций:
$$3v_1 + 2v_2 = (3, 0, 6) + (0, 2, -2) = (3, 2, 4),$$$$-v_1 + 5v_2 = (-1, 0, -2) + (0, 5, -5) = (-1, 5, -7),$$
$$0 \cdot v_1 + 0 \cdot v_2 = (0, 0, 0).$$
Последняя строка — тривиальная комбинация, и она даёт ноль, как и положено. Есть ли нетривиальная, дающая ноль? Условие $\lambda_1(1,0,2) + \lambda_2(0,1,-1) = (0,0,0)$ по первой координате даёт $\lambda_1 = 0$, по второй — $\lambda_2 = 0$. Нет, нетривиальной нет.
Пример 2. Комбинация с нулевым коэффициентом всё ещё может быть нетривиальной.
Возьмём три вектора $w_1 = (1, 1)$, $w_2 = (2, 2)$, $w_3 = (0, 5)$ и комбинацию с коэффициентами $(2, -1, 0)$:
$$2w_1 - w_2 + 0 \cdot w_3 = (2, 2) - (2, 2) + (0, 0) = (0, 0).$$Один из коэффициентов равен нулю, но комбинация всё равно нетривиальна: требуется, чтобы хотя бы один коэффициент был ненулевым, а не чтобы все были ненулевыми. Это частая путаница, и её стоит зафиксировать сразу: «нетривиальная» — это отрицание к «все нули», а не к «хоть один ноль».
Пример 3. Комбинация в пространстве многочленов.
В пространстве многочленов степени не выше двух возьмём $p_1 = x^2 + 1$, $p_2 = x - 3$, $p_3 = x^2 + x$. Комбинация с коэффициентами $(1, 1, -1)$:
$$1 \cdot (x^2 + 1) + 1 \cdot (x - 3) - 1 \cdot (x^2 + x) = x^2 + 1 + x - 3 - x^2 - x = -2.$$Получился ненулевой многочлен (константа $-2$), значит эта конкретная комбинация ноль не даёт. Но она показывает механику: в абстрактном пространстве линейная комбинация считается ровно так же, только «покоординатно» означает «по коэффициентам при одинаковых степенях».
Пример 4. Комбинация матриц.
$$2\begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} - 3\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} = \begin{pmatrix} 2 & 0 \\ 0 & 2 \end{pmatrix} - \begin{pmatrix} 0 & 3 \\ 3 & 0 \end{pmatrix} = \begin{pmatrix} 2 & -3 \\ -3 & 2 \end{pmatrix}.$$Пространство матриц $2 \times 2$ — полноценное векторное пространство, и линейные комбинации в нём считаются поэлементно.
Почему это важно
Понятие тривиальной комбинации кажется пустым — «всё умножили на ноль, получили ноль». Но именно эта пустота делает его полезным как точку отсчёта. Вопрос «есть ли у набора нетривиальная комбинация, равная нулю» — это вопрос о том, есть ли в наборе внутренняя связь, скрытое соотношение между векторами. Тривиальная комбинация есть всегда и потому ничего не различает; нетривиальная — есть не всегда, и потому различает всё.
Практический смысл прямой. Каждый вектор набора — это, скажем, столбец таблицы данных: признак. Нетривиальная комбинация, дающая ноль, — это найденное тождество вида «пять раз первый признак минус второй плюс третий равны нулю на каждой строке таблицы». Такое тождество означает, что признаки связаны формулой, и один из них не несёт новой информации. Тривиальная комбинация тут ни о чём не говорит: «ноль раз первый плюс ноль раз второй равно нулю» верно для любой таблицы на свете.
Ровно поэтому в определении, к которому мы сейчас переходим, слово «нетривиальная» стоит на самом видном месте. Убери его — и определение станет тавтологией, верной для всех наборов сразу.
Два языка линейной зависимости
Интуиция: избыточность набора
Представь, что векторы — это инструкции движения, а линейная комбинация — маршрут: пройди $\lambda_1$ шагов в направлении $v_1$, потом $\lambda_2$ шагов в направлении $v_2$, и так далее. Тогда нетривиальная комбинация, равная нулю, — это непустой маршрут, который возвращает тебя ровно в исходную точку. Раз такой маршрут есть, значит какое-то из направлений можно «обойти» через остальные: вместо того чтобы идти по $v_1$, можно пройти комбинацией остальных и попасть туда же. Направление $v_1$ избыточно.
Если же ни один непустой маршрут не возвращает в начало — каждое направление уводит по-настоящему в свою сторону, и обойти его через другие невозможно. Набор «честный», без дублей.
Теперь запишем это точно.
Определение 1 (основное). Система векторов $v_1, v_2, \dots, v_k$ векторного пространства $V$ называется линейно зависимой, если существует нетривиальная линейная комбинация этих векторов, равная нулевому вектору:
$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k = 0, \qquad \text{где } \lambda_1^2 + \lambda_2^2 + \dots + \lambda_k^2 \ne 0$$(последнее условие — компактная запись фразы «не все коэффициенты равны нулю»).
Система называется линейно независимой, если такой комбинации не существует, то есть равенство $\lambda_1 v_1 + \dots + \lambda_k v_k = 0$ возможно только при $\lambda_1 = \lambda_2 = \dots = \lambda_k = 0$.
Обрати внимание на логическую форму независимости: это утверждение вида «из $A$ следует $B$». Из того, что комбинация равна нулю, следует, что все коэффициенты нулевые. Именно так независимость и доказывают на практике: предполагают, что комбинация равна нулю, и выводят из этого, что все $\lambda_i$ обязаны быть нулями.
Есть второй способ сказать то же самое — тот, который ближе к интуиции про «лишний вектор».
Определение 2 (эквивалентное). Система из $k \ge 2$ векторов линейно зависима тогда и только тогда, когда хотя бы один из её векторов является линейной комбинацией остальных.
Слово «хотя бы один» здесь — не небрежность, а точная формулировка, и через два подраздела мы увидим, почему её нельзя усилить до «каждый».
Доказательство эквивалентности
Докажем, что оба определения задают одно и то же свойство. Пусть в системе $k \ge 2$ векторов.
Шаг 1. Из определения 1 следует определение 2.
Пусть система линейно зависима, то есть
$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k = 0$$и не все $\lambda_i$ нулевые. Значит, найдётся индекс $j$, для которого $\lambda_j \ne 0$. Перенесём все слагаемые, кроме $j$-го, в правую часть:
$$\lambda_j v_j = -\lambda_1 v_1 - \dots - \lambda_{j-1}v_{j-1} - \lambda_{j+1}v_{j+1} - \dots - \lambda_k v_k.$$Так как $\lambda_j \ne 0$, на него можно поделить (в поле вещественных чисел это законно, для нуля было бы нельзя):
$$v_j = -\frac{\lambda_1}{\lambda_j} v_1 - \dots - \frac{\lambda_{j-1}}{\lambda_j}v_{j-1} - \frac{\lambda_{j+1}}{\lambda_j}v_{j+1} - \dots - \frac{\lambda_k}{\lambda_j} v_k.$$Вектор $v_j$ выражен через остальные. Утверждение доказано.
Шаг 2. Из определения 2 следует определение 1.
Пусть некоторый вектор — скажем, $v_m$ — выражается через остальные:
$$v_m = \mu_1 v_1 + \dots + \mu_{m-1}v_{m-1} + \mu_{m+1}v_{m+1} + \dots + \mu_k v_k.$$Перенесём $v_m$ в правую часть:
$$\mu_1 v_1 + \dots + \mu_{m-1}v_{m-1} + (-1)\cdot v_m + \mu_{m+1}v_{m+1} + \dots + \mu_k v_k = 0.$$Это линейная комбинация всех $k$ векторов, и коэффициент при $v_m$ равен $-1 \ne 0$. Значит, комбинация нетривиальна, и система линейно зависима по определению 1. Доказано.
Заметь, где именно в шаге 1 использовалось условие $\lambda_j \ne 0$: без него деление было бы невозможно, и весь переход рассыпался бы. Это и есть техническая причина, по которой в определении требуется нетривиальная комбинация. И заметь, где в шаге 2 взялся ненулевой коэффициент: он появился сам, из переноса $v_m$ налево, и равен ровно $-1$. Никакого подбора не потребовалось.
Ловушка: «один» — это не «каждый»
Вот здесь этот урок чаще всего понимают неправильно, и ошибка живучая: её тащат в следующие темы и получают неверные выводы про базисы и размерности.
Определение 2 говорит: зависимость означает, что хотя бы один вектор выражается через остальные. Многие запоминают его как «в зависимой системе любой вектор выражается через остальные». Это неверно. Разберём контрпример.
Возьмём в $\mathbb{R}^2$ три вектора:
$$v_1 = (1, 0), \qquad v_2 = (2, 0), \qquad v_3 = (0, 1).$$Система зависима. Действительно, $2v_1 - v_2 = (2,0) - (2,0) = (0,0)$, и с учётом третьего вектора комбинация
$$2v_1 - v_2 + 0 \cdot v_3 = 0$$нетривиальна (коэффициенты $2, -1, 0$, первый ненулевой). По определению 1 система линейно зависима.
Какие векторы выражаются через остальные? Проверим по очереди.
Вектор $v_1$: $v_1 = \tfrac{1}{2}v_2 + 0 \cdot v_3$. Выражается.
Вектор $v_2$: $v_2 = 2v_1 + 0 \cdot v_3$. Выражается.
Вектор $v_3$: попробуем $v_3 = \alpha v_1 + \beta v_2$. Правая часть равна $(\alpha + 2\beta, \; 0)$ — у неё вторая координата всегда ноль, при любых $\alpha, \beta$. А у $v_3$ вторая координата равна единице. Равенство невозможно ни при каких коэффициентах. Вектор $v_3$ через остальные не выражается.
Итог: система зависима, но конкретный вектор $v_3$ — не «виновник» этой зависимости и через другие не выражается. Геометрия здесь совершенно прозрачна: $v_1$ и $v_2$ лежат на оси абсцисс, их линейная оболочка — эта ось; $v_3$ смотрит по оси ординат и на оси абсцисс не лежит. Зависимость сидит внутри пары $v_1, v_2$, а $v_3$ к ней непричастен.
Есть точное указание на то, кто именно выражается. Вернёмся к шагу 1 доказательства: там мы выражали $v_j$ и для этого делили на $\lambda_j$. Значит:
Уточнение: в зависимой системе через остальные выражается ровно тот вектор, у которого коэффициент в нетривиальной обнуляющей комбинации отличен от нуля. Векторы с нулевым коэффициентом выражаться не обязаны.
В нашем примере обнуляющая комбинация была $(2, -1, 0)$: у $v_1$ и $v_2$ коэффициенты ненулевые — они и выражаются; у $v_3$ коэффициент ноль — он и не выражается.
Более того, разные обнуляющие комбинации могут «указывать» на разные векторы, и полный список тех, кто выражается, получается объединением по всем комбинациям. В нашем примере любое решение системы $\lambda_1(1,0) + \lambda_2(2,0) + \lambda_3(0,1) = (0,0)$ имеет вид: вторая координата даёт $\lambda_3 = 0$, первая даёт $\lambda_1 = -2\lambda_2$. То есть все обнуляющие комбинации — это $t \cdot (-2, 1, 0)$, и у $v_3$ коэффициент ноль во всех без исключения. Поэтому $v_3$ не выражается ни при каком раскладе — что мы и проверили напрямую.
Правильная формулировка, которую стоит запомнить дословно: зависимость — это свойство системы целиком, а не отдельного вектора в ней. Фраза «вектор $v_3$ зависим» бессмысленна; осмысленны только фразы «система зависима» и «вектор $v_3$ принадлежит линейной оболочке остальных».
Разбор примеров
Пример 1. Проверка независимости по определению.
Проверим, независимы ли $v_1 = (1, 2)$ и $v_2 = (4, 3)$ в $\mathbb{R}^2$.
Пусть $\lambda_1 v_1 + \lambda_2 v_2 = 0$. Покоординатно:
$$\begin{cases} \lambda_1 + 4\lambda_2 = 0 \\ 2\lambda_1 + 3\lambda_2 = 0 \end{cases}$$Из первого уравнения $\lambda_1 = -4\lambda_2$, подставляем во второе: $-8\lambda_2 + 3\lambda_2 = -5\lambda_2 = 0$, значит $\lambda_2 = 0$ и $\lambda_1 = 0$. Из равенства комбинации нулю следует нулевая тривиальность коэффициентов — система независима.
Пример 2. Проверка зависимости и явное выражение.
Возьмём $u_1 = (1, 2, 0)$, $u_2 = (0, 1, 1)$, $u_3 = (2, 5, 1)$ в $\mathbb{R}^3$.
Заметим, что $2u_1 + u_2 = (2, 4, 0) + (0, 1, 1) = (2, 5, 1) = u_3$. Значит, $u_3$ выражается через остальные, и по определению 2 система зависима. Обнуляющая комбинация получается переносом:
$$2u_1 + u_2 - u_3 = 0.$$Коэффициенты $(2, 1, -1)$ — все ненулевые. По уточнению выше это значит, что здесь каждый из трёх векторов выражается через два других: например, $u_1 = \tfrac{1}{2}(u_3 - u_2)$, $u_2 = u_3 - 2u_1$. Сравни с предыдущим контрпримером, где нулевой коэффициент у $v_3$ ломал эту симметрию.
Пример 3. Зависимость с нулевым вектором.
Система $w_1 = (3, -1, 4)$, $w_2 = (0, 0, 0)$. Комбинация $0 \cdot w_1 + 1 \cdot w_2 = (0,0,0)$ нетривиальна: коэффициент при $w_2$ равен единице. Система зависима.
При этом $w_1$ через $w_2$ не выражается: любая комбинация одного нулевого вектора равна нулю, а $w_1$ не нулевой. Зато $w_2$ через $w_1$ выражается: $w_2 = 0 \cdot w_1$. Снова «хотя бы один», а не «каждый».
Пример 4. Один вектор — тоже система.
Система из одного вектора $v$. Комбинация — это просто $\lambda v$. Если $v \ne 0$, то из $\lambda v = 0$ следует $\lambda = 0$ (если бы $\lambda \ne 0$, то $v = \lambda^{-1} \cdot 0 = 0$, противоречие). Значит, один ненулевой вектор образует линейно независимую систему.
Если же $v = 0$, то $1 \cdot v = 0$ при коэффициенте $1 \ne 0$ — система из одного нулевого вектора зависима. Определение 2 к случаю $k = 1$ неприменимо (нет «остальных»), поэтому для одиночного вектора работаем только с определением 1.
Почему это важно
Наличие двух эквивалентных формулировок — это не роскошь, а рабочий инструмент, и пользоваться надо той, которая удобнее в конкретной задаче.
Определение 1 удобно, когда нужно вычислять. Оно прямо переводится в однородную систему линейных уравнений относительно коэффициентов $\lambda_i$ — и весь аппарат урока 167 включается автоматически. Никакого перебора «а вдруг вот этот выражается через тех» не требуется: одна система, один ранг, один ответ.
Определение 2 удобно, когда нужно понимать смысл. Оно прямо говорит: зависимость означает избыточность, дублирование информации. Именно на этом языке формулируются прикладные вещи — «признак выражается через другие», «уравнение является следствием остальных», «вектор не добавляет нового направления».
А контрпример с $v_3$ важен потому, что он лечит целый класс неверных рассуждений вида «система зависима, значит любой её вектор можно выбросить без потерь». Нельзя. В нашем примере выбрасывание $v_3$ схлопывает оболочку с плоскости до прямой — потеря существенная. Выбросить без потерь можно только тот вектор, который действительно выражается через остальные. К этой мысли мы вернёмся в разделе про геометрический смысл — она и есть мост к следующему уроку.
Рабочий алгоритм: сведение к однородной системе
Интуиция: неизвестные — это коэффициенты
Всё, что нужно для практики, содержится в одном наблюдении. Запишем условие зависимости для векторов-столбцов $v_1, \dots, v_k$ из $\mathbb{R}^n$:
$$\lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k = 0.$$Слева стоит вектор из $n$ координат, справа — нулевой вектор из $n$ координат. Приравняем покоординатно: получится $n$ уравнений. Что в них известно, а что нет? Координаты векторов известны — это данные задачи. Неизвестны коэффициенты $\lambda_1, \dots, \lambda_k$. И каждое из $n$ уравнений линейно относительно этих коэффициентов, потому что $i$-я координата суммы равна $\lambda_1 v_{1i} + \lambda_2 v_{2i} + \dots + \lambda_k v_{ki}$.
То есть перед нами однородная система из $n$ уравнений с $k$ неизвестными. Матрица этой системы составлена из наших векторов, записанных столбцами: в первом столбце координаты $v_1$, во втором — $v_2$, и так далее. Действительно, произведение матрицы на столбец — это в точности линейная комбинация столбцов матрицы с коэффициентами из этого столбца:
$$A\lambda = \begin{pmatrix} | & | & & | \\ v_1 & v_2 & \dots & v_k \\ | & | & & | \end{pmatrix} \begin{pmatrix} \lambda_1 \\ \lambda_2 \\ \vdots \\ \lambda_k \end{pmatrix} = \lambda_1 v_1 + \lambda_2 v_2 + \dots + \lambda_k v_k.$$Дальше — прямое применение критерия из урока 167. Система $A\lambda = 0$ имеет нетривиальное решение тогда и только тогда, когда $\operatorname{rank} A < k$, где $k$ — число неизвестных, то есть число векторов. А нетривиальное решение — это и есть нетривиальная комбинация, дающая ноль.
Теорема (критерий линейной зависимости через ранг). Система векторов $v_1, \dots, v_k$ из $\mathbb{R}^n$ линейно зависима тогда и только тогда, когда
$$\operatorname{rank} A < k,$$где $A$ — матрица размера $n \times k$, составленная из этих векторов как из столбцов. Система линейно независима тогда и только тогда, когда $\operatorname{rank} A = k$.
Ранг матрицы не превосходит числа её столбцов, поэтому третьего варианта нет: либо $\operatorname{rank} A = k$ (независимы), либо $\operatorname{rank} A < k$ (зависимы).
Небольшое, но важное замечание. Ранг матрицы не меняется при транспонировании — это факт из урока 162. Поэтому векторы можно записывать и строками: ранг получится тот же самый, и ответ не изменится. На практике строками писать удобнее (проще делать элементарные преобразования, глядя на строки), и почти все решают именно так. Но помнить, откуда берётся система, полезно: неизвестными там были коэффициенты, а векторы стояли столбцами. Если тебе нужны только «зависима / независима» — пиши строками. Если нужны сами коэффициенты $\lambda_i$ — работай со столбцовой матрицей и ищи её ядро.
Алгоритм
Пошагово, для набора из $k$ векторов в $\mathbb{R}^n$.
-
Составь матрицу $A$: векторы — столбцы (если нужны коэффициенты) или строки (если нужен только ответ «да/нет»).
-
Приведи $A$ элементарными преобразованиями к ступенчатому виду и посчитай ранг $r$ — число ненулевых строк.
-
Сравни $r$ с $k$ — числом векторов. Если $r = k$ — система независима, и на этом всё. Если $r < k$ — система зависима.
-
Если нужны коэффициенты нетривиальной комбинации: возьми матрицу со столбцами-векторами, доведи её до улучшенного ступенчатого вида (RREF), назначь свободной переменной единицу и найди остальные обратным ходом. Получится вектор $\lambda = (\lambda_1, \dots, \lambda_k)$ — ровно набор искомых коэффициентов.
-
Проверь подстановкой: посчитай $\lambda_1 v_1 + \dots + \lambda_k v_k$ и убедись, что вышел нулевой вектор. Эта проверка занимает полминуты и ловит почти любую арифметическую ошибку.
Шаг 5 не декоративный. Коэффициенты — это решение системы, а решение системы легко проверяется подстановкой в исходные данные, минуя все промежуточные преобразования. Если ошибка вкралась в сами преобразования, проверка по ступенчатому виду её не заметит, а подстановка в исходные векторы — заметит.
Разбор примеров
Пример 1. Два вектора в $\mathbb{R}^2$.
$$v_1 = (1, 3), \qquad v_2 = (2, 6).$$Матрица со столбцами-векторами:
$$A = \begin{pmatrix} 1 & 2 \\ 3 & 6 \end{pmatrix}.$$Преобразование $R_2 \to R_2 - 3R_1$ даёт строку $(0, 0)$. Ступенчатый вид имеет одну ненулевую строку, значит $r = 1 < 2 = k$. Система зависима.
Коэффициенты: RREF равен $\begin{pmatrix} 1 & 2 \\ 0 & 0 \end{pmatrix}$, пивот в первом столбце, свободная переменная — $\lambda_2$. Полагаем $\lambda_2 = 1$, тогда $\lambda_1 + 2 \cdot 1 = 0$, то есть $\lambda_1 = -2$. Комбинация:
$$-2v_1 + v_2 = (-2, -6) + (2, 6) = (0, 0). \quad \checkmark$$Знак можно поменять на противоположный, ответ от этого не портится: $2v_1 - v_2 = 0$ — та же самая связь.
Пример 2. Три вектора в $\mathbb{R}^3$.
$$v_1 = (1, 2, 3), \quad v_2 = (4, 5, 6), \quad v_3 = (7, 8, 9).$$Матрица со столбцами:
$$A = \begin{pmatrix} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{pmatrix}.$$Прямой ход: $R_2 \to R_2 - 2R_1$ даёт $(0, -3, -6)$; $R_3 \to R_3 - 3R_1$ даёт $(0, -6, -12)$; затем $R_3 \to R_3 - 2R_2$ даёт $(0, 0, 0)$. Ступенчатый вид:
$$\begin{pmatrix} 1 & 4 & 7 \\ 0 & -3 & -6 \\ 0 & 0 & 0 \end{pmatrix}, \qquad r = 2 < 3 = k.$$Система зависима. Матрица квадратная, поэтому можно было сразу посчитать определитель: он равен нулю (проверяется разложением или замечанием, что третий столбец равен удвоенному второму минус первый).
Коэффициенты: доводим до RREF. Делим вторую строку на $-3$: $(0, 1, 2)$; затем $R_1 \to R_1 - 4R_2$ даёт $(1, 0, -1)$. Получаем
$$\begin{pmatrix} 1 & 0 & -1 \\ 0 & 1 & 2 \\ 0 & 0 & 0 \end{pmatrix}.$$Пивоты в столбцах 1 и 2, свободная переменная $\lambda_3$. При $\lambda_3 = 1$: из второй строки $\lambda_2 + 2 = 0$, значит $\lambda_2 = -2$; из первой $\lambda_1 - 1 = 0$, значит $\lambda_1 = 1$. Комбинация:
$$v_1 - 2v_2 + v_3 = (1, 2, 3) - (8, 10, 12) + (7, 8, 9) = (0, 0, 0). \quad \checkmark$$Пример 3. Три вектора в $\mathbb{R}^4$ — независимые.
$$v_1 = (1, 0, 2, 1), \quad v_2 = (0, 1, 1, 3), \quad v_3 = (2, 1, 0, 1).$$Пишем строками (нужен только ответ «зависима или нет»):
$$\begin{pmatrix} 1 & 0 & 2 & 1 \\ 0 & 1 & 1 & 3 \\ 2 & 1 & 0 & 1 \end{pmatrix} \xrightarrow{R_3 \to R_3 - 2R_1} \begin{pmatrix} 1 & 0 & 2 & 1 \\ 0 & 1 & 1 & 3 \\ 0 & 1 & -4 & -1 \end{pmatrix} \xrightarrow{R_3 \to R_3 - R_2} \begin{pmatrix} 1 & 0 & 2 & 1 \\ 0 & 1 & 1 & 3 \\ 0 & 0 & -5 & -4 \end{pmatrix}.$$Три ненулевые строки, $r = 3 = k$. Система независима.
Обрати внимание: векторов три, а пространство четырёхмерное — места хватает, никакого автоматического ответа тут нет, приходится считать.
Пример 4. Четыре вектора в $\mathbb{R}^3$.
$$v_1 = (1, 2, 1), \quad v_2 = (2, -1, 3), \quad v_3 = (0, 1, 1), \quad v_4 = (3, 2, 5).$$Четыре вектора в трёхмерном пространстве. Ранг матрицы $3 \times 4$ не превосходит трёх (числа строк), а векторов четыре, значит $r \le 3 < 4 = k$ — система зависима без всяких вычислений. Это частный случай теоремы, которую мы отдельно докажем в следующем разделе.
Но коэффициенты всё-таки посчитаем. Матрица со столбцами-векторами:
$$A = \begin{pmatrix} 1 & 2 & 0 & 3 \\ 2 & -1 & 1 & 2 \\ 1 & 3 & 1 & 5 \end{pmatrix}.$$Прямой ход: $R_2 \to R_2 - 2R_1$ даёт $(0, -5, 1, -4)$; $R_3 \to R_3 - R_1$ даёт $(0, 1, 1, 2)$. Поменяем местами вторую и третью строки, чтобы работать с единицей:
$$\begin{pmatrix} 1 & 2 & 0 & 3 \\ 0 & 1 & 1 & 2 \\ 0 & -5 & 1 & -4 \end{pmatrix} \xrightarrow{R_3 \to R_3 + 5R_2} \begin{pmatrix} 1 & 2 & 0 & 3 \\ 0 & 1 & 1 & 2 \\ 0 & 0 & 6 & 6 \end{pmatrix}.$$Ранг равен 3, свободная переменная одна — $\lambda_4$. Доводим до RREF: делим третью строку на 6, получаем $(0,0,1,1)$; $R_2 \to R_2 - R_3$ даёт $(0,1,0,1)$; $R_1 \to R_1 - 2R_2$ даёт $(1,0,0,1)$. Итог:
$$\begin{pmatrix} 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 \end{pmatrix}.$$При $\lambda_4 = 1$ получаем $\lambda_1 = \lambda_2 = \lambda_3 = -1$, то есть комбинация $-v_1 - v_2 - v_3 + v_4 = 0$, или в более приятном виде
$$v_1 + v_2 + v_3 = v_4.$$Проверка: $(1,2,1) + (2,-1,3) + (0,1,1) = (3, 2, 5) = v_4$. $\checkmark$
Кстати, первые три вектора между собой независимы: определитель матрицы из них равен $-6 \ne 0$. То есть «лишний» здесь ровно один — четвёртый, и он честно выражается через первые три.
Пример 5. Три вектора в $\mathbb{R}^4$ — зависимые.
$$v_1 = (1, 1, 0, 2), \quad v_2 = (2, 0, 1, 1), \quad v_3 = (0, 2, -1, 3).$$Здесь $k = 3$, $n = 4$, автоматического ответа нет. Пишем строками:
$$\begin{pmatrix} 1 & 1 & 0 & 2 \\ 2 & 0 & 1 & 1 \\ 0 & 2 & -1 & 3 \end{pmatrix} \xrightarrow{R_2 \to R_2 - 2R_1} \begin{pmatrix} 1 & 1 & 0 & 2 \\ 0 & -2 & 1 & -3 \\ 0 & 2 & -1 & 3 \end{pmatrix} \xrightarrow{R_3 \to R_3 + R_2} \begin{pmatrix} 1 & 1 & 0 & 2 \\ 0 & -2 & 1 & -3 \\ 0 & 0 & 0 & 0 \end{pmatrix}.$$Ранг равен 2, векторов три: $2 < 3$, система зависима. Из последнего преобразования видно и соотношение: третья строка обнулилась после прибавления второй, а вторая была $v_2 - 2v_1$. Значит $v_3 + (v_2 - 2v_1) = 0$, то есть
$$2v_1 - v_2 - v_3 = 0.$$Проверка: $2(1,1,0,2) - (2,0,1,1) - (0,2,-1,3) = (2,2,0,4) - (2,0,1,1) - (0,2,-1,3) = (0,0,0,0)$. $\checkmark$
Почему это важно
Этот раздел — практическое ядро урока: после него любая задача на зависимость становится механической. Но у сведения к однородной системе есть и концептуальная ценность.
Во-первых, оно объясняет, почему ранг вообще оказался таким важным числом. В уроке 162 ранг вводился как «число ненулевых строк после приведения к ступенчатому виду» — определение честное, но техническое: непонятно, почему это число ничего не значит само по себе, но всюду всплывает. Теперь видно: ранг измеряет, сколько среди строк (или столбцов) действительно независимых. Это уже не про алгоритм приведения, а про сами данные.
Во-вторых, оно даёт единый язык для трёх разных на вид вопросов. «Есть ли у однородной системы нетривиальное решение?», «Зависимы ли столбцы матрицы?», «Обратима ли матрица?» — это один и тот же вопрос, заданный с трёх сторон. Для квадратной матрицы $A$ размера $n \times n$ равносильны:
-
$\det A \ne 0$;
-
$\operatorname{rank} A = n$;
-
$Ax = 0$ имеет только тривиальное решение;
-
столбцы $A$ линейно независимы;
-
строки $A$ линейно независимы;
-
$A$ обратима.
Это тот самый список эквивалентностей, который в англоязычных учебниках называют invertible matrix theorem, и большинство пунктов в нём ты уже прошёл поодиночке. Сегодня добавились два пункта про независимость, и картина замкнулась.
В-третьих, чисто практически: сведение к системе снимает вопрос «а вдруг я не заметил хитрую зависимость». Ранг не зависит от твоей наблюдательности. Если соотношение между векторами есть, оно вылезет в ступенчатом виде обязательно, даже если на глаз векторы выглядят совершенно непохожими.
Частные случаи и быстрые критерии
Общий алгоритм работает всегда, но в четырёх типовых ситуациях ответ получается быстрее — иногда вообще без вычислений. Эти четыре случая покрывают процентов восемьдесят задач, которые тебе встретятся.
Случай 1: ровно $n$ векторов в $\mathbb{R}^n$ — считаем определитель
Если векторов столько же, сколько координат, матрица получается квадратной, и включается вся техника определителей из уроков 158–160.
Критерий: Система из $n$ векторов пространства $\mathbb{R}^n$ линейно зависима тогда и только тогда, когда определитель матрицы, составленной из этих векторов (по строкам или по столбцам — безразлично), равен нулю.
Соответственно, система независима тогда и только тогда, когда $\det \ne 0$.
Обоснование в одну строку: для квадратной матрицы $n \times n$ условие $\operatorname{rank} A = n$ равносильно $\det A \ne 0$, а критерий предыдущего раздела как раз сравнивает ранг с числом векторов, то есть с $n$. Транспонирование не меняет определителя, поэтому запись по строкам и по столбцам даёт одно и то же число.
Практически это самый быстрый тест для размерностей 2 и 3. Определитель $2\times2$ считается за пять секунд, $3\times3$ — за двадцать. Никакого приведения к ступенчатому виду.
Есть, впрочем, важная оговорка. Определитель отвечает только на вопрос «зависима или нет». Он не говорит, ни какие именно коэффициенты дают ноль, ни сколько в наборе независимых векторов, если он зависим. Определитель, равный нулю, одинаково выглядит и когда ранг $n-1$, и когда ранг $1$. Если нужна эта информация — придётся всё равно приводить матрицу к ступенчатому виду.
Случай 2: больше $n$ векторов в $\mathbb{R}^n$ — зависимы всегда
Теорема. Любая система из $k$ векторов пространства $\mathbb{R}^n$, где $k > n$, линейно зависима.
Доказательство. Составим матрицу $A$ размера $n \times k$, поставив векторы столбцами. Ранг матрицы не превосходит ни числа её строк, ни числа её столбцов — это свойство ранга из урока 162 (ступенчатый вид не может иметь больше ненулевых строк, чем всего строк в матрице). Значит,
$$\operatorname{rank} A \le n < k.$$По критерию из предыдущего раздела система зависима. Доказательство закончено.
Стоит проговорить, почему это утверждение содержательное, а не просто арифметическое. Оно говорит: в $n$-мерном пространстве больше $n$ «по-настоящему разных направлений» не бывает. Сколько бы векторов ты ни набрал в $\mathbb{R}^3$ — десять, тысячу, — среди них не найдётся четырёх независимых. Пространство не резиновое: его «ёмкость» равна ровно $n$, и это число нельзя превысить никакой изобретательностью в подборе векторов.
Обратное неверно и это важно: из $k \le n$ не следует независимость. Три вектора в $\mathbb{R}^3$ могут быть как независимыми, так и зависимыми — тут надо считать. Теорема даёт гарантию только в одну сторону.
Практический вывод: прежде чем считать, посчитай. Сравни количество векторов с размерностью пространства. Если векторов больше — ответ «зависима» пишется мгновенно, и это полный, законченный ответ.
Случай 3: два вектора — коллинеарность
Критерий: Два вектора линейно зависимы тогда и только тогда, когда они пропорциональны (коллинеарны), то есть один получается умножением другого на число. В частности, любая пара, где хотя бы один вектор нулевой, зависима.
Доказательство. Пусть $\lambda_1 v_1 + \lambda_2 v_2 = 0$ нетривиально, скажем $\lambda_1 \ne 0$. Тогда $v_1 = -\tfrac{\lambda_2}{\lambda_1} v_2$, то есть $v_1$ пропорционален $v_2$. Обратно, если $v_1 = c v_2$, то $1 \cdot v_1 - c \cdot v_2 = 0$ — нетривиальная комбинация (коэффициент при $v_1$ равен единице). Доказано.
Проверять пропорциональность удобнее всего сравнением отношений одноимённых координат. Для векторов $v_1 = (a_1, a_2, a_3)$ и $v_2 = (b_1, b_2, b_3)$ с ненулевыми $b_i$ условие выглядит как
$$\frac{a_1}{b_1} = \frac{a_2}{b_2} = \frac{a_3}{b_3}.$$Аккуратность нужна с нулями: если какая-то координата одного вектора равна нулю, у пропорционального ему вектора та же координата тоже обязана быть нулём. Скажем, $(1, 0, 3)$ и $(2, 5, 6)$ не пропорциональны именно из-за второй координаты, хотя первая и третья дают одинаковое отношение $1/2$. Безопаснее проверять «крест-накрест»: $a_i b_j = a_j b_i$ для всех пар индексов — эта форма не требует деления и с нулями работает корректно.
Геометрически: два вектора зависимы, когда лежат на одной прямой через начало координат.
Случай 4: три вектора в $\mathbb{R}^3$ — компланарность и смешанное произведение
Здесь подключается геометрия из уроков 151–155.
Критерий: Три вектора $a, b, c$ в трёхмерном пространстве линейно зависимы $\iff$ их смешанное произведение равно нулю $\iff$ они компланарны (лежат в одной плоскости, проходящей через начало координат).
Все три условия — одно и то же, записанное на разных языках. Связь такая: смешанное произведение $(a, b, c) = (a \times b) \cdot c$ равно определителю матрицы, составленной из координат этих векторов; определитель равен нулю тогда и только тогда, когда векторы зависимы (случай 1 при $n = 3$). А геометрический смысл смешанного произведения — объём параллелепипеда, построенного на трёх векторах; нулевой объём означает, что параллелепипед «сплющился» — все три вектора попали в одну плоскость.
Это красивый мост: чисто алгебраическое условие «существует нетривиальная нулевая комбинация» оказывается в трёхмерном случае наглядной геометрической картинкой. Для двух векторов такой картинкой была прямая (коллинеарность), для трёх — плоскость (компланарность). В размерностях выше третьей наглядность заканчивается, а алгебра работает по-прежнему.
Разбор примеров
Пример 1. Три вектора в $\mathbb{R}^3$ — определитель.
$$v_1 = (2, 1, 3), \quad v_2 = (1, -1, 2), \quad v_3 = (3, 4, 1).$$Векторов ровно три, пространство трёхмерное — считаем определитель, записав векторы строками:
$$\det \begin{pmatrix} 2 & 1 & 3 \\ 1 & -1 & 2 \\ 3 & 4 & 1 \end{pmatrix} = 2\begin{vmatrix} -1 & 2 \\ 4 & 1 \end{vmatrix} - 1\begin{vmatrix} 1 & 2 \\ 3 & 1 \end{vmatrix} + 3\begin{vmatrix} 1 & -1 \\ 3 & 4 \end{vmatrix}$$$$= 2(-1 - 8) - 1(1 - 6) + 3(4 + 3) = -18 + 5 + 21 = 8 \ne 0.$$Система независима. Векторы не компланарны, объём построенного на них параллелепипеда равен $|8| = 8$.
Пример 2. Три вектора в $\mathbb{R}^3$ — смешанное произведение равно нулю.
$$a = (1, 2, -1), \quad b = (2, -1, 3), \quad c = (4, 3, 1).$$$$\det \begin{pmatrix} 1 & 2 & -1 \\ 2 & -1 & 3 \\ 4 & 3 & 1 \end{pmatrix} = 1(-1 - 9) - 2(2 - 12) + (-1)(6 + 4) = -10 + 20 - 10 = 0.$$Система зависима, векторы компланарны. Найдём соотношение: $2a + b = (2,4,-2) + (2,-1,3) = (4, 3, 1) = c$, то есть
$$2a + b - c = 0.$$Все три вектора лежат в одной плоскости через начало координат — той самой, которую натягивают $a$ и $b$ (они между собой независимы, так как непропорциональны).
Пример 3. Два вектора — коллинеарность.
$$v_1 = (3, -6, 9), \qquad v_2 = (-2, 4, -6).$$Отношения координат: $\tfrac{3}{-2}$, $\tfrac{-6}{4} = -\tfrac{3}{2}$, $\tfrac{9}{-6} = -\tfrac{3}{2}$. Все три равны $-\tfrac{3}{2}$, значит $v_1 = -\tfrac{3}{2}v_2$, векторы коллинеарны и система зависима. Чтобы получить целые коэффициенты, домножим на 2:
$$2v_1 + 3v_2 = (6, -12, 18) + (-6, 12, -18) = (0, 0, 0). \quad \checkmark$$Пример 4. Два вектора — не коллинеарны.
$$u_1 = (1, -2), \qquad u_2 = (4, 3).$$Отношения $\tfrac{1}{4}$ и $\tfrac{-2}{3}$ различны, векторы не пропорциональны. Проверка через определитель: $1 \cdot 3 - (-2) \cdot 4 = 3 + 8 = 11 \ne 0$. Система независима.
Пример 5. Много векторов в маленьком пространстве.
$$v_1 = (5, 1), \; v_2 = (-3, 7), \; v_3 = (0, 4), \; v_4 = (2, 2), \; v_5 = (9, -1).$$Пять векторов в $\mathbb{R}^2$. По теореме случая 2: $k = 5 > 2 = n$, значит система зависима. Ни одного арифметического действия не потребовалось.
Более того, любые три из этих пяти тоже зависимы ($3 > 2$), и любые четыре тоже. Независимыми в $\mathbb{R}^2$ могут быть максимум два вектора, и то не любые — например, $v_1$ и $v_2$ независимы ($5 \cdot 7 - 1 \cdot (-3) = 38 \ne 0$), а вот $v_1$ и $10v_1$ были бы зависимы.
Почему это важно
Частные критерии экономят не только время, но и ошибки. Определитель $3 \times 3$ считается одним выражением, а приведение к ступенчатому виду — это пять-шесть преобразований, в каждом из которых можно ошибиться в знаке. На экзамене и в расчёте «в столбик» это разница между надёжным и ненадёжным решением.
Теорема про $k > n$ важнее остальных, и не только как способ сэкономить. Она — первое количественное утверждение о том, что размерность пространства ограничивает сложность того, что в нём можно построить. Из неё в следующем уроке вырастет корректность понятия размерности: если бы можно было напихать в $\mathbb{R}^3$ четыре независимых вектора, «размерность 3» была бы пустым словом. Здесь же лежит объяснение, почему матрица признаков с числом признаков больше числа наблюдений заведомо имеет зависимые столбцы — на это мы отдельно посмотрим в разделе про ML.
И ещё один практический момент. Критерий через определитель работает только при $k = n$. Попытка применить его при $k \ne n$ — самая частая ошибка в этой теме: определитель неквадратной матрицы просто не определён. Если векторов не столько же, сколько координат, единственный путь — ранг.
Свойства систем векторов
Дальше идёт набор утверждений, которые в учебниках обычно печатают списком без объяснений, и от этого они кажутся набором разрозненных фактов, которые надо зубрить. На самом деле каждое доказывается в две-три строки прямо из определения, и после разбора запоминать их отдельно не нужно — они восстанавливаются на месте.
Свойство 1: система с нулевым вектором всегда зависима
Утверждение. Если среди векторов $v_1, \dots, v_k$ есть нулевой, система линейно зависима.
Доказательство. Пусть $v_m = 0$. Возьмём коэффициенты: единицу при $v_m$ и нули при всех остальных. Комбинация равна
$$0 \cdot v_1 + \dots + 0 \cdot v_{m-1} + 1 \cdot 0 + 0 \cdot v_{m+1} + \dots + 0 \cdot v_k = 0.$$Она нетривиальна, потому что коэффициент при $v_m$ равен $1 \ne 0$. Значит, система зависима. Доказано.
Заметь, что остальные векторы в рассуждении вообще не участвовали — они могут быть какими угодно, хоть идеально независимыми между собой. Один нулевой вектор портит всю систему. Интуитивно это понятно: нулевой вектор не задаёт никакого направления, он не может ничего добавить к оболочке, и потому автоматически лишний.
Свойство 2: система с двумя одинаковыми векторами зависима
Утверждение. Если среди $v_1, \dots, v_k$ два вектора равны, система линейно зависима. Более общо: если два вектора пропорциональны, система зависима.
Доказательство. Пусть $v_p = v_q$ при $p \ne q$. Возьмём коэффициент $1$ при $v_p$, коэффициент $-1$ при $v_q$, нули при всех остальных:
$$1 \cdot v_p + (-1) \cdot v_q = v_p - v_q = 0.$$Комбинация нетривиальна. Для пропорциональных векторов $v_q = c\,v_p$ берём коэффициенты $c$ при $v_p$ и $-1$ при $v_q$: получаем $c\,v_p - c\,v_p = 0$, и коэффициент $-1$ снова ненулевой. Доказано.
Это самая заметная глазом причина зависимости, и проверять её стоит первой: прежде чем запускать метод Гаусса, посмотри, нет ли в наборе повторов и кратных.
Свойство 3: подсистема независимой системы независима
Утверждение. Если система $v_1, \dots, v_k$ линейно независима, то любая её подсистема (любой поднабор этих векторов) тоже линейно независима.
Доказательство от противного. Пусть подсистема — для определённости $v_1, \dots, v_s$ при $s < k$ — зависима. Тогда существуют коэффициенты $\lambda_1, \dots, \lambda_s$, не все нулевые, с
$$\lambda_1 v_1 + \dots + \lambda_s v_s = 0.$$Достроим эту комбинацию до комбинации всей системы, приписав нулевые коэффициенты к оставшимся векторам:
$$\lambda_1 v_1 + \dots + \lambda_s v_s + 0 \cdot v_{s+1} + \dots + 0 \cdot v_k = 0 + 0 = 0.$$Полученная комбинация всех $k$ векторов равна нулю и нетривиальна (среди $\lambda_1, \dots, \lambda_s$ есть ненулевой). Значит, вся система зависима — противоречие с условием. Доказано.
Порядок векторов в системе роли не играет, поэтому «для определённости первые $s$» не ограничивает общности: перестановка векторов не меняет ни зависимости, ни независимости (в комбинации слагаемые просто переставляются местами).
Свойство 4: надсистема зависимой системы зависима
Утверждение. Если система $v_1, \dots, v_k$ линейно зависима, то любая система, содержащая её целиком, тоже зависима — сколько бы новых векторов к ней ни добавили.
Доказательство. Это то же рассуждение, прочитанное в другую сторону. Пусть $\lambda_1 v_1 + \dots + \lambda_k v_k = 0$ нетривиально. Добавим новые векторы $u_1, \dots, u_t$ с нулевыми коэффициентами:
$$\lambda_1 v_1 + \dots + \lambda_k v_k + 0 \cdot u_1 + \dots + 0 \cdot u_t = 0.$$Комбинация расширенной системы равна нулю и нетривиальна (нетривиальность обеспечена старыми коэффициентами). Доказано.
Свойства 3 и 4 — логически одно и то же утверждение, взятое с двух сторон (контрапозиция). Стоит держать в голове удобную формулировку: независимость — свойство наследуемое вниз, зависимость — вверх. Убираешь векторы — независимость сохраняется; добавляешь — зависимость сохраняется.
Что при этом не сохраняется, тоже полезно знать. Убрав векторы из зависимой системы, можно получить независимую (пример: $(1,0), (2,0), (0,1)$ зависима, а подсистема $(1,0), (0,1)$ независима). Добавив вектор к независимой системе, можно получить зависимую, а можно и не получить — как повезёт. То есть в этих двух направлениях никакой гарантии нет.
Свойство 5: один вектор
Утверждение. Система из одного вектора $v$ независима тогда и только тогда, когда $v \ne 0$.
Доказательство. Если $v \ne 0$ и $\lambda v = 0$, то $\lambda = 0$: в противном случае, умножив обе части на $\lambda^{-1}$, получили бы $v = 0$. Значит, только тривиальная комбинация даёт ноль, система независима. Если же $v = 0$, комбинация $1 \cdot v = 0$ нетривиальна, система зависима. Доказано.
Свойство 6: независимость и подсистемы «в обе стороны»
Соберём из свойств 3 и 4 удобное следствие, которым мы будем пользоваться в разделе про базисный минор.
Следствие. Если в системе есть зависимая подсистема, вся система зависима. Если система независима, то в ней нет ни одной зависимой подсистемы — в частности, нет нулевых векторов, нет повторов и нет пропорциональных пар.
Это готовый набор быстрых проверок «на глаз». Увидел в наборе нулевой вектор — можешь не считать, зависима. Увидел два одинаковых столбца — зависима. Увидел столбец, кратный другому, — зависима. Метод Гаусса, конечно, всё это тоже поймает, но зачем тратить пять минут на то, что видно за пять секунд.
Разбор примеров
Пример 1. Быстрый ответ по свойству 1.
$$v_1 = (7, -2, 5), \quad v_2 = (0, 0, 0), \quad v_3 = (1, 1, 1), \quad v_4 = (3, 0, -4).$$Второй вектор нулевой — система зависима, обнуляющая комбинация $0\cdot v_1 + 1 \cdot v_2 + 0 \cdot v_3 + 0 \cdot v_4 = 0$. Считать определители и ранги не нужно.
Обрати внимание, что подсистема $v_1, v_3, v_4$ при этом может оказаться независимой, и это не противоречит ничему: зависимость всей системы обеспечена нулевым вектором.
Пример 2. Быстрый ответ по свойству 2.
$$u_1 = (2, 5, -1), \quad u_2 = (4, 1, 0), \quad u_3 = (-6, -15, 3).$$Третий вектор равен $-3u_1$: $(-6, -15, 3) = -3 \cdot (2, 5, -1)$. Система зависима, комбинация $3u_1 + 0 \cdot u_2 + u_3 = 0$. Проверка: $(6, 15, -3) + (-6, -15, 3) = (0,0,0)$. $\checkmark$
Пример 3. Свойство 3 в работе.
Пусть известно, что система $a, b, c, d$ в $\mathbb{R}^5$ независима. Что можно сказать про систему $b, d$?
По свойству 3 она независима — как подсистема независимой. В частности, $b$ и $d$ не пропорциональны и ни один из них не нулевой. Никаких вычислений не требуется, вывод чисто логический.
Пример 4. Свойство 4 в работе.
Пусть в $\mathbb{R}^4$ известно, что $p = (1, 2, 3, 4)$, $q = (2, 4, 6, 8)$ зависимы (что видно сразу: $q = 2p$). Тогда любая система, содержащая оба этих вектора, зависима — например, система $p, q, r, s$ при любых $r, s$. Обнуляющая комбинация переносится целиком: $2p - q + 0 \cdot r + 0 \cdot s = 0$.
Пример 5. Комбинация свойств.
$$w_1 = (1, 0, 0), \quad w_2 = (0, 1, 0), \quad w_3 = (0, 0, 1), \quad w_4 = (5, -3, 2).$$Первые три вектора независимы (единичная матрица, определитель равен 1). Но вся система из четырёх векторов в $\mathbb{R}^3$ зависима по теореме про $k > n$. Соотношение находится глазами: $w_4 = 5w_1 - 3w_2 + 2w_3$, то есть
$$5w_1 - 3w_2 + 2w_3 - w_4 = 0.$$Это иллюстрация к тому, что независимость не наследуется вверх: независимая тройка, дополненная четвёртым вектором, стала зависимой четвёркой — и в трёхмерном пространстве иначе и быть не могло.
Почему это важно
Эти шесть свойств — рабочий фильтр, через который стоит пропускать любую задачу до начала вычислений. Половина заданий на зависимость решается ими за секунды, без единого преобразования.
Но есть и более глубокий смысл. Свойства 3 и 4 говорят, что зависимость/независимость ведёт себя относительно включения систем предсказуемо и монотонно. Из этого следует, что в любом наборе векторов есть корректно определённое «максимальное независимое подмножество»: начинаем с пустого набора, добавляем векторы по одному, каждый раз проверяя, не ломает ли добавление независимость. Свойство 3 гарантирует, что уже набранное не испортится, свойство 4 — что после первой поломки дальше уже не починится.
Именно так и определяется максимальное число линейно независимых векторов в наборе — величина, которую мы в следующем разделе отождествим с рангом. И именно на этом отождествлении держится вся дальнейшая теория.
Геометрический смысл: кто добавляет направление, а кто лишний
Интуиция: что делает вектор с оболочкой
Вернёмся к линейной оболочке из прошлого урока. Возьми набор векторов и посмотри на $\operatorname{span}$ — множество всего, что из них можно собрать. Теперь добавь к набору ещё один вектор $w$ и снова посмотри на оболочку. Возможны ровно два исхода:
-
оболочка выросла — появились векторы, которых раньше собрать было нельзя;
-
оболочка осталась той же — $w$ ничего нового не принёс.
Второй случай происходит ровно тогда, когда $w$ и так уже лежал в оболочке старого набора, то есть выражался через старые векторы. Тогда любую комбинацию с участием $w$ можно переписать без него, подставив вместо $w$ его выражение.
Отсюда и содержательное прочтение независимости: независимая система — это набор, в котором каждый вектор добавляет новое направление. Зависимая — набор, в котором кто-то лишний: его можно выбросить, ничего не потеряв.
Аккуратная формулировка звучит так.
Утверждение (о выбрасывании лишнего). Пусть вектор $v_k$ выражается через остальные векторы системы:
$$v_k = \mu_1 v_1 + \dots + \mu_{k-1}v_{k-1}.$$Тогда
$$\operatorname{span}(v_1, \dots, v_{k-1}, v_k) = \operatorname{span}(v_1, \dots, v_{k-1}).$$
Доказательство. Нужно проверить два включения.
Включение «$\supseteq$» верно по построению: всякая комбинация $v_1, \dots, v_{k-1}$ является и комбинацией всего набора — достаточно приписать нулевой коэффициент при $v_k$.
Включение «$\subseteq$». Возьмём произвольный элемент левой оболочки:
$$x = \alpha_1 v_1 + \dots + \alpha_{k-1}v_{k-1} + \alpha_k v_k.$$Подставим выражение для $v_k$:
$$x = \alpha_1 v_1 + \dots + \alpha_{k-1}v_{k-1} + \alpha_k(\mu_1 v_1 + \dots + \mu_{k-1}v_{k-1})$$$$= (\alpha_1 + \alpha_k\mu_1)v_1 + \dots + (\alpha_{k-1} + \alpha_k\mu_{k-1})v_{k-1}.$$Получилась линейная комбинация только первых $k-1$ векторов, то есть $x$ лежит в правой оболочке. Оба включения проверены, множества совпадают. Доказано.
Обрати внимание на связь с ловушкой из второго раздела. Выбрасывать можно не любой вектор зависимой системы, а только тот, который действительно выражается через остальные. В примере $v_1 = (1,0)$, $v_2 = (2,0)$, $v_3 = (0,1)$ выбросить можно $v_1$ или $v_2$ — оболочка (вся плоскость) не изменится. А вот выбрасывание $v_3$ схлопнет оболочку до оси абсцисс: проверим по утверждению — оно неприменимо, потому что $v_3$ через остальные не выражается, и никакой гарантии сохранения оболочки нет.
Разбор примеров
Пример 1. Лишний вектор в $\mathbb{R}^3$.
$$v_1 = (1, 1, 2), \quad v_2 = (2, 0, 1), \quad v_3 = (1, 3, 5).$$Проверим, выражается ли $v_3$: ищем $\alpha, \beta$ с $\alpha v_1 + \beta v_2 = v_3$. По второй координате $\alpha \cdot 1 + \beta \cdot 0 = 3$, значит $\alpha = 3$. По первой: $3 + 2\beta = 1$, значит $\beta = -1$. Проверяем третью: $3 \cdot 2 + (-1) \cdot 1 = 5$. Сходится. Значит
$$v_3 = 3v_1 - v_2,$$и по утверждению $\operatorname{span}(v_1, v_2, v_3) = \operatorname{span}(v_1, v_2)$. Три вектора натягивают ту же самую плоскость, что и два. Третий не даёт ничего.
Само собой, система зависима: $3v_1 - v_2 - v_3 = 0$.
Пример 2. Ничего не лишнее.
$$u_1 = (1, 0, 0), \quad u_2 = (1, 1, 0), \quad u_3 = (1, 1, 1).$$Определитель матрицы из этих векторов равен 1 (треугольная матрица, на диагонали единицы), система независима. Значит, ни один вектор не выражается через остальные, и выбрасывание любого из них уменьшает оболочку: тройка натягивает всё $\mathbb{R}^3$, а любая пара — только плоскость.
Пример 3. Оболочка не растёт при добавлении.
Пусть $\operatorname{span}((1,2), (3,-1))$ — это всё $\mathbb{R}^2$ (определитель $1\cdot(-1) - 2\cdot 3 = -7 \ne 0$). Добавим любой третий вектор плоскости, скажем $(4, 4)$. Оболочка не изменится — расти уже некуда, она и так совпадает со всем пространством. Соответственно, система из трёх векторов на плоскости зависима, что мы и знаем из теоремы про $k > n$.
Почему это важно
Геометрическое прочтение превращает формальное определение в рабочую интуицию, которую можно применять без вычислений. Вопрос «зависимы ли эти векторы?» переводится в вопрос «есть ли среди них лишний?» — а лишний часто виден на глаз.
Но главное — здесь спрятан мост к следующей теме. Раз лишний вектор можно выбросить, не меняя оболочки, напрашивается процедура: выбрасывать лишних до тех пор, пока не останется система, в которой лишних больше нет, то есть линейно независимая система, через которую по-прежнему выражается всё исходное множество. Такая система называется базисом, и весь следующий урок посвящён именно ей: сколько в ней векторов, единственна ли она, как через неё считать координаты. Здесь мы только фиксируем, что процедура «выбрасывай лишних» корректна и обрывается — она уменьшает число векторов на каждом шаге, а число векторов конечно.
Ещё одно следствие того же утверждения: линейная оболочка — это характеристика не набора векторов, а «того, что они вместе накрывают». Два совершенно разных набора могут давать одну и ту же оболочку — например, $\{(1,0), (0,1)\}$ и $\{(1,1), (1,-1)\}$ обе дают всю плоскость. Это ещё одна мысль, которая в следующем уроке разовьётся в разговор о том, что базис не единственен, а вот его размер — единственен.
Теорема о базисном миноре
Зачем эта теорема нужна
К этому моменту у нас есть два разных числа, связанных с матрицей, и совпадение их вовсе не напрашивается.
Первое — ранг, как он был определён в уроке 162: наибольший порядок ненулевого минора (эквивалентно: число ненулевых строк ступенчатого вида). Это определение про определители и про алгоритм приведения.
Второе — максимальное число линейно независимых строк матрицы. Это определение про векторы и про то, что мы изучаем сегодня.
И есть третье: максимальное число линейно независимых столбцов. Строк и столбцов у матрицы обычно разное количество, живут они в пространствах разной размерности ($\mathbb{R}^n$ для строк матрицы $m \times n$ и $\mathbb{R}^m$ для столбцов), и никакой очевидной причины этим двум числам совпадать нет.
Теорема о базисном миноре утверждает, что все три числа — одно и то же. Это неочевидный и сильный результат, и именно он делает слово «ранг» осмысленным: неважно, как ты его считаешь и с какой стороны смотришь на матрицу, число получится одно.
Формулировка
Определение. Пусть $\operatorname{rank} A = r > 0$. Базисным минором матрицы $A$ называется любой ненулевой минор порядка $r$. Строки и столбцы, на пересечении которых он стоит, называются базисными строками и базисными столбцами.
Базисный минор существует по определению ранга: ранг — наибольший порядок ненулевого минора, значит минор порядка $r$, отличный от нуля, есть, а все миноры порядка $r+1$ и выше равны нулю. Базисный минор, как правило, не единственный — их может быть много, и любой годится.
Теорема о базисном миноре. Пусть $\operatorname{rank} A = r$ и выбран некоторый базисный минор. Тогда:
базисные строки матрицы $A$ линейно независимы;
любая строка матрицы $A$ является линейной комбинацией базисных строк.
То же самое верно для столбцов.
Идея доказательства пункта 1 короткая. Если бы базисные строки были зависимы, то одна из них выражалась бы через остальные; вычитая из неё эту комбинацию элементарными преобразованиями, мы получили бы в базисном миноре нулевую строку, а определитель с нулевой строкой равен нулю — противоречие с тем, что минор базисный (то есть ненулевой).
Идея доказательства пункта 2 такая. Возьмём базисный минор порядка $r$ и любую строку, в него не входящую, и любой столбец, в него не входящий. Окаймим минор этой строкой и этим столбцом — получится минор порядка $r+1$. По определению ранга он равен нулю (все миноры порядка выше $r$ нулевые). Разложив этот определитель по добавленной строке и воспользовавшись тем, что коэффициент при «новом» элементе — это ненулевой базисный минор, получаем выражение элементов дополнительной строки через элементы базисных строк, причём с одними и теми же коэффициентами для всех столбцов. Это и означает, что дополнительная строка — линейная комбинация базисных.
Главное следствие
Следствие. Для любой матрицы
$$\operatorname{rank} A = \text{(макс. число линейно независимых строк)} = \text{(макс. число линейно независимых столбцов)}.$$
Почему это следует. По пункту 1 теоремы, $r$ базисных строк независимы, значит независимых строк не меньше $r$. По пункту 2 всякая строка выражается через базисные, поэтому любая система из более чем $r$ строк зависима: каждая из них лежит в оболочке $r$ векторов, а в оболочке $r$ векторов не может быть больше $r$ независимых (это та же теорема про «$k > n$», применённая к оболочке). Значит, независимых строк не больше $r$. Итого ровно $r$. Дословно то же рассуждение для столбцов даёт тот же ответ $r$, потому что ранг матрицы и ранг транспонированной матрицы совпадают.
Вот теперь понятно, зачем теорема нужна. Она склеивает вычислительное понятие (ранг через миноры или через метод Гаусса) с содержательным (сколько среди строк по-настоящему разных). Практический смысл прямой: чтобы найти максимальное число линейно независимых векторов в наборе, достаточно посчитать ранг матрицы, составленной из них — а это ты умеешь делать с урока 162.
И ещё: теорема даёт не только число, но и конструкцию. Базисные строки — это готовый пример максимальной независимой подсистемы, а пункт 2 говорит, как через них выразить всё остальное. Другими словами, теорема отвечает и на вопрос «сколько», и на вопрос «какие именно».
Полный разбор на примере
Возьмём матрицу
$$A = \begin{pmatrix} 2 & -1 & 3 & 1 \\ 4 & -2 & 7 & 3 \\ 6 & -3 & 10 & 4 \end{pmatrix}.$$Шаг 1. Находим ранг.
$$R_2 \to R_2 - 2R_1: \quad (0, 0, 1, 1), \qquad R_3 \to R_3 - 3R_1: \quad (0, 0, 1, 1),$$$$R_3 \to R_3 - R_2: \quad (0, 0, 0, 0).$$
Ступенчатый вид:
$$\begin{pmatrix} 2 & -1 & 3 & 1 \\ 0 & 0 & 1 & 1 \\ 0 & 0 & 0 & 0 \end{pmatrix}.$$Две ненулевые строки, значит $\operatorname{rank} A = 2$.
Шаг 2. Ищем базисный минор порядка 2.
Нужен ненулевой минор второго порядка. Первый попавшийся — на пересечении строк 1, 2 и столбцов 1, 2:
$$\begin{vmatrix} 2 & -1 \\ 4 & -2 \end{vmatrix} = -4 + 4 = 0.$$Не подошёл. Возьмём строки 1, 2 и столбцы 1, 3:
$$M = \begin{vmatrix} 2 & 3 \\ 4 & 7 \end{vmatrix} = 14 - 12 = 2 \ne 0.$$Годится. Базисный минор — этот; базисные строки — первая и вторая, базисные столбцы — первый и третий.
Шаг 3. Проверяем пункт 1: базисные строки независимы.
Строки $(2, -1, 3, 1)$ и $(4, -2, 7, 3)$. Они не пропорциональны: отношение первых координат $4/2 = 2$, но $7 \ne 2 \cdot 3 = 6$. Две непропорциональные строки независимы (случай 3 из предыдущего раздела). $\checkmark$
Шаг 4. Проверяем пункт 2: третья строка выражается через базисные.
Ищем $\alpha, \beta$ с $\alpha R_1 + \beta R_2 = R_3$, то есть
$$\alpha(2, -1, 3, 1) + \beta(4, -2, 7, 3) = (6, -3, 10, 4).$$По первой координате: $2\alpha + 4\beta = 6$. По третьей: $3\alpha + 7\beta = 10$. Решаем: из первого $\alpha = 3 - 2\beta$; подставляем: $9 - 6\beta + 7\beta = 10$, откуда $\beta = 1$ и $\alpha = 1$. Проверяем остальные координаты: вторая $-1 - 2 = -3$ $\checkmark$, четвёртая $1 + 3 = 4$ $\checkmark$. Итого
$$R_3 = R_1 + R_2.$$Это, кстати, было видно и глазами: $(2,-1,3,1) + (4,-2,7,3) = (6,-3,10,4)$.
Шаг 5. То же для столбцов.
Базисные столбцы — первый и третий:
$$c_1 = \begin{pmatrix} 2 \\ 4 \\ 6 \end{pmatrix}, \qquad c_3 = \begin{pmatrix} 3 \\ 7 \\ 10 \end{pmatrix}.$$Выразим через них небазисные. Столбец $c_2 = (-1, -2, -3)^T$ пропорционален $c_1$:
$$c_2 = -\tfrac{1}{2}c_1.$$Столбец $c_4 = (1, 3, 4)^T$. Ищем $\alpha c_1 + \beta c_3 = c_4$: по первой строке $2\alpha + 3\beta = 1$, по второй $4\alpha + 7\beta = 3$. Из первого $\alpha = (1 - 3\beta)/2$; подставляем: $2 - 6\beta + 7\beta = 3$, значит $\beta = 1$, $\alpha = -1$. Проверка по третьей строке: $-6 + 10 = 4$ $\checkmark$. Итого
$$c_4 = -c_1 + c_3.$$Шаг 6. Читаем ответ.
Максимальное число линейно независимых строк равно 2, максимальное число линейно независимых столбцов тоже равно 2, и оба совпадают с рангом. Из четырёх столбцов «работают» два, остальные два — их комбинации; из трёх строк работают две, третья — сумма первых двух.
Заметим ещё, что выбор базисного минора не единственный: например, строки 2, 3 и столбцы 1, 3 дают минор $\begin{vmatrix} 4 & 7 \\ 6 & 10 \end{vmatrix} = 40 - 42 = -2 \ne 0$ — тоже базисный, и с ним получилась бы другая (но столь же законная) пара базисных строк. Ответ на вопрос «сколько» от выбора не зависит, ответ на вопрос «какие» — зависит.
Почему это важно
Три причины, по возрастанию значимости.
Первая, техническая. Теорема даёт готовый способ решать задачи вида «найти максимальное число линейно независимых векторов в наборе» и «выразить остальные векторы через выбранные». Оба вопроса сводятся к приведению матрицы к ступенчатому виду: ранг даёт число, позиции пивотов указывают, какие векторы брать, а RREF прямо выписывает коэффициенты выражений.
Вторая, логическая. Она замыкает круг определений. Ранг перестаёт быть «числом, которое получается из алгоритма» и становится инвариантом самой матрицы. Отсюда, в частности, следует, что элементарные преобразования не меняют ранга — что мы принимали как факт в уроке 162, а теперь можем понять почему: элементарные преобразования строк не меняют множества линейных комбинаций строк, значит не меняют и максимального числа независимых среди них.
Третья, содержательная. Равенство строчного и столбцового рангов — утверждение с настоящим смыслом. В прикладной постановке строки матрицы — это наблюдения, столбцы — признаки. Теорема говорит: «число независимых наблюдений» и «число независимых признаков» — одно и то же число. Если в таблице 1000 строк и 50 столбцов, а ранг равен 12, то не только среди признаков всего 12 по-настоящему разных, но и среди тысячи наблюдений линейно независимых ровно 12 — все остальные строки являются комбинациями этой дюжины. Эти два факта звучат совершенно по-разному, а оказываются одним.
Линейная зависимость в абстрактных пространствах
Интуиция: определение не менялось
Определение линейной зависимости нигде не использовало координаты. В нём есть только сложение векторов и умножение на число — то есть ровно те операции, которые есть в любом векторном пространстве. Поэтому многочлены, функции и матрицы проверяются на зависимость по тому же самому определению:
$$\lambda_1 f_1 + \lambda_2 f_2 + \dots + \lambda_k f_k = 0.$$Меняется только одно: что означает знак равенства справа. В $\mathbb{R}^n$ нулевой вектор — это набор нулей. В пространстве многочленов — это нулевой многочлен, то есть многочлен, все коэффициенты которого равны нулю (а не многочлен, обращающийся в ноль в какой-то одной точке). В пространстве функций — это тождественно нулевая функция, равная нулю при всех значениях аргумента. В пространстве матриц — нулевая матрица.
Из этого вытекают два рабочих приёма.
Приём 1: перейти к координатам. Если в пространстве есть естественный способ записать объект набором чисел, задача сводится к уже знакомой. Многочлен степени не выше $n$ задаётся набором из $n+1$ коэффициентов. Матрица $2\times2$ — набором из четырёх элементов. Записал объекты как строки чисел — считай ранг.
Приём 2: подставить конкретные точки. Для функций координат нет, зато есть значения. Если функциональное равенство $\lambda_1 f_1(x) + \dots + \lambda_k f_k(x) = 0$ выполняется при всех $x$, то оно выполняется и при любых конкретно выбранных $x_1, \dots, x_k$. Это даёт систему из $k$ числовых уравнений на $\lambda_i$. Если система имеет только нулевое решение — функции независимы.
Важно понимать логику приёма 2, чтобы им не злоупотреблять. Он работает только в одну сторону: если подстановка нескольких точек даёт только тривиальное решение, то функции независимы. Обратное неверно: неудачный выбор точек может дать вырожденную систему и у независимых функций — просто выбранных точек оказалось недостаточно, чтобы «различить» функции. Поэтому доказать зависимость подстановкой точек нельзя, для этого нужно предъявить тождество, верное при всех $x$.
Многочлены
Классический пример: $1, x, x^2$ независимы.
Пусть $\lambda_1 \cdot 1 + \lambda_2 \cdot x + \lambda_3 \cdot x^2 = 0$ как многочлен. Нулевой многочлен — это тот, у которого все коэффициенты нулевые. Слева коэффициент при $x^0$ равен $\lambda_1$, при $x^1$ — $\lambda_2$, при $x^2$ — $\lambda_3$. Приравнивая их к нулю, сразу получаем $\lambda_1 = \lambda_2 = \lambda_3 = 0$. Система независима.
Точно так же независима любая система $1, x, x^2, \dots, x^n$ — по той же причине, покоэффициентно. Это и делает степенные одночлены удобным «измерительным набором» в пространстве многочленов.
Можно посмотреть и через приём 1: координатные строки этих многочленов в порядке $(x^2, x^1, x^0)$ — это $(0,0,1)$, $(0,1,0)$, $(1,0,0)$. Матрица из них — единичная с точностью до перестановки строк, её определитель равен $\pm 1 \ne 0$, ранг равен 3, система независима.
Пример зависимой системы многочленов.
$$p_1 = x^2 + 2x + 1, \quad p_2 = x^2 - 1, \quad p_3 = x + 1.$$Считаем: $p_1 - p_2 = (x^2 + 2x + 1) - (x^2 - 1) = 2x + 2 = 2(x+1) = 2p_3$. Значит,
$$p_1 - p_2 - 2p_3 = 0,$$и это тождество, верное при всех $x$ (проверяется раскрытием скобок: $x^2 + 2x + 1 - x^2 + 1 - 2x - 2 = 0$). Комбинация нетривиальна, система зависима.
Через координаты (в порядке $x^2, x, 1$): $p_1 = (1, 2, 1)$, $p_2 = (1, 0, -1)$, $p_3 = (0, 1, 1)$. Определитель
$$\begin{vmatrix} 1 & 2 & 1 \\ 1 & 0 & -1 \\ 0 & 1 & 1 \end{vmatrix} = 1(0 + 1) - 2(1 - 0) + 1(1 - 0) = 1 - 2 + 1 = 0,$$что подтверждает зависимость.
Функции
Пример 1: $\sin x$ и $\cos x$ независимы.
Пусть $\alpha \sin x + \beta \cos x = 0$ при всех $x$. Подставим два удобных значения.
При $x = 0$: $\alpha \cdot 0 + \beta \cdot 1 = 0$, откуда $\beta = 0$.
При $x = \pi/2$: $\alpha \cdot 1 + \beta \cdot 0 = 0$, откуда $\alpha = 0$.
Оба коэффициента нулевые, функции линейно независимы.
Формально мы получили систему с матрицей $\begin{pmatrix} \sin 0 & \cos 0 \\ \sin \tfrac{\pi}{2} & \cos \tfrac{\pi}{2} \end{pmatrix} = \begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix}$, её определитель равен $-1 \ne 0$, значит только тривиальное решение.
Пример 2: $e^x$ и $e^{2x}$ независимы.
Пусть $\alpha e^x + \beta e^{2x} = 0$ при всех $x$. Подставим $x = 0$ и $x = \ln 2$ (при этом $e^{\ln 2} = 2$, $e^{2\ln 2} = 4$):
$$\begin{cases} \alpha + \beta = 0 \\ 2\alpha + 4\beta = 0 \end{cases}$$Определитель системы равен $1 \cdot 4 - 1 \cdot 2 = 2 \ne 0$, значит $\alpha = \beta = 0$. Функции независимы.
Есть и рассуждение без подстановки, чисто содержательное: разделим равенство $\alpha e^x + \beta e^{2x} = 0$ на $e^x$ (он нигде не равен нулю), получим $\alpha + \beta e^x = 0$ при всех $x$. Если $\beta \ne 0$, то $e^x = -\alpha/\beta$ — константа, чего не бывает: экспонента принимает разные значения. Значит $\beta = 0$, и тогда $\alpha = 0$.
Пример 3: зависимые функции.
$$f_1(x) = \sin^2 x, \quad f_2(x) = \cos^2 x, \quad f_3(x) = 1.$$Основное тригонометрическое тождество даёт $\sin^2 x + \cos^2 x = 1$ при всех $x$, то есть
$$f_1 + f_2 - f_3 = 0.$$Комбинация нетривиальна, система зависима. Здесь важно, что тождество верно при всех $x$ — именно это делает комбинацию нулевой функцией, а не просто функцией, обнуляющейся в отдельных точках.
Ещё пример из той же серии: $1$, $\sin^2 x$, $\cos 2x$. Формула двойного угла $\cos 2x = 1 - 2\sin^2 x$ даёт тождество $\cos 2x - 1 + 2\sin^2 x = 0$, то есть зависимость с коэффициентами $(-1, 2, 1)$.
Что здесь легко испортить. Функции $x$ и $x^2$ независимы, хотя в точке $x = 0$ и в точке $x = 1$ они принимают попарно одинаковые значения. Если подставить только эти две точки, получится система $\begin{cases}0 = 0 \\ \alpha + \beta = 0\end{cases}$ — она имеет ненулевые решения, и можно ошибочно заключить, что функции зависимы. Ошибка в том, что зависимость требует тождества при всех $x$, а мы проверили лишь две точки. Правильный вывод из неудачной подстановки — «эти точки не подошли», и надо взять другие: например, $x = 1$ и $x = 2$ дают систему с матрицей $\begin{pmatrix} 1 & 1 \\ 2 & 4\end{pmatrix}$, определитель равен $2 \ne 0$, откуда независимость.
Матрицы
Пространство матриц фиксированного размера — векторное пространство, и проверка идёт приёмом 1: выписываем элементы матрицы в строку и считаем ранг.
Пример: зависимые матрицы.
$$A_1 = \begin{pmatrix} 1 & 1 \\ 0 & 0 \end{pmatrix}, \quad A_2 = \begin{pmatrix} 0 & 0 \\ 1 & 1 \end{pmatrix}, \quad A_3 = \begin{pmatrix} 2 & 2 \\ 3 & 3 \end{pmatrix}.$$Развернём каждую матрицу в строку в порядке $(a_{11}, a_{12}, a_{21}, a_{22})$:
$$A_1 \to (1, 1, 0, 0), \quad A_2 \to (0, 0, 1, 1), \quad A_3 \to (2, 2, 3, 3).$$Видно, что третья строка равна $2 \cdot$ первой $+ \; 3 \cdot$ второй. Значит,
$$2A_1 + 3A_2 - A_3 = \begin{pmatrix} 2 & 2 \\ 0 & 0 \end{pmatrix} + \begin{pmatrix} 0 & 0 \\ 3 & 3 \end{pmatrix} - \begin{pmatrix} 2 & 2 \\ 3 & 3 \end{pmatrix} = \begin{pmatrix} 0 & 0 \\ 0 & 0 \end{pmatrix}.$$Система зависима, а максимальное число независимых матриц в ней равно 2 (ранг матрицы из трёх координатных строк равен 2: первые две строки непропорциональны).
Отдельно стоит предупредить: определитель самой матрицы $A_i$ к вопросу о зависимости не имеет никакого отношения. Матрица здесь — вектор, а не оператор; её собственный определитель — просто одно из чисел, посчитанных по её элементам, и на линейную зависимость набора матриц он не влияет. Например, три матрицы с нулевыми определителями могут быть независимы, а три невырожденные — зависимы.
Разбор примеров
Пример 1. Три многочлена — независимость.
$$q_1 = x^2 + x, \quad q_2 = x + 1, \quad q_3 = x^2 - 1.$$Координаты в порядке $(x^2, x, 1)$: $q_1 = (1,1,0)$, $q_2 = (0,1,1)$, $q_3 = (1,0,-1)$. Определитель:
$$\begin{vmatrix} 1 & 1 & 0 \\ 0 & 1 & 1 \\ 1 & 0 & -1 \end{vmatrix} = 1(-1 - 0) - 1(0 - 1) + 0 = -1 + 1 = 0.$$Определитель равен нулю, система зависима. Найдём соотношение: $q_1 - q_2 = x^2 - 1 = q_3$, то есть $q_1 - q_2 - q_3 = 0$. Проверка: $(x^2 + x) - (x + 1) - (x^2 - 1) = 0$. $\checkmark$
Пример 2. Две функции — независимость через подстановку.
$$f_1(x) = x, \qquad f_2(x) = e^x.$$Пусть $\alpha x + \beta e^x = 0$ при всех $x$. При $x = 0$: $\beta = 0$ (так как $e^0 = 1$, а $\alpha \cdot 0 = 0$). При $x = 1$: $\alpha + \beta e = 0$, а с учётом $\beta = 0$ получаем $\alpha = 0$. Независимы.
Пример 3. Четыре матрицы $2 \times 2$.
$$E_{11} = \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}, \; E_{12} = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}, \; E_{21} = \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix}, \; E_{22} = \begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}.$$Координатные строки — это $(1,0,0,0)$, $(0,1,0,0)$, $(0,0,1,0)$, $(0,0,0,1)$, то есть единичная матрица $4 \times 4$. Определитель равен 1, система независима. Если добавить к ней любую пятую матрицу $2\times2$, система станет зависимой: пять векторов в четырёхмерном пространстве координат.
Почему это важно
Главная мысль раздела: линейная алгебра — не про столбики чисел, а про операции. Как только у объектов есть сложение и умножение на число, подчиняющиеся аксиомам, весь аппарат включается автоматически, и понятие независимости работает без изменений.
Практически это означает вот что. Когда ты в анализе данных говоришь «эти два признака дублируют друг друга», в обработке сигналов — «эти базисные функции избыточны», в статистике — «эта модель переопределена», ты в каждом случае говоришь одно и то же: соответствующая система векторов линейно зависима. Разница только в том, что называется вектором.
Про функции стоит запомнить асимметрию приёмов: подстановкой точек доказывают независимость, тождеством — зависимость. Перепутать легко, а последствия неприятные — можно уверенно объявить независимые функции зависимыми, как в примере с $x$ и $x^2$ на неудачных точках. Общий определительный критерий для функций в анализе существует, но он опирается на производные и относится к другому курсу; здесь нам вполне хватает подстановки, если выбирать точки аккуратно и помнить, в какую сторону работает вывод.
Линейная зависимость в машинном обучении
В ML линейная зависимость — это не иллюстрация, а диагноз, который ставят матрице данных до всякого обучения. Ниже — конкретные числа, посчитанные на маленькой таблице, которую можно воспроизвести целиком.
Почему модель перестаёт быть определимой
Линейная модель предсказывает $\hat{y} = Xw$, где $X$ — матрица «объекты $\times$ признаки», а $w$ — веса. Пусть столбцы $X$ линейно зависимы: существует ненулевой вектор $v$ с $Xv = 0$ (то есть некоторая нетривиальная комбинация признаков тождественно равна нулю на всех объектах). Тогда для любых весов $w$
$$X(w + v) = Xw + Xv = Xw.$$Предсказания не изменились ни на одном объекте, а веса другие — и так для бесконечного множества $w + tv$. Значит, по обучающим данным веса не определяются однозначно: задача не имеет единственного ответа, и оптимизатор здесь ни при чём. В уроке 167 это же явление разбиралось с другой стороны — как непустое ядро матрицы признаков; сейчас видно, что «ядро непусто» и «столбцы линейно зависимы» — буквально одно и то же утверждение, записанное разными словами.
Как это выглядит в коде
Возьмём десять квартир и три признака: площадь в квадратных метрах, число комнат, этаж.
import numpy as np
area = np.array([32., 41., 44., 55., 58., 63., 70., 78., 85., 96.])
rooms = np.array([ 1., 2., 1., 2., 3., 2., 3., 4., 3., 4.])
floor = np.array([ 5., 1., 9., 2., 7., 3., 12., 4., 8., 6.])
X = np.column_stack([area, rooms, floor])
print(X.shape, np.linalg.matrix_rank(X)) # (10, 3) 3 — ранг полный
Ранг равен 3 при трёх столбцах — столбцы независимы, всё в порядке. Теперь добавим «новый признак»: та же площадь, но в квадратных футах ($1\ \text{фут}^2 = 0{,}09290304\ \text{м}^2$).
sqft = area / 0.09290304
XB = np.column_stack([area, rooms, floor, sqft])
print(np.linalg.matrix_rank(XB)) # 3 при 4 столбцах
print(np.linalg.svd(XB, compute_uv=False))
# [2226.68779501 10.23351498 1.53668404 0. ]
Ранг остался равен трём, хотя столбцов стало четыре: новый признак линейно зависим от старых. Последнее сингулярное число равно точно нулю — это машинный признак строгой зависимости. Обнуляющая комбинация здесь очевидна и находится через scipy.linalg.null_space: с точностью до множителя она равна $(1, 0, 0, -0{,}09290304)$, то есть «площадь минус $0{,}09290304$ умножить на площадь в футах равно нулю» — ровно формула перевода единиц.
numpy.linalg.matrix_rank — самый быстрый способ поймать такую беду: сравни ранг с числом столбцов, и если ранг меньше — в данных есть строгая линейная зависимость.
VIF: детектор коллинеарности с числами
matrix_rank отвечает «да/нет» и не говорит, какой именно признак виноват. Для этого есть variance inflation factor (VIF), предложенный Марквардтом в 1970 году.
Определение. Для признака $j$ построим регрессию этого признака на все остальные и обозначим её коэффициент детерминации $R_j^2$. Тогда
$$\mathrm{VIF}_j = \frac{1}{1 - R_j^2}.$$
Смысл прозрачен. Если признак $j$ хорошо предсказывается остальными, $R_j^2$ близко к единице, знаменатель близок к нулю, VIF улетает вверх. Если признак ничем не объясняется, $R_j^2 \approx 0$ и $\mathrm{VIF}_j \approx 1$. При строгой линейной зависимости $R_j^2 = 1$ и VIF обращается в бесконечность. Общепринятые ориентиры: $\mathrm{VIF} < 5$ — нормально, $5 \dots 10$ — есть о чём подумать, $> 10$ — серьёзная коллинеарность.
Считаем на нашей таблице из трёх признаков:
def vif(X, j):
y = X[:, j]
others = np.delete(X, j, axis=1)
A = np.column_stack([np.ones(len(others)), others])
beta, *_ = np.linalg.lstsq(A, y, rcond=None)
r2 = 1 - np.sum((y - A @ beta)**2) / np.sum((y - y.mean())**2)
return r2, 1/(1 - r2)
Результаты (значения посчитаны, не выдуманы):
| признак | $R_j^2$ | VIF |
|---|---|---|
| площадь | 0,7931 | 4,83 |
| комнаты | 0,7817 | 4,58 |
| этаж | 0,1099 | 1,12 |
Площадь и число комнат заметно связаны между собой — это ожидаемо, и VIF около 4,8 показывает связь, но не катастрофу. Этаж почти ни с чем не связан, VIF $\approx 1{,}12$.
Проверим формулу вручную на первой строке: $1/(1 - 0{,}7931) = 1/0{,}2069 = 4{,}83$. Сходится.
Строгая зависимость против «почти зависимости»
Теперь самое важное. Добавим площадь в футах, но округлённую до целых футов — так, как её реально записали бы в базу.
sqft_r = np.round(area / 0.09290304)
# [ 344. 441. 474. 592. 624. 678. 753. 840. 915. 1033.]
XC = np.column_stack([area, rooms, floor, sqft_r])
print(np.linalg.matrix_rank(XC)) # 4 — ранг ПОЛНЫЙ
print(np.linalg.svd(XC, compute_uv=False))
# [2226.37797325 10.2346762 1.53742496 0.08921213]
print(np.linalg.cond(XC)) # 24956.0
Ранг снова полный, формально претензий нет. Но посмотри на сингулярные числа: последнее равно $0{,}0892$ при первом $2226$ — их отношение, то есть число обусловленности, равно почти $25\,000$. Столбцы не зависимы строго, но зависимы «почти»: округление сдвинуло значения на доли фута и разорвало точное тождество.
VIF на этих данных:
| признак | $R_j^2$ | VIF |
|---|---|---|
| площадь | 0,99999797 | 492 527 |
| комнаты | 0,79106 | 4,79 |
| этаж | 0,12612 | 1,14 |
| площадь в футах | 0,99999797 | 491 913 |
Пятьсот тысяч против порога в десять. Именно этот случай и опаснее строгой зависимости, и вот почему.
Строгая зависимость видна: matrix_rank меньше числа столбцов, numpy.linalg.inv падает с ошибкой, sklearn выдаёт предупреждение. Ты немедленно узнаёшь о проблеме и чинишь данные.
Почти зависимость не видна: ранг полный, обращение матрицы формально проходит, модель обучается, метрики на обучении отличные. А коэффициенты при этом — мусор. Проверим. Возьмём цены и обучим регрессию на четырёх признаках, включая округлённые футы:
y = np.array([2900., 3800., 3950., 5000., 5400., 5700., 6500., 7300., 7700., 8800.])
A = np.column_stack([np.ones(10), area, rooms, floor, sqft_r])
w1, *_ = np.linalg.lstsq(A, y, rcond=None)
# [ 15.03 -109.81 159.18 5.04 18.07 ]
Вес при площади получился отрицательным: $-109{,}81$. Буквально это читается как «каждый лишний квадратный метр снижает цену на 110 тысяч» — заведомая чушь. Дело в том, что вклад площади размазался между двумя дублирующими столбцами: суммарный эффект одного квадратного метра равен
$$-109{,}8125 + 18{,}0664 \cdot \frac{1}{0{,}09290304} = -109{,}8125 + 194{,}4647 = 84{,}65,$$что вполне разумно. Но по отдельности коэффициенты бессмысленны.
Теперь сдвинем цену одной квартиры на 10 (из примерно 2900, то есть на треть процента) и переобучим:
y2 = y.copy(); y2[0] += 10.
w2, *_ = np.linalg.lstsq(A, y2, rcond=None)
# [ 19.99 -76.49 158.46 5.05 14.97 ]
Вес при площади прыгнул с $-109{,}81$ до $-76{,}49$ — изменился на треть от собственной величины из-за микроскопического изменения данных. При этом суммарный эффект метра остался прежним: $84{,}61$ против $84{,}65$. Для сравнения, если убрать дублирующий столбец и обучить на трёх признаках, вес площади равен $84{,}81$ и после того же возмущения становится $84{,}74$ — то есть меняется на десятые доли процента.
Вывод, который стоит запомнить: при почти зависимых признаках предсказания устойчивы, а интерпретация коэффициентов невозможна. Модель работает, «вклад признака» по весу читать нельзя.
Откуда берутся избыточные признаки
Почти всегда — из аккуратности, доведённой до дублирования:
-
одна величина в двух единицах измерения: рост в сантиметрах и в дюймах, площадь в метрах и футах, цена в рублях и в тысячах рублей;
-
доля и процент: столбцы
shareиpercent = share * 100дают ранг 2 вместо 3 вместе со столбцом единиц; -
сумма частей и целое: расходы по категориям плюс столбец «итого» — целое равно сумме частей на каждой строке;
-
возраст и год рождения при фиксированной дате выгрузки;
-
one-hot кодирование категории без выброшенной базовой категории плюс intercept — dummy variable trap. Механика этой ловушки полностью разобрана в уроке 167 про ядро матрицы, повторять её здесь не будем: сумма всех one-hot столбцов равна столбцу единиц, и это готовая нетривиальная нулевая комбинация.
Все эти случаи ловятся одной строчкой: сравни np.linalg.matrix_rank(X) с X.shape[1].
Строки тоже бывают зависимы: ситуация $p > n$
До сих пор мы смотрели на столбцы. Но строки матрицы — тоже векторы, и к ним применима та же теорема: в $\mathbb{R}^n$ не бывает больше $n$ независимых векторов.
Пусть в датасете $n$ объектов и $p$ признаков, причём $p > n$ — типичная ситуация для геномных данных, текстовых мешков слов, спектров. Строки матрицы $X$ лежат в $\mathbb{R}^p$, их всего $n$ штук, и они вполне могут быть независимыми. А вот столбцы лежат в $\mathbb{R}^n$, и их $p > n$ штук — значит, они гарантированно зависимы, безо всякой проверки:
rng = np.random.default_rng(0)
Xp = rng.normal(size=(40, 200))
print(np.linalg.matrix_rank(Xp)) # 40 при 200 столбцах
from scipy.linalg import null_space
print(null_space(Xp).shape[1]) # 160
Ранг равен 40 — это максимум, ограниченный числом строк. Столбцов 200, значит зависимость есть, и пространство обнуляющих комбинаций имеет размерность 160. Веса линейной модели на таких данных не определяются однозначно даже теоретически: к любому решению можно прибавить любую из этих комбинаций, ничего не изменив. Данные ровно потому и «не содержат ответа», что наблюдений физически меньше, чем неизвестных.
Здесь же лежит и объяснение того, почему matrix_rank матрицы признаков стоит проверять всегда, а не только когда что-то пошло не так. Проверка стоит одну строчку и мгновенно отличает «модель плохо обучилась» от «задача не имеет единственного решения».
Переопределённые нейросети как крайний случай
Доведём мысль до предела. У ResNet-50 около 25,6 млн параметров, а в обучающей части ImageNet-1k примерно 1,28 млн изображений — то есть параметров примерно в 20 раз больше, чем обучающих примеров. Современные языковые модели уходят в это соотношение ещё дальше.
В линейном мире такая ситуация означала бы полную неопределимость: параметров кратно больше, чем уравнений, множество идеальных решений бесконечно. Нейросети нелинейны, и дословно переносить вывод нельзя, но качественная картина сохраняется: существует огромное множество наборов весов, дающих одинаково нулевую ошибку на обучении. Какой из них выберется, определяется не данными, а всем остальным — инициализацией, оптимизатором, регуляризацией, ранней остановкой. Отсюда и практические следствия: два одинаково обученных экземпляра одной архитектуры имеют совершенно разные веса; отдельный вес интерпретировать бессмысленно; для дообучения хватает низкоранговых поправок вроде LoRA, о которых шла речь в уроке про ранг. Всё это — разные проявления одного факта: когда параметров больше, чем независимых уравнений, данные не определяют ответ полностью.
Практика: 30 заданий
Базовые задания (1–10)
Задание 1: Выясните, линейно зависима ли система векторов $v_1 = (3, -1)$, $v_2 = (-6, 2)$ в $\mathbb{R}^2$. Если зависима — укажите явно нетривиальную комбинацию, равную нулю.
Задание 2: Выясните, линейно зависима ли система $v_1 = (2, 5)$, $v_2 = (3, -1)$ в $\mathbb{R}^2$.
Задание 3: Выясните, зависима ли система $v_1 = (1, -1, 2)$, $v_2 = (3, 0, 1)$, $v_3 = (0, 0, 0)$ в $\mathbb{R}^3$. Если зависима — укажите нетривиальную комбинацию, дающую ноль.
Задание 4: Выясните с помощью определителя, зависима ли система $v_1 = (1, 2, 1)$, $v_2 = (2, 1, 3)$, $v_3 = (3, 3, 4)$ в $\mathbb{R}^3$, и найдите нетривиальную нулевую комбинацию.
Задание 5: Выясните, зависима ли система $v_1 = (1, 0, 2)$, $v_2 = (2, 1, 1)$, $v_3 = (1, 1, 0)$ в $\mathbb{R}^3$.
Задание 6: Не производя вычислений, определите, зависима ли система векторов в $\mathbb{R}^4$:
$$v_1 = (1, 2, 0, 3), \; v_2 = (2, -1, 4, 1), \; v_3 = (0, 5, 3, 2), \; v_4 = (7, 1, 1, 1), \; v_5 = (3, 3, 3, 3).$$Задание 7: Найдите нетривиальную линейную комбинацию векторов $v_1 = (1, 2)$, $v_2 = (3, 1)$, $v_3 = (5, 4)$ в $\mathbb{R}^2$, равную нулевому вектору.
Задание 8: Выясните, зависима ли система $v_1 = (1, 1, 0)$, $v_2 = (0, 1, 1)$, $v_3 = (1, 2, 1)$ в $\mathbb{R}^3$, и укажите нетривиальную нулевую комбинацию.
Задание 9: Выясните, коллинеарны ли векторы $v_1 = (4, -6, 10)$ и $v_2 = (-6, 9, -15)$, и если да — укажите нетривиальную нулевую комбинацию с целыми коэффициентами.
Задание 10: Выясните, зависима ли система многочленов $p_1 = 1 + x$, $p_2 = 1 - x$, $p_3 = x$, и укажите нетривиальную комбинацию, равную нулевому многочлену.
Средние задания (11–20)
Задание 11: Выясните, зависима ли система в $\mathbb{R}^4$, и укажите нетривиальную нулевую комбинацию:
$$v_1 = (1, -1, 2, 0), \quad v_2 = (2, 1, 0, 3), \quad v_3 = (4, -1, 4, 3), \quad v_4 = (0, 3, -4, 3).$$Задание 12: При каких значениях параметра $\lambda$ система векторов $v_1 = (1, 2, -1)$, $v_2 = (2, \lambda, 1)$, $v_3 = (0, 1, 1)$ в $\mathbb{R}^3$ линейно зависима?
Задание 13: При каких значениях параметра $a$ система $v_1 = (a, 1, 1)$, $v_2 = (1, a, 1)$, $v_3 = (1, 1, a)$ линейно зависима? Для каждого найденного значения укажите максимальное число независимых векторов в системе.
Задание 14: Покажите, что система $v_1 = (2, 1, 0)$, $v_2 = (1, -2, 3)$, $v_3 = (4, 7, -6)$ зависима, и выразите $v_3$ через остальные векторы.
Задание 15: Докажите, что система $v_1 = (1, 0, 1)$, $v_2 = (0, 1, 1)$ линейно независима, а система $v_1, v_2, v_3$ с $v_3 = (2, 3, 5)$ линейно зависима.
Задание 16: Докажите, что функции $f_1(x) = \cos x$ и $f_2(x) = \cos 2x$ линейно независимы в пространстве функций на $\mathbb{R}$.
Задание 17: Выясните, зависима ли система матриц, и укажите нетривиальную комбинацию, равную нулевой матрице:
$$A_1 = \begin{pmatrix} 1 & 0 \\ 2 & 1 \end{pmatrix}, \quad A_2 = \begin{pmatrix} 0 & 3 \\ 1 & 0 \end{pmatrix}, \quad A_3 = \begin{pmatrix} 2 & 3 \\ 5 & 2 \end{pmatrix}.$$Задание 18: Найдите максимальное число линейно независимых векторов в наборе
$$v_1 = (1, 2, 1), \; v_2 = (2, 4, 2), \; v_3 = (0, 1, 3), \; v_4 = (1, 3, 4), \; v_5 = (3, 7, 6)$$и выразите остальные векторы через выбранные независимые.
Задание 19: При каких значениях параметра $\lambda$ векторы $v_1 = (1, \lambda)$ и $v_2 = (\lambda, 4)$ в $\mathbb{R}^2$ линейно зависимы?
Задание 20: Дана система $u_1 = (1, 3, 0)$, $u_2 = (2, 6, 0)$, $u_3 = (0, 0, 5)$. Покажите, что она линейно зависима, но вектор $u_3$ не выражается через $u_1$ и $u_2$.
Продвинутые задания (21–30)
Задание 21: При каких значениях параметра $a$ векторы $v_1 = (1, 2, 3)$, $v_2 = (2, a, 6)$, $v_3 = (3, 6, a)$ линейно зависимы? Для каждого найденного значения укажите нетривиальную нулевую комбинацию.
Задание 22: При каких значениях $\lambda$ линейно зависима система векторов в $\mathbb{R}^4$:
$$v_1 = (1, 1, 1, 1), \quad v_2 = (1, 2, 4, 8), \quad v_3 = (1, 3, 9, 27), \quad v_4 = (1, \lambda, \lambda^2, \lambda^3)?$$Задание 23: При каких значениях $\lambda$ линейно зависима система в $\mathbb{R}^4$:
$$v_1 = (\lambda, 1, 1, 1), \; v_2 = (1, \lambda, 1, 1), \; v_3 = (1, 1, \lambda, 1), \; v_4 = (1, 1, 1, \lambda)?$$Для каждого значения найдите максимальное число независимых векторов.
Задание 24: При каком значении $c$ многочлены $p_1 = x^2 - x + 1$, $p_2 = x^2 + 2x$, $p_3 = 2x^2 + x + c$ линейно зависимы? Укажите нетривиальную комбинацию для найденного $c$.
Задание 25: Пусть векторы $v_1, v_2, v_3$ линейно независимы. Докажите, что система $u_1 = v_1 + v_2$, $u_2 = v_2 + v_3$, $u_3 = v_3 + v_1$ также линейно независима.
Задание 26: Пусть система $v_1, \dots, v_k$ линейно независима, а система $v_1, \dots, v_k, w$ линейно зависима. Докажите, что $w$ является линейной комбинацией векторов $v_1, \dots, v_k$.
Задание 27: Для матрицы
$$A = \begin{pmatrix} 1 & 2 & 3 & 1 \\ 2 & 4 & 7 & 4 \\ 3 & 6 & 10 & 5 \end{pmatrix}$$найдите ранг, укажите базисный минор, проверьте независимость базисных строк и выразите небазисную строку через базисные, а небазисные столбцы — через базисные.
Задание 28: Докажите, что функции $f_1(x) = 1$, $f_2(x) = x$, $f_3(x) = e^x$ линейно независимы на $\mathbb{R}$.
Задание 29: Найдите максимальное число линейно независимых матриц в системе и укажите две различные нетривиальные комбинации, равные нулевой матрице:
$$A_1 = \begin{pmatrix} 1 & 2 \\ 0 & 1 \end{pmatrix}, \; A_2 = \begin{pmatrix} 0 & 1 \\ 1 & 1 \end{pmatrix}, \; A_3 = \begin{pmatrix} 2 & 3 \\ -1 & 1 \end{pmatrix}, \; A_4 = \begin{pmatrix} 1 & 0 \\ -2 & -1 \end{pmatrix}.$$Задание 30: Пусть система $v_1, \dots, v_k$ линейно независима, и вектор $w$ не принадлежит её линейной оболочке: $w \notin \operatorname{span}(v_1, \dots, v_k)$. Докажите, что система $v_1, \dots, v_k, w$ линейно независима.
Частые ошибки
Ошибка 1. «Система зависима — значит любой её вектор выражается через остальные».
Как выглядит: решающий устанавливает зависимость системы, а потом уверенно пишет «выразим $v_3$ через $v_1$ и $v_2$» и вязнет в системе, у которой нет решений.
Почему возникает: определение через «один вектор выражается через остальные» запоминается в усиленном виде — «каждый вектор выражается».
Как правильно: в определении стоит «хотя бы один». Выражается ровно тот вектор, у которого коэффициент в нетривиальной обнуляющей комбинации ненулевой. Контрпример из урока: $(1,0)$, $(2,0)$, $(0,1)$ — система зависима, но третий вектор через первые два не выражается ни при каких коэффициентах, потому что у обеих его «опор» вторая координата нулевая.
Ошибка 2. Считают определитель, когда векторов не столько же, сколько координат.
Как выглядит: «три вектора в $\mathbb{R}^4$, посчитаем определитель» — и дальше попытка вычислить определитель прямоугольной матрицы $3 \times 4$.
Почему возникает: определитель — самый привычный инструмент, и рука тянется к нему автоматически.
Как правильно: определитель определён только для квадратных матриц. Критерий через определитель работает исключительно при $k = n$. Во всех остальных случаях — ранг: приводим к ступенчатому виду и сравниваем число ненулевых строк с числом векторов. При $k > n$ ответ вообще известен заранее: зависима.
Ошибка 3. «Нетривиальная комбинация — это когда все коэффициенты ненулевые».
Как выглядит: найдя комбинацию $2v_1 - v_2 + 0 \cdot v_3 = 0$, решающий отвергает её как «тривиальную из-за нуля» и продолжает искать другую.
Почему возникает: слово «нетривиальный» подсознательно читается как «полноценный, без вырождений».
Как правильно: нетривиальность означает «не все коэффициенты нулевые», то есть хотя бы один отличен от нуля. Комбинация $(2, -1, 0)$ полностью законна и доказывает зависимость.
Ошибка 4. «Векторы выглядят по-разному, значит независимы».
Как выглядит: «$(1,2,3)$, $(4,5,6)$, $(7,8,9)$ — все разные, никакой не кратен другому, независимы».
Почему возникает: проверяют попарную непропорциональность и считают, что этого достаточно.
Как правильно: попарная непропорциональность гарантирует независимость только для системы из двух векторов. Начиная с трёх, зависимость может быть «распределённой»: ни один вектор не кратен другому, но комбинация трёх даёт ноль. В приведённом примере $v_1 - 2v_2 + v_3 = 0$, система зависима. Проверять надо ранг, а не пары.
Ошибка 5. Не замечают нулевой вектор или повтор.
Как выглядит: пять минут аккуратного приведения к ступенчатому виду системы, в которой один из векторов — нулевой.
Почему возникает: привычка сразу запускать алгоритм, не глядя на данные.
Как правильно: перед вычислениями пробежаться глазами по трём признакам: есть ли нулевой вектор, есть ли два одинаковых, есть ли пара пропорциональных. Любой из них немедленно даёт ответ «зависима» и готовую обнуляющую комбинацию.
Ошибка 6. Доказывают зависимость функций подстановкой точек.
Как выглядит: «подставим $x = 0$ и $x = 1$ в $\alpha x + \beta x^2 = 0$, получим систему с ненулевым решением — значит функции зависимы».
Почему возникает: приём с подстановкой работает в одну сторону, а применяют его в обе.
Как правильно: подстановка точек доказывает независимость (если система на коэффициенты имеет только нулевое решение). Для доказательства зависимости нужно предъявить тождество, верное при всех $x$: например, $\sin^2 x + \cos^2 x - 1 = 0$. Неудачный выбор точек ничего не доказывает — надо взять другие точки, как в примере с $x$ и $x^2$, где точки $1$ и $2$ дают правильный вывод, а точки $0$ и $1$ — вырожденную систему.
Ошибка 7. Для набора матриц считают определитель самой матрицы.
Как выглядит: «$\det A_1 = 0$, значит система матриц зависима».
Почему возникает: матрица одновременно и объект с определителем, и элемент векторного пространства; эти две роли путаются.
Как правильно: в вопросе о линейной зависимости набора матриц каждая матрица — это вектор, и её собственный определитель к делу не относится. Разворачивай матрицы в координатные строки (все элементы подряд) и считай ранг получившейся матрицы из этих строк. Три вырожденные матрицы могут быть независимы, три невырожденные — зависимы.
Ошибка 8. В задаче с параметром останавливаются на корнях определителя.
Как выглядит: «$\det = (a-1)^2(a+2)$, ответ: $a = 1$ и $a = -2$» — и всё, без разбора, что происходит при каждом значении.
Почему возникает: вопрос «при каких значениях зависима» формально закрыт корнями, и дальше считать лень.
Как правильно: корни определителя дают только факт зависимости. Если в задаче спрашивают, сколько независимых векторов остаётся, каждый корень нужно подставить обратно и посчитать ранг: он может упасть на единицу, а может и на две. В нашем примере при $a = -2$ ранг равен 2, а при $a = 1$ — всего 1. Кратный корень — сигнал присмотреться внимательнее.
Ошибка 9. Думают, что у матрицы «два разных ранга» — по строкам и по столбцам.
Как выглядит: «посчитаем строчный ранг, потом столбцовый, вдруг они разные».
Почему возникает: строки и столбцы живут в пространствах разной размерности, и совпадение кажется недоказанным.
Как правильно: по следствию из теоремы о базисном миноре максимальное число независимых строк равно максимальному числу независимых столбцов и равно рангу. Считать можно с любой стороны, ответ один. Практически удобнее работать со строками — элементарные преобразования строк привычнее.
Ошибка 10. Читают теорему «$k > n$ влечёт зависимость» в обратную сторону.
Как выглядит: «векторов три, пространство трёхмерное, $3 \le 3$ — значит независимы».
Почему возникает: теорема запоминается как «критерий», хотя она даёт лишь достаточное условие зависимости.
Как правильно: при $k > n$ система гарантированно зависима. При $k \le n$ гарантий нет никаких: возможны оба варианта, и нужно считать. Три вектора в $\mathbb{R}^3$ бывают и независимыми (определитель ненулевой), и зависимыми (определитель равен нулю).
Главное запомнить
-
Линейная комбинация $\lambda_1 v_1 + \dots + \lambda_k v_k$ называется тривиальной, если все коэффициенты нулевые, и нетривиальной, если хотя бы один отличен от нуля. Тривиальная комбинация даёт ноль всегда и потому ничего не различает.
-
Система линейно зависима, если существует нетривиальная комбинация, равная нулевому вектору. Независима — если равенство комбинации нулю возможно только при всех нулевых коэффициентах.
-
Эквивалентная формулировка: система зависима $\iff$ хотя бы один её вектор выражается через остальные. Слово «один» усилить до «каждый» нельзя: в системе $(1,0), (2,0), (0,1)$ третий вектор через остальные не выражается.
-
Через остальные выражается ровно тот вектор, у которого коэффициент в обнуляющей комбинации ненулевой.
-
Рабочий критерий: векторы $v_1, \dots, v_k$ из $\mathbb{R}^n$ зависимы $\iff$ $\operatorname{rank} A < k$, где $A$ составлена из них как из столбцов (или строк — ранг тот же). Коэффициенты комбинации — это ненулевое решение однородной системы $A\lambda = 0$.
-
Частные случаи: при $k = n$ достаточно посчитать определитель; при $k > n$ система зависима всегда; два вектора зависимы $\iff$ коллинеарны; три вектора в $\mathbb{R}^3$ зависимы $\iff$ смешанное произведение равно нулю $\iff$ они компланарны.
-
Свойства: система с нулевым вектором зависима; система с двумя равными (или пропорциональными) векторами зависима; подсистема независимой системы независима; надсистема зависимой системы зависима; один вектор независим $\iff$ он ненулевой.
-
Если вектор выражается через остальные, его выбрасывание не меняет линейную оболочку. Независимость означает, что каждый вектор добавляет новое направление, и выбросить без потерь нельзя никого.
-
Теорема о базисном миноре: строки (столбцы) базисного минора независимы, а все остальные строки (столбцы) через них выражаются. Следствие: $\operatorname{rank} A$ = максимальное число независимых строк = максимальное число независимых столбцов.
-
Чтобы найти максимальное число независимых векторов в наборе, достаточно посчитать ранг матрицы, составленной из них.
-
В абстрактных пространствах определение то же самое, меняется лишь смысл нуля: нулевой многочлен (все коэффициенты нулевые), тождественно нулевая функция, нулевая матрица. Многочлены и матрицы проверяются переходом к координатам, функции — подстановкой точек.
-
Для функций подстановка точек доказывает независимость; зависимость доказывается только предъявлением тождества, верного при всех значениях аргумента.
-
В машинном обучении линейно зависимые признаки делают веса модели неопределимыми: $X(w + v) = Xw$ для любого $v$ с $Xv = 0$. Диагностика —
numpy.linalg.matrix_rank(X)против числа столбцов и VIF $= 1/(1 - R_j^2)$. -
«Почти зависимость» опаснее строгой: ранг формально полный, модель обучается, но коэффициенты неустойчивы и не интерпретируются. При $p > n$ столбцы зависимы гарантированно.
Связь с другими темами курса
Что нужно было знать до этого урока
Урок стоит на трёх опорах. Из урока 162 взят ранг матрицы и техника элементарных преобразований — главный вычислительный инструмент всего материала; сегодня ранг получил содержательное истолкование как максимальное число независимых строк или столбцов. Из уроков 158–160 — определители и миноры: критерий зависимости $n$ векторов в $\mathbb{R}^n$ через $\det = 0$, разбор задач с параметром, само понятие базисного минора. Из урока 167 — однородные системы: критерий $\operatorname{rank} A < n$ существования нетривиального решения, к которому сводится любой вопрос о линейной зависимости; ядро матрицы, элементы которого — это в точности наборы коэффициентов обнуляющих комбинаций. Из уроков 163–164 — метод Гаусса, RREF, базисные и свободные переменные, техника разбора систем с параметром. Из уроков 151–155 — геометрия векторов: коллинеарность, компланарность и смешанное произведение, через которые линейная зависимость получает наглядное прочтение в двумерном и трёхмерном случае. И, разумеется, из урока 168 — аксиоматика векторного пространства, зоопарк примеров (многочлены, функции, матрицы) и линейная оболочка $\operatorname{span}$, без которой невозможно сформулировать, что именно теряется при выбрасывании вектора.
Что изучить дальше
Урок 170 «Базис и размерность» — прямое продолжение. Независимая система, через которую выражается всё остальное, называется базисом; там будет доказано, что число векторов в базисе не зависит от его выбора (на лемме о замене, о которой шла речь в истории), введены координаты и матрица перехода, а ФСР однородной системы окажется базисом ядра. Урок 171 «Линейные преобразования» использует независимость при определении матрицы оператора и в теореме о ранге и дефекте: размерность образа плюс размерность ядра равна размерности исходного пространства. Урок 172 «Собственные векторы» ставит вопрос о независимости собственных векторов, отвечающих разным собственным значениям, а урок 173 «Диагонализация» превращает этот вопрос в критерий: матрица диагонализуема тогда и только тогда, когда её собственные векторы образуют независимую систему нужного размера. В уроке 175 появится ортогональность, и там выяснится, что ортогональные ненулевые векторы автоматически независимы — удобный достаточный признак, который сегодня использовать было нельзя.
Где это нужно в жизни
💻 Программирование. numpy.linalg.matrix_rank, sympy.Matrix.rank(), scipy.linalg.null_space — прямые реализации материала урока. В компьютерной графике линейная независимость трёх векторов означает, что они задают невырожденную систему координат объекта; вырождение (компланарность) ломает нормали и освещение. В геометрическом моделировании проверка независимости отвечает на вопрос, не выродился ли треугольник в отрезок.
🤖 ML/AI. Мультиколлинеарность признаков и неопределимость весов, VIF как рабочий детектор, dummy variable trap, ситуация $p > n$, низкоранговые поправки при дообучении больших моделей — всё это разные формы вопроса «зависимы ли столбцы матрицы признаков». Отбор признаков во многом и есть поиск максимальной независимой подсистемы.
📊 Data Science. Аудит датасета: поиск столбцов, выражающихся через другие, — это поиск нетривиальной обнуляющей комбинации. Такие столбцы возникают после джойнов, при хранении величины в двух единицах измерения, при наличии одновременно частей и итога. Одна строчка с matrix_rank ловит их все.
🔬 Наука. В химии независимость векторов состава определяет, сколько независимых реакций можно составить из данного набора веществ. В механике независимость векторов сил и связей отвечает на вопрос, является ли конструкция статически определимой. В теории размерностей (анализ Букингема) число независимых безразмерных комплексов равно рангу матрицы показателей степеней — буквально задача этого урока.
💰 Финансы. В факторных моделях доходности линейно зависимые факторы делают вклад каждого неопределимым — та же неидентифицируемость, что и в регрессии. В портфельном анализе линейно зависимые активы не дают диверсификации: один из них — комбинация остальных, и добавление его в портфель не расширяет множество достижимых профилей доходности.
Интересные факты
-
Герман Грассман, у которого впервые появились линейная независимость и размерность, был школьным учителем и никогда не занимал университетской кафедры. Его «Ausdehnungslehre» 1844 года продавалась настолько плохо, что нераспроданный тираж в итоге пошёл под нож. Разочаровавшись в математике, Грассман переключился на языкознание — и добился там громкого успеха: его словарь к «Ригведе» (1873–1875) используется индологами до сих пор, а открытый им фонетический закон носит его имя.
-
Слово «ранг» в математику ввёл Георг Фробениус в 1879 году, в работе об однородных дифференциальных уравнениях в полных дифференциалах. До этого свойство, которое мы называем неполным рангом, описывали громоздко — через обращение в ноль всех миноров определённого порядка. Термины «матрица» и «минор», кстати, принадлежат другому человеку — Джеймсу Джозефу Сильвестру, который придумал их в 1850-х.
-
Термин «мультиколлинеарность» ввёл в 1934 году норвежский экономист Рагнар Фриш в работе о статистическом анализе регрессионных систем. В 1969 году Фриш вместе с Яном Тинбергеном получил первую в истории премию по экономике памяти Альфреда Нобеля. Так что понятие, которым сегодня оперируют дата-сайентисты, пришло из экономической статистики тридцатых годов.
-
Variance inflation factor предложил Дональд Марквардт в 1970 году в статье о гребневой регрессии — той самой, что даёт ридж-регуляризацию. Знаменитый порог «VIF больше 10 — плохо» не является теоремой: это эмпирическое соглашение, и в литературе до сих пор спорят, не стоит ли брать 5, а иногда и 2,5. Формула же строгая: $\mathrm{VIF}_j = 1/(1 - R_j^2)$, и при строгой линейной зависимости она честно обращается в бесконечность.
-
Численный ранг — вопрос выбранного порога, а не факт.
numpy.linalg.matrix_rankсчитает ранг через сингулярные числа и объявляет нулевыми те, что меньше порога, зависящего от размера матрицы и машинной точности. В примере из этого урока площадь в квадратных футах, округлённая до целых, дала формально полный ранг 4 при последнем сингулярном числе $0{,}089$ — то есть содержательно дублирующий признак численно выглядел независимым. Именно поэтому в реальных данных на один толькоmatrix_rankполагаться нельзя, и рядом с ним держат VIF и число обусловленности.
Лайфхаки и полезные трюки
-
Сначала посчитай векторы и координаты. Если векторов больше, чем размерность пространства, ответ «зависима» пишется мгновенно и является полным ответом. Пять векторов в $\mathbb{R}^4$, четыре многочлена степени не выше двух (координатное пространство трёхмерное), пять матриц $2\times2$ — все эти системы зависимы без единого вычисления.
-
Пробегись глазами по трём признакам. Нулевой вектор, два одинаковых вектора, пара пропорциональных — каждый из них сразу даёт зависимость и готовую обнуляющую комбинацию. Проверка занимает секунды и экономит пять минут метода Гаусса.
-
При $k = n$ считай определитель, а не ранг. Для трёх векторов в $\mathbb{R}^3$ определитель — двадцать секунд работы против шести элементарных преобразований, в каждом из которых можно ошибиться знаком. Но помни: определитель даёт только «да/нет» и не показывает, ни какие коэффициенты, ни сколько независимых векторов осталось.
-
Нужны коэффициенты — ставь векторы столбцами. Тогда искомые $\lambda_i$ — это в точности ядро получившейся матрицы, и вся техника ФСР из урока 167 работает без переделок. Если нужен только ответ «зависима или нет», пиши строками: с ними удобнее делать преобразования.
-
Проверяй комбинацию подстановкой в исходные векторы. Не в ступенчатый вид, а именно в исходные: ошибка могла закрасться в сами преобразования, и тогда проверка по промежуточной матрице её не увидит. Скажем, найдя $7v_1 + 6v_2 - 5v_3 = 0$, потрать полминуты и сложи три вектора с этими коэффициентами — либо получится нулевой вектор, либо сразу видно, где ошибка.
-
В задачах с параметром подставляй каждый корень обратно. Определитель говорит только, что при этом значении система зависима. Насколько сильно упал ранг — вопрос отдельный, и кратный корень часто означает, что ранг просел сразу на две единицы. Полезно также взять «контрольное» значение параметра вдали от корней и убедиться, что там определитель ненулевой: это ловит арифметические ошибки в самом определителе.
-
Многочлены и матрицы переводи в координаты. Многочлен степени не выше $n$ — это строка из $n+1$ коэффициентов, матрица $m \times n$ — строка из $mn$ элементов. После перевода задача становится обычной задачей про векторы в $\mathbb{R}^N$, и дальше работает весь стандартный аппарат. Порядок записи координат может быть любым, лишь бы одинаковым для всех объектов набора.
-
Для функций выбирай точки, где они ведут себя по-разному. Подстановка $x = 0$ хороша тем, что зануляет многое ($\sin 0 = 0$, $x = 0$) и оставляет константы; $x = \pi/2$ и $x = \pi$ разделяют синус и косинус; $x = \ln 2$ превращает $e^x$ и $e^{2x}$ в 2 и 4. Если система на коэффициенты получилась вырожденной, это не доказательство зависимости — просто возьми другие точки.
-
Проверяй ранг матрицы признаков перед обучением модели. Одна строчка
np.linalg.matrix_rank(X) == X.shape[1]отделяет «модель плохо обучилась» от «задача не имеет единственного решения». А если ранг полный, но коэффициенты скачут от малейших изменений данных, посмотри на VIF и на отношение крайних сингулярных чисел — почти зависимость видна именно там.
Линейная зависимость — это то место, где линейная алгебра перестаёт быть набором алгоритмов и становится языком. Ранг перестал быть «числом ненулевых строк» и стал мерой того, сколько в данных по-настоящему разной информации. Однородная система перестала быть упражнением и стала способом искать скрытые соотношения. А вопрос «сколько векторов нужно, чтобы описать всё остальное» получил точную постановку — и вот-вот получит ответ: система, которая независима и через которую выражается всё, называется базисом, и следующий урок целиком про неё.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку