Векторизація логістичної регресії: навчаємо машини думати швидше

текст перекладу
Колись ви замислювались, як комп'ютери роблять прогнози? Чи то розпізнавання собаки на фотографії, чи рекомендація вашої наступної серії на Netflix, одне з основних інструментів — це логістична регресія. Але коли набори даних стають більшими, обробка кожної одиниці даних по черзі стає надто повільною. Ось тут на допомогу приходить векторизація.

Давайте розглянемо, що таке векторизація логістичної регресії і чому це важливо.

Що таке логістична регресія?

Логістична регресія — це спосіб робити прогнози, особливо для питань, на які є дві відповіді:

  • Це собака на картинці?
  • Чи буде завтра дощ?
  • Чи є цей лист спамом?

Модель приймає вхідні дані (X), поєднує їх з вагами (w) і зміщенням (b) і видає ймовірність, використовуючи сигмоїдну функцію:

pic

Рівняння сигмоїди

де:

z = w^T. X + b

σ(z) обмежує результат від 0 (ні) до 1 (так).

Чому векторизація?

Уявіть, що ви навчаєте машину класифікувати зображення собак. Якщо у вас є:

  • 10,000 зображень
  • Кожне зображення має 100 ознак (наприклад, яскравість чи контраст)

Обробка одного зображення за раз буде надто повільною. Замість цього ми можемо обробити всі зображення одночасно, використовуючи матричні операції. Векторизація дозволяє комп'ютеру ефективно обчислювати прогнози для кількох прикладів паралельно.

Векторизована формула

Для одного прикладу:

z = w1⋅x1 + w2⋅x2 + … + wn⋅xn + b

Для кількох прикладів:

Z = w^T. X + b

Тут:

  • X — це матриця, де рядки — це ознаки, а стовпці — приклади.
  • w^T — це транспонований вектор ваг.
  • b додається до всіх прикладів одночасно.

Розбір

  1. Вхідні дані (X):
    Уявіть X як електронну таблицю. Кожен стовпець — це приклад (наприклад, зображення), а кожен рядок — ознака (наприклад, яскравість).
  2. Ваги та зміщення (w та b):
    Це як ручки, які налаштовують, скільки кожна ознака важлива для прогнозу, чи є зображення собакою.
  3. Прогнози (Z):
    Поєднуємо X, w та b, щоб отримати сирі припущення для всіх прикладів одночасно.
  4. Ймовірності (σ(Z)):
    Використовуємо сигмоїдну функцію, щоб перетворити сирі припущення в ймовірності (наприклад, 0.8 = 80% шанс, що це собака).

Ось проста реалізація векторизованої логістичної регресії на Python:

import numpy as np  

# Сигмоїдна функція  
def sigmoid(z):  
 return 1 / (1 + np.exp(-z))  

# Дані:   
X = np.array([[0.5, 1.5, 2.5], [1.0, 2.0, 3.0]])  
Y = np.array([[1, 0, 1]]) # Реальні мітки (1 = собака, 0 = не собака)  

# Ініціалізація ваг і зміщення  
w = np.zeros((2, 1)) # Дві ознаки, початкові ваги рівні 0  
b = 0  
n = 0.1 # Швидкість навчання(n)  
epochs = 10 # Кількість ітерацій навчання  

# Цикл навчання  
for epoch in range(epochs):  
 # Крок 1: Обчислення Z   
 Z = np.dot(w.T, X) + b  

 # Крок 2: Застосування сигмоїди  
 Y_hat = sigmoid(Z)  

 # Крок 3: Обчислення вартості (наскільки ми помилилися)  
 cost = -np.mean(Y * np.log(Y_hat) + (1 - Y) * np.log(1 - Y_hat))  

 # Крок 4: Обчислення градієнтів (коригування ваг і зміщення)  
 dw = np.dot(X, (Y_hat - Y).T) / X.shape[1]  
 db = np.sum(Y_hat - Y) / X.shape[1]  

 # Крок 5: Оновлення ваг і зміщення  
 w -= n * dw  
 b -= n * db  

 # Виведення вартості кожної епохи  
 print(f"Epoch {epoch + 1}, Cost: {cost:.2f}")  

# Остаточні ваги та зміщення  
print(" Ваги:", w)  
print(" Зміщення:", b)

Ключові висновки

  1. Векторизація заощаджує час та ресурси обчислення:
    Замість обробки одного прикладу за раз, ви обробляєте багато прикладів одночасно.
  2. Математика проста:
    Все полягає в поєднанні вхідних ознак (X), ваг (w) та зміщення (b) для створення прогнозів.
  3. Логістична регресія потужна:
    Незважаючи на свою простоту, вона є основою для більш складних моделей у машинному навчанні.

Що далі?

Тепер, коли ви зрозуміли векторизовану логістичну регресію, наступним кроком є заглиблення в:

  • Зворотне поширення: Як машина коригує свої ваги.
  • Багатокласова логістична регресія: Прогнозування більше ніж двох категорій.

Залишайтеся з нами, щоб дізнатися більше про те, як машини вчаться! 🙂

Перекладено з: Vectorizing Logistic Regression: Teaching Machines to Think Faster

Leave a Reply

Your email address will not be published. Required fields are marked *