Сочетания (Combination)

Когда стоит применять сочетания?

Сочетания используются в задачах, где порядок не имеет значения. Если вы выбираете объекты, но неважно, в каком порядке они расположены, значит, вам нужны сочетания.

Примеры применения сочетаний

📌 1. Лотереи и игры

  • В лотерее «6 из 49» важно только, какие 6 чисел выбраны, но не их порядок.
  • В карточных играх, когда нужно определить возможные комбинации карт на руках.

📌 2. Команды и группы

  • Выбираем 3 сотрудников из 10 для проекта (C(10,3)).
  • Формируем спортивную команду из доступных игроков.

📌 3. Подмножества и выборки в аналитике данных

  • Генерация всех возможных комбинаций признаков в машинном обучении (например, какие 3 из 5 переменных дадут лучший результат).
  • Разбиение данных на тренировочные и тестовые подвыборки без учета порядка.

📌 4. Комбинаторика в биологии и химии

  • Сочетания возможных генетических вариантов при скрещивании организмов.
  • Комбинации элементов в химических реакциях.

📌 5. Финансы и инвестиции

  • Выбор портфеля из 5 акций среди 20 доступных (без учета их порядка).

Когда НЕ применять сочетания?

Если порядок имеет значение, нужно использовать размещения. Например:

  • Распределение призовых мест среди участников (размещение, а не сочетание).
  • Упорядоченный список паролей или кодов.

🔹 Ключевой принцип: если порядок не важен — используем сочетания!

Определение

Формула сочетаний:C(n,k)=n!/k!(n−k)!

где:

  • n — общее количество элементов,
  • k — количество выбранных элементов,
  • ! — факториал числа.

Примеры

📌 Пример 1. Проекты
Допустим, у нас есть 6 студентов, и мы хотим выбрать 3 для проекта.

Решение:C(6,3)=6!/3!(6−3)!=6Х5Х4/3Х2Х1 = 20

То есть всего 13,983,816 возможных комбинаций.

📌 Пример 2. Команда из сотрудников
Есть 10 сотрудников, из которых нужно выбрать 4 человека в проектную группу. Сколькими способами можно это сделать?

Решение:C(10,4)=10!/4!(10−4)!=10!/4!6!=210

Значит, существует 210 различных вариантов команды.


Применение в аналитике данных

Сочетания широко применяются в анализе данных:

  • Выбор фич для машинного обучения – анализ комбинаций признаков.
  • Генерация подмножеств данных – например, для тестирования A/B-групп.
  • Финансовый анализ – моделирование возможных портфелей активов.

Код на Python для вычисления сочетаний

from math import comb

# Функция для расчета сочетаний
def combinations(n, k):
    return comb(n, k)

# Примеры
print("C(49,6):", combinations(49, 6))  # 13,983,816
print("C(10,4):", combinations(10, 4))  # 210

Применение в аналитике данных: выбор признаков в ML

Допустим, у нас есть 5 признаков, и мы хотим протестировать все возможные сочетания по 3 признака.

import itertools
import pandas as pd

# Доступные признаки
features = ['Age', 'Salary', 'Experience', 'Education', 'City']

# Генерация всех возможных комбинаций по 3 признака
feature_combinations = list(itertools.combinations(features, 3))

# Создаем DataFrame
df = pd.DataFrame(feature_combinations, columns=['Feature 1', 'Feature 2', 'Feature 3'])
print(df.head(10))  # Вывод первых 10 сочетаний

Что мы сделали?

  • Перебрали все возможные тройки признаков.
  • Создали DataFrame, который можно использовать для выбора лучшего набора фич.

Этот метод помогает тестировать модели машинного обучения, подбирая оптимальные комбинации признаков!