Обучение модели

Сквозное машинное обучение

Joshua Stapleton

Machine Learning Engineer

Бритва Оккама

  • Наилучшее объяснение — наипростейшее
  • При выборе модели отдавайте предпочтение более простым

Пример, иллюстрирующий принцип бритвы Оккама

Сквозное машинное обучение

Варианты моделей

Логистическая регрессия

  • Находит границу решения между классами
  • sklearn.linear_model.LogisticRegression

Метод опорных векторов

  • Находит гиперплоскость для разделения классов
  • sklearn.svm.SVC

Дерево решений

  • Находит простые правила классификации данных
  • sklearn.tree.DecisionTreeClassifier

Случайный лес

  • Объединяет несколько деревьев решений
  • sklearn.ensemble.RandomForestClassifier
Сквозное машинное обучение

Другие модели

Модели глубокого обучения

  • Нейронные сети
  • Свёрточные нейронные сети
  • Generative Pretrained Transformer (GPT)

K ближайших соседей (KNN)

  • Алгоритм обучения с учителем

XGBoost

Сквозное машинное обучение

Принципы обучения

Модель:

  • Использует очищенный набор данных с обработанными признаками
  • Обучается на закономерностях в обучающих данных
  • Цель — предсказать наличие или отсутствие болезни сердца

Принципы:

  • Модель должна обобщаться на новые данные (вне обучающей выборки)
  • Часть данных «отложите» для проверки модели после обучения
  • Соотношение обучающей/тестовой выборки: обычно 70/30 или 80/20
  • Можно использовать sklearn.model_selection.train_test_split
Сквозное машинное обучение

Обучение модели

# Importing necessary libraries
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# Split the data into training and testing sets (80:20) X_train, X_test, y_train, y_test = train_test_split(features, heart_disease_y, test_size=0.2, random_state=42)
# Define the models logistic_model = LogisticRegression(max_iter=200)
# Train the model logistic_model.fit(X_train, y_train)
Сквозное машинное обучение

Получение предсказаний модели

# Jane Doe's health data, for example: [age, cholesterol level, blood pressure, etc.]
jane_doe_data = [45, 230, 120, ...]

# Reshape the data to 2D, because scikit-learn expects a 2D array-like input jane_doe_data = jane_doe_data.reshape(1, -1)
# Use the model to predict Jane's heart disease diagnosis probabilities jane_doe_probabilities = logistic_model.predict_proba(jane_doe_data) jane_doe_prediction = logistic_model.predict(jane_doe_data)
Сквозное машинное обучение

Получение предсказаний модели (продолжение)

# Print the probabilities
print(f"Jane Doe's predicted probabilities: {jane_doe_probabilities[0]}")
print(f"Jane Doe's predicted health condition: {jane_doe_prediction[0]}")
Jane Doe's predicted health condition probabilities: [0.2 0.8]

Jane Doe's predicted health condition: 1
Сквозное машинное обучение

Давайте потренируемся!

Сквозное машинное обучение

Preparing Video For Download...