Какой из следующих методов может быть использован для улучшения работы дерева решений на несбалансированных данных?
#junior
#junior
Anonymous Quiz
34%
Использование ансамблевых методов, таких как случайный лес (random forest)
9%
Увеличение размера обучающей выборки
45%
Использование взвешенных функций ошибки
11%
Использование алгоритмов обрезки дерева
👍13❤2🥰1
В PyTorch функции потерь могут быть реализованы путем создания подкласса класса
nn.Module
и переопределения метода forward
. Метод forward
принимает на вход прогнозируемый выход и фактический выход и возвращает значение потерь.Приведем пример кода:
import torch
import torch.nn as nn
class CustomLoss(nn.Module):
def __init__(self):
super(MyLoss, self).__init__()
def forward(self, output, target):
loss = ... # compute the loss
return loss
Теперь, чтобы использовать функцию потерь, необходимо инициализировать ее и передать в качестве аргумента параметру
criterion
оптимизатора в цикле обучения.
model = ...
optimizer = ...
criterion = CustomLoss()
# цикл обучения
for epoch in range(num_epochs):
optimizer.zero_grad()
outputs = model(data)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
...
#pytorch #junior
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥5
— Сигмоида
Нелинейна по своей природе, поэтому комбинация таких функций производит тоже нелинейную функцию. Так что она хорошо подходит для комбинации слоёв. Чаще всего применяется в задачах бинарной классификации, где нужно предсказать вероятность принадлежности к одному из 2 классов.
— Tanh
Гиперболический тангенс — это скорректированная сигмоидная функция. Стоит отметить, что градиент тангенциальной функции больше, чем у сигмоиды; она растёт быстрее. Активное используется в рекуррентных сетях, вероятностных моделях и т.д.
— ReLU
Имеет низкую вычислительную сложность, устойчива к переобучению. Область допустимых значений ReLu —
[0, inf)
, то есть активация может "взорваться" от больших значений. Широко применяется в глубоких нейронных сетях благодаря простоте и отсутствию затухающего градиента — Leaky ReLU
Модификация ReLU, призвана решить проблему "умирающей ReLU". Используется в нейронных сетях для введения нелинейности в выходные данные каждого нейрона.
#junior
@machinelearning_interview
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31❤4🔥4
⚙️ Задача по машинному обучению: Классификация текстовых отзывов с использованием современных LLM.
Условие:
Дана выборка текстовых отзывов о продуктах с метками настроения (позитивный/негативный).
Необходимо:
1️⃣ Разделить данные на обучающую и тестовую выборки (80/20)
2️⃣ Обучить классификатор на основе Claude 3
3️⃣ Сравнить качество с GPT-4 и Gemini 1.5
4️⃣ Оценить точность и время обработки
Решение:
Пишите свои варианты решения в комментариях👇
@machinelearning_interview
#junior
Условие:
Дана выборка текстовых отзывов о продуктах с метками настроения (позитивный/негативный).
Необходимо:
1️⃣ Разделить данные на обучающую и тестовую выборки (80/20)
2️⃣ Обучить классификатор на основе Claude 3
3️⃣ Сравнить качество с GPT-4 и Gemini 1.5
4️⃣ Оценить точность и время обработки
Решение:
import anthropic
import openai
import google.generativeai as genai
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import time
# Пример данных (в реальной задаче - загрузка датасета)
reviews = ["Отличный товар, всем рекомендую!",
"Ужасное качество, не покупайте..."]
labels = [1, 0] # 1=позитивный, 0=негативный
# Разделение данных
X_train, X_test, y_train, y_test = train_test_split(reviews, labels, test_size=0.2)
def classify_with_claude(text):
client = anthropic.Anthropic(api_key="your_api_key")
response = client.messages.create(
model="claude-3-opus-20240229",
max_tokens=100,
messages=[{"role": "user", "content": f"Классифицируй отзыв: '{text}'. Ответь только '1' (позитивный) или '0' (негативный)"}]
)
return int(response.content[0].text)
# Аналогичные функции для GPT-4 и Gemini...
# Тестирование
models = {"Claude 3": classify_with_claude,
"GPT-4": classify_with_gpt4,
"Gemini 1.5": classify_with_gemini}
for name, model in models.items():
start = time.time()
preds = [model(text) for text in X_test]
elapsed = time.time() - start
acc = accuracy_score(y_test, preds)
print(f"{name}: Accuracy = {acc:.2f}, Time = {elapsed:.1f} сек")
Пишите свои варианты решения в комментариях👇
@machinelearning_interview
#junior
🤣22❤7👍6🥰4😁2