सभी चुनौतियाँ
मध्यम 0 हल किए गए 0% स्वीकृति

Linear Regression with Gradient Descent

Learn the slope and intercept of a line by repeatedly stepping down the mean squared error.

आप क्या सीखेंगे

  • Minimize mean squared error step by step
  • Compute gradients for slope and intercept
  • See how the learning rate affects training

समस्या

अनुवाद दिखाएँ

Instead of a formula, train the line y = w × x + b with batch gradient descent on the mean squared error MSE = Σ(w × x + b - y)² / n.

Start with w = 0 and b = 0. In each epoch, using all points:

  1. errorᵢ = w × xᵢ + b - yᵢ
  2. dw = (2 / n) × Σ errorᵢ × xᵢ and db = (2 / n) × Σ errorᵢ
  3. w ← w - learning_rate × dw and b ← b - learning_rate × db (both computed from the same errors)

Implement train_linear_regression(xs, ys, learning_rate, epochs).

Input

xs, ys: The data points (same length).

learning_rate, epochs: The step size and the number of updates.

Output

Return [w, b] after training.

सीमाएँ

1 ≤ number of points ≤ 1,000, 0 ≤ epochs ≤ 10,000

0 < learning_rate ≤ 1

-100 ≤ each value ≤ 100

उदाहरण

उदाहरण 1
इनपुट:
xs = [1.0, 2.0]
ys = [2.0, 4.0]
epochs = 1
learning_rate = 0.1

अपेक्षित आउटपुट:
expected = [1.0, 0.6]
इनपुट:
std::vector<double> xs = {1.0, 2.0};
std::vector<double> ys = {2.0, 4.0};
long long epochs = 1;
double learning_rate = 0.1;

अपेक्षित आउटपुट:
std::vector<double> expected = {1.0, 0.6};
इनपुट:
double[] xs = new double[] {1.0, 2.0};
double[] ys = new double[] {2.0, 4.0};
long epochs = 1;
double learning_rate = 0.1;

अपेक्षित आउटपुट:
double[] expected = new double[] {1.0, 0.6};

व्याख्या

With w = b = 0 the errors are -2 and -4. dw = (2 / 2) × (-2×1 - 4×2) = -10 and db = (2 / 2) × (-2 - 4) = -6, so w = 0 - 0.1 × (-10) = 1 and b = 0 - 0.1 × (-6) = 0.6. Result: [1, 0.6].

उदाहरण 2
इनपुट:
xs = [1.0, 2.0, 3.0]
ys = [3.0, 5.0, 7.0]
epochs = 2000
learning_rate = 0.05

अपेक्षित आउटपुट:
expected = [2.0, 1.0]
इनपुट:
std::vector<double> xs = {1.0, 2.0, 3.0};
std::vector<double> ys = {3.0, 5.0, 7.0};
long long epochs = 2000;
double learning_rate = 0.05;

अपेक्षित आउटपुट:
std::vector<double> expected = {2.0, 1.0};
इनपुट:
double[] xs = new double[] {1.0, 2.0, 3.0};
double[] ys = new double[] {3.0, 5.0, 7.0};
long epochs = 2000;
double learning_rate = 0.05;

अपेक्षित आउटपुट:
double[] expected = new double[] {2.0, 1.0};

व्याख्या

The data lies on y = 2x + 1. After 2,000 epochs gradient descent has converged to w = 2 and b = 1, the same answer as the least squares formula.

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।