Статьи на тему data science, machine learning, big data, python, математика, нейронные сети, искусственный интеллект (artificial intelligence) Англоязычный канал по DS и Machinelearning -https://t.me/ds_international По сотрудничеству - @g_abashkin
🔥 Самые интересные статьи за последние дни:
• KAN: Kolmogorov–Arnold Networks
• Стандартное отклонение для полных чайников
• Почему галлюцинируют нейросети [и что с этим делают]
• Понимает ли Vision Llama импрессионистов?
• Что ищет он в краю далёком? Как найти смысл жизни с PostgreSQL
⚙️ Как устроено глубокое обучение нейросетей
Эта статья не ответит на все вопросы, но мы пробежимся по всем основам глубокого машинного обучения, что бы создать примерную начальную картину без сильного углубления в детали.
Читать...
⚖️ Сложность ≠ крутость
Есть соблазн показать уровень, написав сложную, многослойную, «умную» реализацию. Но это оружие против команды.
👉 Совет: выбирай самое простое решение, которое работает надёжно. Писать сложно умеют многие. Писать просто, понятно и устойчиво — редкий навык, который отличает зрелых инженеров от просто технарей.
⚙️ Похож ли ваш текст на ИИ?
Пытаюсь вычленить шаблоны, по которым палятся тексты от нейросетей: гладкие, пустые, «умные». И придумать способ автоматом понять — писал ли это ИИ или просто скучный человек.
Читать...
⚙️ От хаоса к порядку: как ML помогает искать и защищать конфиденциальную информацию
Покажу, как мы в Positive Technologies заменили формальные правила машинкой — чтобы чувствительные данные находились не по шаблону, а по смыслу. Меньше false negative, больше пользы.
Читать...
📈 Подборка статей для вашей карьеры
• Больше чем книга
• Как поставить цель на обучение, чтобы дойти до конца
• Движение вверх: как стать CTO — на примере пяти историй ИТ-директоров
• Найм дизайнеров глазами лида
• Software Architect vs Solution Architect
⚙️ От месяцев к минутам. Как мы применяем машинное обучение для поиска перспективных литий-ионных проводников
Рассказываю, как мы с помощью ML искали литий-ионные проводники и покрытия для катодов. Материалы, потенциалы, немного науки и много практики — без занудства.
Читать...
👩💻 Удаление "псевдослучайных" признаков
Вам дана матрица X
— список списков с числовыми признаками. Один или несколько признаков были случайно сгенерированы, и не несут полезной информации (то есть, они не коррелируют ни с одним другим).
Нужно реализовать функцию drop_random_features(X, threshold=0.05)
, которая вернёт индексы признаков, слабо коррелирующих со всеми остальными (по модулю корреляции Пирсона).
Если признак не коррелирует ни с одним другим больше, чем на threshold
, он считается псевдослучайным и подлежит удалению.
Цель:
Найти признаки, которые не имеют статистической связи с другими и потенциально являются шумом. Возвращать нужно их индексы.
import numpy as npЧитать полностью…
def drop_random_features(X, threshold=0.05):
X = np.array(X)
n_features = X.shape[1]
to_drop = []
for i in range(n_features):
max_corr = 0
for j in range(n_features):
if i != j:
corr = abs(np.corrcoef(X[:, i], X[:, j])[0, 1])
max_corr = max(max_corr, corr)
if max_corr < threshold:
to_drop.append(i)
return to_drop
# Пример использования
np.random.seed(42)
X = np.column_stack([
np.linspace(1, 10, 100), # линейный
np.linspace(10, 1, 100), # обратный
np.random.rand(100), # шум
np.linspace(5, 50, 100) + np.random.rand(100) * 0.1 # почти линейный
])
print(drop_random_features(X, threshold=0.2))
# Ожидаемый результат: [2] — третий признак случайный
⚙️ Google представила Veo 3 Fast — более быструю и дешевую версию Veo 3. Что такое Veo 3 Fast и как ей пользоваться
В этой статье я расскажу, что такое Veo 3 Fast, как получить к ней доступ и использовать, а также покажу примеры видео и выскажу свои соображения.
Читать...
⚙️ Что такое PCA (Principal Component Analysis) в машинном обучении и зачем он используется?
PCA — это метод снижения размерности, который преобразует исходные переменные в новый набор переменных (компонент), сохраняя как можно больше информации. Он помогает ускорить обучение моделей и уменьшить переобучение.
➡️ Пример:
import numpy as np
from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
# Загрузка данных
data = load_iris()
X = data.data
# Применение PCA для снижения размерности до 2 компонент
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)
print(X_pca[:5]) # Преобразованные данные
🗣️ В этом примере PCA снижает размерность данных Iris с 4 до 2 компонент. Это позволяет визуализировать данные и ускорить работу моделей, сохраняя основную информацию.
⚙️ RecSys + DSSM + FPSLoss is all you need
Упрощать и искать похожие детали, очень полезный навык! Предлагаю быстро пробежаться и попробовать найти ту самую серебряную пулю в RecSys.
Читать...
⚙️ Взлом AI Assistant через… философию?
Разбирается философский джейлбрейк LLM: модель через саморефлексию перестаёт воспринимать фильтры как обязательные. Без багов, без хака — просто философия.
Читать...
👩💻 Подсчёт количества слов в строке
Напишите функцию, которая принимает строку и возвращает словарь, где ключами являются слова из строки, а значениями — количество их вхождений. Игнорируйте регистр и знаки препинания.
Пример:
text = "Hello, world! Hello Python world."
result = count_words(text)
print(result)
# Ожидаемый результат: {'hello': 2, 'world': 2, 'python': 1}
import reЧитать полностью…
from collections import Counter
def count_words(text):
# Убираем знаки препинания и приводим к нижнему регистру
words = re.findall(r'\b\w+\b', text.lower())
# Подсчитываем количество вхождений каждого слова
return Counter(words)
# Пример использования:
text = "Hello, world! Hello Python world."
result = count_words(text)
print(result)
# Ожидаемый результат: {'hello': 2, 'world': 2, 'python': 1}
👩💻 Парсинг и подсчёт количества слов в текстовом файле
Напишите функцию на Python, которая принимает путь к текстовому файлу и возвращает словарь с подсчётом количества уникальных слов. Слова должны сравниваться без учёта регистра, а знаки препинания должны быть удалены.
Пример:
# Содержимое файла example.txt:
# "Hello, world! This is a test. Hello again."
result = count_words_in_file("example.txt")
print(result)
# Ожидаемый результат:
# {'hello': 2, 'world': 1, 'this': 1, 'is': 1, 'a': 1, 'test': 1, 'again': 1}
import stringЧитать полностью…
from collections import Counter
def count_words_in_file(file_path):
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read().lower()
text = text.translate(str.maketrans('', '', string.punctuation))
words = text.split()
return dict(Counter(words))
# Пример использования
result = count_words_in_file("example.txt")
print(result)
🧠 Как нейросети, RL и байесовскую оптимизацию стали использовать на ускорителях заряженных частиц
Как машинное обучение помогает управлять ускорителями частиц? В статье раскрываются примеры применения нейронных сетей, обучения с подкреплением и байесовской оптимизации для стабилизации и настройки пучков частиц.
Читать...
👩💻 Построй визуализацию распределения признаков с автоматической категоризацией
Создайте функцию plot_distributions
, которая принимает DataFrame
и автоматически определяет числовые и категориальные признаки. Затем строит гистограммы или bar-графики в зависимости от типа данных. Это удобно для EDA (исследовательского анализа данных).
Решение задачи🔽
import pandas as pdЧитать полностью…
import matplotlib.pyplot as plt
import seaborn as sns
def plot_distributions(df, max_categories=10):
for column in df.columns:
plt.figure(figsize=(6, 4))
if pd.api.types.is_numeric_dtype(df[column]):
sns.histplot(df[column].dropna(), kde=True)
plt.title(f'Гистограмма: {column}')
elif df[column].nunique() <= max_categories:
df[column].value_counts().plot(kind='bar')
plt.title(f'Категории: {column}')
else:
print(f'Пропущен {column}: слишком много уникальных категорий')
continue
plt.tight_layout()
plt.show()
# Пример использования
df = pd.DataFrame({
'age': [23, 45, 31, 35, 62, 44, 23],
'gender': ['male', 'female', 'female', 'male', 'male', 'female', 'female'],
'income': [40000, 50000, 45000, 52000, 61000, 48000, 46000]
})
plot_distributions(df)
👩💻 Постройте простую модель классификации с использованием scikit-learn
Создайте модель на датасете Iris, обучите классификатор KNeighborsClassifier
и сделайте предсказание. Это классическая задача для первых шагов в машинном обучении.
Решение задачи🔽
from sklearn.datasets import load_irisЧитать полностью…
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score
# Загружаем данные
iris = load_iris()
X, y = iris.data, iris.target
# Делим на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Обучаем модель
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)
# Предсказание
y_pred = model.predict(X_test)
# Оценка качества
print(f"Точность: {accuracy_score(y_test, y_pred):.2f}")
⚙️ Прогнозирование исходов футбольных матчей в реальном времени с помощью байесовской модели
Показываю, как модель с динамической силой команд предсказывает исходы матчей лучше классики. Не угадываю счёт, но выигрываю на ставках. У букмекеров шансы тают.
Читать...
⚙️ Что такое logging
в Python?logging
— это встроенный модуль Python для создания логов, которые помогают отлаживать и мониторить работу приложений.
➡️ Пример:
import logging
# Настройка базового уровня логирования
logging.basicConfig(level=logging.INFO)
# Создание лога
logging.info("Приложение запущено")
logging.warning("Это предупреждение!")
logging.error("Произошла ошибка")
🗣️ В этом примере модуль logging создаёт сообщения разного уровня важности. Логирование позволяет отслеживать работу приложений и находить проблемы в коде.
⚡️Пошаговый план: как стать аналитиком данных в 2025
Хотите попасть в аналитику, но теряетесь в море информации и не понимаете, какие навыки действительно важны? Боитесь, что без опыта вас не возьмут на работу? И да, ещё один популярный вопрос — а что, если мне 30/40/50+ лет?
Андрон Алексанян — эксперт по аналитике с 8-летним опытом и по совместительству CEO Simulative — покажет рабочие схемы и чёткий план, как устроиться в аналитику быстрее, даже если у вас нет опыта
Что будет на вебинаре?
🟠 Разберёте полный роадмап: что учить, в каком порядке, до какого уровня;
🟠 Лайфхаки трудоустройства:
— покажут реальные примеры, как оформить резюме и портфолио, чтобы привлекать внимание;
— обсудите, какие отклики работают, а какие сразу отправляют в корзину;
— изнанка найма: инсайдерский взгляд на процессы отбора
🟠 Практические техники для новичков: разберёте, как компенсировать недостаток опыта и быстро закрывать пробелы в знаниях
🕗 Важно досмотреть вебинар до конца, чтобы получить бонус от Simulative, который поможет бустануть карьеру
😶Зарегистрироваться на бесплатный вебинар
⚙️ ИИ-агенты в современных IT-решениях
Разбирался, как ИИ «собирается» нас всех заменить. Спойлер: не спешит. Но уже сейчас кое-что делает лучше нас — и это не только котиков генерировать.
Читать...
🔥 Самые интересные статьи за последние дни:
• Реализация подобия Apple Vision Pro
• Почему LLM так плохо играют в шахматы (и что с этим делать)
• LLM будут врать вечно
• Как мы создали LLM-модель Cotype Nano
• Человек и LLM: как построить метрики для оценки моделей
⚙️ Как проверять ИИ гипотезы быстро и дешево – гайд в CRISP-DM Light фреймворк
Рассказывается про CRISP-DM Light — фреймворк, который помогает быстро проверять ML-гипотезы и не сливать бюджеты впустую. Меньше бюрократии, больше пользы — и шанс дойти до прода.
Читать...
🎯 Хочешь стать уверенным специалистом в ИИ и машинном обучении?
Открой дверь в профессию будущего вместе с магистратурой ИТМО «Проектирование и разработка систем искусственного интеллекта»!
🔍 Что тебя ждёт:
Ты не просто изучишь теорию — ты научишься создавать полноценные ИИ-продукты, работать с современными ML-инструментами и станешь ключевым игроком в команде разработки сложных высоконагруженных систем.
🧠 В программе:
• формирование и анализ бизнес-требований к ИИ-системам;
• интеграция методов машинного обучения в реальные продукты;
• проектирование архитектур ML-систем, включая инференс и мониторинг;
• освоение инструментов MLFlow, Airflow, DVC, TensorBoard, ClearML и др.
👨🏫 Преподаватели — практики из индустрии, а среди партнёров программы — MTS, Ecom.Tech, Nexign, Россети, Росатом.
📈 Кем ты сможешь стать:
• архитектором ИИ-систем (AI Architect);
• тимлидом команды машинного обучения (ML Team Lead);
• менеджером ИИ-проектов (ML Project Manager).
🎓 26 бюджетных мест и возможность поступить дистанционно — не упусти шанс!
📌 Подробнее о программе и подача документов по ссылке:
https://abit.itmo.ru/program/master/ai_systems/
⚙️ Опробовал новую Gemini 2.5 Pro в написании текстов: вот, что получилось
Прогнал обновлённую Gemini 2.5 Pro через свои любимые промпты — пишет цепко, стройно, но местами логика буксует. Внутри — 3 примера и разбор полётов.
Читать...
👩💻 Поиск оптимального разбиения признака по энтропии (ID3-style)
У вас есть бинарная целевая переменная y
(список из 0 и 1) и числовой признак x
(такой же длины). Нужно реализовать функцию best_split(x, y)
, которая найдёт такое значение признака, при разделении по которому (меньше/больше) будет максимально уменьшена энтропия классов.
Иными словами, нужно найти лучший threshold
, при котором данные делятся на две группы по x
, и у этих групп наименьшая средняя энтропия. Это базовая операция в построении деревьев решений, например, в алгоритме ID3.
Цель:
Вернуть threshold, который даёт наилучшее (наименьшее) значение средневзвешенной энтропии.
import numpy as npЧитать полностью…
def entropy(labels):
if len(labels) == 0:
return 0
p = np.bincount(labels) / len(labels)
return -np.sum([pi * np.log2(pi) for pi in p if pi > 0])
def best_split(x, y):
x = np.array(x)
y = np.array(y)
thresholds = sorted(set(x))
best_entropy = float('inf')
best_thresh = None
for t in thresholds:
left_mask = x <= t
right_mask = x > t
left_entropy = entropy(y[left_mask])
right_entropy = entropy(y[right_mask])
w_left = np.sum(left_mask) / len(x)
w_right = 1 - w_left
avg_entropy = w_left * left_entropy + w_right * right_entropy
if avg_entropy < best_entropy:
best_entropy = avg_entropy
best_thresh = t
return best_thresh
# Пример использования
x = [2, 4, 6, 8, 10, 12]
y = [0, 0, 1, 1, 1, 1]
print(best_split(x, y))
# Ожидаемый результат: значение между 4 и 6 (например, 6), так как оно лучше всего делит классы
🔥 Самые интересные статьи за последние дни:
• о3 теснит программистов? Как OpenAI снова всех удивила
• AI, который всё за нас решит
• Второе пришествие мейнфреймов. Всё больше компаний хотят запускать ИИ у себя в офисе
• Обзор на разнообразные интерфейсы Stable Diffusion. Automatic1111 — не одинок
⚙️ Подбираем лучший механизм аппаратной конкурентности для машинного обучения на ЦП
Покажу, как в Firefox задействовать несколько потоков в логическом выводе с помощью SharedArrayBuffer и добиться параллельной обработки задач ИИ в WASM/JS.
Читать...
📅 Заводи «дневник экспериментов»
Пробуешь новую технологию, библиотеку или архитектурный подход — и спустя пару месяцев не можешь вспомнить, что из этого реально сработало.
👉 Совет: после каждого эксперимента фиксируй результат: что делал, какой был эффект, где пригодилось, где нет. Это твоя личная карта развития, а не хаотичный список «когда-то пробовал и вроде норм».
🤖 Возможности LLM и RAG на примере реализации бота для поддержки клиентов
Техподдержка — важный контакт с клиентами, но небольшие отделы не всегда справляются с нагрузкой. В статье обсуждаются чат-боты и нейросети (LLM и RAG) для автоматизации процессов и улучшения работы поддержки.
Читать...