Какой матричной формулой находятся оптимальные веса w в задаче линейной регрессии?
Anonymous Quiz
8%
w = X^(-1) * y
17%
w = X.T * y
67%
w = (X.T @ X)^(-1) @ X.T @ y
8%
w = X @ X.T @ y
... которым описывается изображенная разделяющая линия в соответствии с выражением:
x1, y1 = -3, 1
x2, y2 = 3, 5
Пока что вам задание подставить значения и получить готовое уравнение прямой:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Напомню, что в прошлый раз мы нашли точки:
Так вот, подставляем первую точку (-3, 1)
Please open Telegram to view this post
VIEW IN TELEGRAM
Какой из векторов весов НЕ соответствует уравнению прямой y = (2/3)x + 3?
Anonymous Quiz
44%
w = [1, 1, -1]
22%
w = [6, 4/3, -2]
22%
w = [3, 2/3, -1]
11%
w = [-9, -2, 3]
Что будет после выполнения?
import numpy as np a = np.array([1, 2, 3]) b = a b[0] = 99
import numpy as np a = np.array([1, 2, 3]) b = a b[0] = 99
Anonymous Quiz
23%
a = [1, 2, 3]
69%
a = [99, 2, 3]
0%
a = [0, 2, 3]
8%
Ошибка, нельзя присваивать массивы напрямую
⚙️ На каждой итерации берёт один случайный пример из датасета и делает шаг в направлении уменьшения ошибки.
Дальше будем считать градиенты, а пока спать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
w₁ — вес признака x₁
w₂ — вес признака x₂
w₀ — свободный член (смещение, пересечение, как вам удобно)
🧑💻 И вместе они задают уравнение плоскости, а в нашем случае — просто прямую на плоскости: x₁, x₂.‼️ Кстати, b мы итак можем определить чисто по графику, оно будет равно 3 (точка, где прямая пересекает ось)
w₁ = -3
w₂ = -2/3
w₀ = 1
Please open Telegram to view this post
VIEW IN TELEGRAM
x1, y1 = -3, 1
x2, y2 = 3, 5
delta_x = x2 - x1
delta_y = y2 - y1
# Ax + By + C = 0
A = delta_y
B = -delta_x
C = delta_x * y1 - delta_y * x1
w = [C, A, B]
x1, y1 = -3, 1
x2, y2 = 3, 5
delta_x = x2 - x1 # 6
delta_y = y2 - y1 # 4
# Ax + By + C = 0
A = delta_y # A = 4
B = -delta_x # B = -6
C = delta_x * y1 - delta_y * x1 #Будет равно 18
w = [C, A, B]
школьным образом
Please open Telegram to view this post
VIEW IN TELEGRAM
x1, y1 = -3, 5
x2, y2 = 7, 5
delta_x = x2 - x1
delta_y = y2 - y1
# Ax + By + C = 0
A = delta_y
B = -delta_x
C = delta_x * y1 - delta_y * x1
w = [C, A, B]
print(w)
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1 3 2 2
Please open Telegram to view this post
VIEW IN TELEGRAM
x_test = [(5, -3), (-3, 8), (3, 6), (0, 0), (5, 3), (-3, -1), (-3, 3)]
... где x = [1, x₁, x₂] — вектор признаков (координат) объекта выборки, дополненный первой единицей для параметра w₀.
Скоро продолжим
Please open Telegram to view this post
VIEW IN TELEGRAM
w = np.array([-33, 9, 13]) # [свободный член, вес при x1, вес при x2]
a_sign = lambda x, w: -1 if np.dot(x, w) < 0 else 1
x_test_new = np.array([[1, x1, x2] for x1, x2 in x_test])
predict = [a_sign(x, w) for x in x_test_new]
Please open Telegram to view this post
VIEW IN TELEGRAM