Тайлер Венс

Алгоритмы машинного обучения: базовый курс


Скачать книгу

примера возьмем задачу классификации текста, где у нас есть большое количество неразмеченных текстов, а метки есть только для небольшой части. Мы можем использовать модель самообучения, которая будет обучаться на небольшом наборе размеченных данных, а затем применить её для прогнозирования меток для неразмеченных текстов, которые затем добавляются в обучающий процесс.

      Пример простого кода для этой задачи:

      ```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

      – Проблемы переобучения

      Линейные модели занимают центральное место в машинном обучении, поскольку они являются одними из самых простых и интерпретируемых методов анализа данных. Несмотря на свою кажущуюся простоту, эти модели обладают