примера возьмем задачу классификации текста, где у нас есть большое количество неразмеченных текстов, а метки есть только для небольшой части. Мы можем использовать модель самообучения, которая будет обучаться на небольшом наборе размеченных данных, а затем применить её для прогнозирования меток для неразмеченных текстов, которые затем добавляются в обучающий процесс.
Пример простого кода для этой задачи:
```python
import numpy as np
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer
# Загрузка данных
newsgroups = fetch_20newsgroups(subset='all')
X = newsgroups.data
y = newsgroups.target
# Разделение данных на размеченные и неразмеченные
X_train, X_unlabeled, y_train, _ = train_test_split(X, y, test_size=0.9, random_state=42)
# Преобразование текста в числовые признаки
vectorizer = CountVectorizer(stop_words='english')
X_train_vec = vectorizer.fit_transform(X_train)
X_unlabeled_vec = vectorizer.transform(X_unlabeled)
# Инициализация модели
model = MultinomialNB()
# Обучение модели на размеченных данных
model.fit(X_train_vec, y_train)
# Прогнозирование для неразмеченных данных
pseudo_labels = model.predict(X_unlabeled_vec)
# Добавление неразмеченных данных с прогнозированными метками в обучающий набор
X_train_combined = np.vstack([X_train_vec.toarray(), X_unlabeled_vec.toarray()])
y_train_combined = np.hstack([y_train, pseudo_labels])
# Дополнительное обучение модели с расширенным набором данных
model.fit(X_train_combined, y_train_combined)
# Оценка качества
accuracy = model.score(X_train_combined, y_train_combined)
print(f'Accuracy: {accuracy:.4f}')
```
Объяснение кода:
1. Загрузка данных: Мы используем набор данных 20 Newsgroups, который содержит текстовые данные, относящиеся к различным новостным группам.
2. Разделение на размеченные и неразмеченные данные: Мы разделяем данные на размеченные (10%) и неразмеченные (90%) данные.
3. Прогнозирование меток для неразмеченных данных: Сначала мы обучаем модель на размеченных данных и используем её для предсказания меток для неразмеченных данных (псевдонаметки).
4. Перенос обучения на расширенный набор: Модель дообучается, используя данные с псевдонаметками, что помогает улучшить её обобщающие способности.
Полусупервизорное обучение представляет собой инструмент, который позволяет эффективно использовать как размеченные, так и неразмеченные данные, что особенно полезно в условиях ограниченности размеченных данных. Существуют различные подходы к полусупервизорному обучению, включая методы графов, самонаблюдения и генеративные модели, которые могут применяться в разных областях, таких как обработка текстов, изображений и биологических данных.
Глава 7. Линейные модели
– Линейная и логистическая регрессия
– Регуляризация: Ridge и Lasso
– Проблемы переобучения
Линейные модели занимают центральное место в машинном обучении, поскольку они являются одними из самых простых и интерпретируемых методов анализа данных. Несмотря на свою кажущуюся простоту, эти модели обладают