This is an R Markdown Notebook. When you execute code within the notebook, the results appear beneath the code.

Try executing this chunk by clicking the Run button within the chunk or by placing your cursor inside it and pressing Cmd+Shift+Enter.


1 a) Hyperplane: 1 + 3X1 - X2 = 0

This equation represents a straight line in a two-dimensional plane. It can be rewritten as:

X2 = 3X1 + 1

This line has a slope of 3 and a y-intercept of 1. It divides the plane into three parts:

On the line: The equation is exactly 1 + 3X1 - X2 = 0.

Above the line: Points where X2 is less than 3X1 + 1. In this region, the expression 1 + 3X1 - X2 is greater than 0.

Below the line: Points where X2 is greater than 3X1 + 1. In this region, the expression 1 + 3X1 - X2 is less than 0.

So, the hyperplane separates the space into two regions: one where the expression is positive and one where it is negative.

(b) Hyperplane: -2 + X1 + 2X2 = 0

This is also a straight line in the two-dimensional space. It can be rewritten as:

X2 = (-X1 + 2) / 2

This line has a slope of -0.5 and a y-intercept of 1. It divides the plane into three parts:

On the line: The equation is exactly -2 + X1 + 2X2 = 0.

Above the line: Points where X2 is greater than (-X1 + 2) / 2. In this region, the expression -2 + X1 + 2X2 is greater than 0.

Below the line: Points where X2 is less than (-X1 + 2) / 2. In this region, the expression -2 + X1 + 2X2 is less than 0.

Again, the hyperplane separates the space into two regions based on whether the expression is positive or negative.

library(ggplot2)

# Create grid of values
x1_vals <- seq(-10, 10, length.out = 400)
x2_vals <- seq(-10, 10, length.out = 400)
grid <- expand.grid(X1 = x1_vals, X2 = x2_vals)

# Calculate the hyperplane values
grid$z1 <- 1 + 3 * grid$X1 - grid$X2
grid$z2 <- -2 + grid$X1 + 2 * grid$X2

# Plot
ggplot(grid, aes(x = X1, y = X2)) +
  # Region for hyperplane 1
  geom_raster(aes(fill = factor(sign(z1))), alpha = 0.3) +
  scale_fill_manual(values = c("-1" = "#add8e6", "1" = "#0000ff"), name = "1 + 3X1 - X2") +
  
  # Region for hyperplane 2 (fixed)
  geom_raster(data = grid, aes(x = X1, y = X2, alpha = factor(sign(z2))), fill = "green") +
  scale_alpha_manual(values = c("1" = 0.2, "-1" = 0.5), guide = FALSE) +
  
  # Add contour lines for both hyperplanes
  geom_contour(aes(z = z1), breaks = 0, color = "blue", size = 1) +
  geom_contour(aes(z = z2), breaks = 0, color = "darkgreen", size = 1) +
  
  labs(title = "Hyperplanes and Regions",
       x = "X1", y = "X2") +
  theme_minimal() +
  coord_fixed()
Warning: The `guide` argument in `scale_*()` cannot be `FALSE`. This was deprecated in ggplot2 3.3.4.
ℹ Please use "none" instead.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.

2) Exploring a Non-Linear Decision Boundary in Two Dimensions

library(ggplot2)

# Create a grid of values
x1_vals <- seq(-5, 5, length.out = 400)
x2_vals <- seq(-5, 10, length.out = 400)
grid <- expand.grid(X1 = x1_vals, X2 = x2_vals)

# Compute the decision value
grid$Z <- (1 + grid$X1)^2 + (2 - grid$X2)^2

# Define points to classify
points <- data.frame(
  X1 = c(0, -1, 2, 3),
  X2 = c(0, 1, 2, 8),
  label = c("(0,0)", "(-1,1)", "(2,2)", "(3,8)")
)
points$class <- ifelse((1 + points$X1)^2 + (2 - points$X2)^2 > 4, "Blue", "Red")

# Plot
ggplot(grid, aes(x = X1, y = X2)) +
  # Fill regions
  geom_raster(aes(fill = Z <= 4), alpha = 0.4) +
  scale_fill_manual(values = c("TRUE" = "#add8e6", "FALSE" = "#ff9999"),
                    labels = c("<= 4", "> 4"),
                    name = "Decision Value") +
  
  # Contour line where Z = 4
  geom_contour(aes(z = Z), breaks = 4, color = "black", size = 1) +
  
  # Points and labels
  geom_point(data = points, aes(x = X1, y = X2, color = class), size = 3) +
  geom_text(data = points, aes(label = label), hjust = -0.3, vjust = -0.3, size = 3.5) +
  scale_color_manual(values = c("Red" = "red", "Blue" = "blue")) +
  
  # Labels and theme
  labs(title = "Non-linear Decision Boundary",
       subtitle = "(1 + X1)^2 + (2 - X2)^2 = 4",
       x = "X1", y = "X2") +
  coord_fixed() +
  theme_minimal()

(a) Curve: (1 + X1)^2 + (2 - X2)^2 = 4

This equation represents a circle in two-dimensional space. The center of the circle is at the point (-1, 2), and the radius is 2 units. The curve itself is the set of all points that lie exactly 2 units away from the center.

(b) Region interpretation

The circle divides the plane into two regions: Inside the circle: This includes all points where (1 + X1)^2 + (2 - X2)^2 is less than or equal to 4. Outside the circle: This includes all points where (1 + X1)^2 + (2 - X2)^2 is greater than 4.

(c) Classification of points

Suppose we classify a point as blue if (1 + X1)^2 + (2 - X2)^2 is greater than 4, and red otherwise. Then:

The point (0, 0) is classified as blue, because the value is 5. The point (-1, 1) is classified as red, because the value is 1. The point (2, 2) is classified as blue, because the value is 9. The point (3, 8) is classified as blue, because the value is 52.

(d) Linearity in transformed variables

Although the decision boundary (the circle) is not a straight line when viewed in terms of the original variables X1 and X2, it becomes a linear boundary when we use transformed variables:

  1. X1
  2. X1 squared
  3. X2
  4. X2 squared

if we include both the original variables and their squares as new features, then the equation becomes a linear combination of those features. So, the boundary is non-linear in the original space but linear in the transformed feature space.

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKVGhpcyBpcyBhbiBbUiBNYXJrZG93bl0oaHR0cDovL3JtYXJrZG93bi5yc3R1ZGlvLmNvbSkgTm90ZWJvb2suIFdoZW4geW91IGV4ZWN1dGUgY29kZSB3aXRoaW4gdGhlIG5vdGVib29rLCB0aGUgcmVzdWx0cyBhcHBlYXIgYmVuZWF0aCB0aGUgY29kZS4gCgpUcnkgZXhlY3V0aW5nIHRoaXMgY2h1bmsgYnkgY2xpY2tpbmcgdGhlICpSdW4qIGJ1dHRvbiB3aXRoaW4gdGhlIGNodW5rIG9yIGJ5IHBsYWNpbmcgeW91ciBjdXJzb3IgaW5zaWRlIGl0IGFuZCBwcmVzc2luZyAqQ21kK1NoaWZ0K0VudGVyKi4gCgotLS0tCgojIDEgYSkgSHlwZXJwbGFuZTogMSArIDNYMSAtIFgyID0gMAoKVGhpcyBlcXVhdGlvbiByZXByZXNlbnRzIGEgc3RyYWlnaHQgbGluZSBpbiBhIHR3by1kaW1lbnNpb25hbCBwbGFuZS4gSXQgY2FuIGJlIHJld3JpdHRlbiBhczoKClgyID0gM1gxICsgMQoKVGhpcyBsaW5lIGhhcyBhIHNsb3BlIG9mIDMgYW5kIGEgeS1pbnRlcmNlcHQgb2YgMS4gSXQgZGl2aWRlcyB0aGUgcGxhbmUgaW50byB0aHJlZSBwYXJ0czoKCk9uIHRoZSBsaW5lOiBUaGUgZXF1YXRpb24gaXMgZXhhY3RseSAxICsgM1gxIC0gWDIgPSAwLgoKQWJvdmUgdGhlIGxpbmU6IFBvaW50cyB3aGVyZSBYMiBpcyBsZXNzIHRoYW4gM1gxICsgMS4gSW4gdGhpcyByZWdpb24sIHRoZSBleHByZXNzaW9uIDEgKyAzWDEgLSBYMiBpcyBncmVhdGVyIHRoYW4gMC4KCkJlbG93IHRoZSBsaW5lOiBQb2ludHMgd2hlcmUgWDIgaXMgZ3JlYXRlciB0aGFuIDNYMSArIDEuIEluIHRoaXMgcmVnaW9uLCB0aGUgZXhwcmVzc2lvbiAxICsgM1gxIC0gWDIgaXMgbGVzcyB0aGFuIDAuCgpTbywgdGhlIGh5cGVycGxhbmUgc2VwYXJhdGVzIHRoZSBzcGFjZSBpbnRvIHR3byByZWdpb25zOiBvbmUgd2hlcmUgdGhlIGV4cHJlc3Npb24gaXMgcG9zaXRpdmUgYW5kIG9uZSB3aGVyZSBpdCBpcyBuZWdhdGl2ZS4KCiMgKGIpIEh5cGVycGxhbmU6IC0yICsgWDEgKyAyWDIgPSAwCgpUaGlzIGlzIGFsc28gYSBzdHJhaWdodCBsaW5lIGluIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UuIEl0IGNhbiBiZSByZXdyaXR0ZW4gYXM6CgpYMiA9ICgtWDEgKyAyKSAvIDIKClRoaXMgbGluZSBoYXMgYSBzbG9wZSBvZiAtMC41IGFuZCBhIHktaW50ZXJjZXB0IG9mIDEuIEl0IGRpdmlkZXMgdGhlIHBsYW5lIGludG8gdGhyZWUgcGFydHM6CgpPbiB0aGUgbGluZTogVGhlIGVxdWF0aW9uIGlzIGV4YWN0bHkgLTIgKyBYMSArIDJYMiA9IDAuCgpBYm92ZSB0aGUgbGluZTogUG9pbnRzIHdoZXJlIFgyIGlzIGdyZWF0ZXIgdGhhbiAoLVgxICsgMikgLyAyLiBJbiB0aGlzIHJlZ2lvbiwgdGhlIGV4cHJlc3Npb24gLTIgKyBYMSArIDJYMiBpcyBncmVhdGVyIHRoYW4gMC4KCkJlbG93IHRoZSBsaW5lOiBQb2ludHMgd2hlcmUgWDIgaXMgbGVzcyB0aGFuICgtWDEgKyAyKSAvIDIuIEluIHRoaXMgcmVnaW9uLCB0aGUgZXhwcmVzc2lvbiAtMiArIFgxICsgMlgyIGlzIGxlc3MgdGhhbiAwLgoKQWdhaW4sIHRoZSBoeXBlcnBsYW5lIHNlcGFyYXRlcyB0aGUgc3BhY2UgaW50byB0d28gcmVnaW9ucyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBleHByZXNzaW9uIGlzIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLgoKYGBge3J9CmxpYnJhcnkoZ2dwbG90MikKCiMgQ3JlYXRlIGdyaWQgb2YgdmFsdWVzCngxX3ZhbHMgPC0gc2VxKC0xMCwgMTAsIGxlbmd0aC5vdXQgPSA0MDApCngyX3ZhbHMgPC0gc2VxKC0xMCwgMTAsIGxlbmd0aC5vdXQgPSA0MDApCmdyaWQgPC0gZXhwYW5kLmdyaWQoWDEgPSB4MV92YWxzLCBYMiA9IHgyX3ZhbHMpCgojIENhbGN1bGF0ZSB0aGUgaHlwZXJwbGFuZSB2YWx1ZXMKZ3JpZCR6MSA8LSAxICsgMyAqIGdyaWQkWDEgLSBncmlkJFgyCmdyaWQkejIgPC0gLTIgKyBncmlkJFgxICsgMiAqIGdyaWQkWDIKCiMgUGxvdApnZ3Bsb3QoZ3JpZCwgYWVzKHggPSBYMSwgeSA9IFgyKSkgKwogICMgUmVnaW9uIGZvciBoeXBlcnBsYW5lIDEKICBnZW9tX3Jhc3RlcihhZXMoZmlsbCA9IGZhY3RvcihzaWduKHoxKSkpLCBhbHBoYSA9IDAuMykgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIi0xIiA9ICIjYWRkOGU2IiwgIjEiID0gIiMwMDAwZmYiKSwgbmFtZSA9ICIxICsgM1gxIC0gWDIiKSArCiAgCiAgIyBSZWdpb24gZm9yIGh5cGVycGxhbmUgMiAoZml4ZWQpCiAgZ2VvbV9yYXN0ZXIoZGF0YSA9IGdyaWQsIGFlcyh4ID0gWDEsIHkgPSBYMiwgYWxwaGEgPSBmYWN0b3Ioc2lnbih6MikpKSwgZmlsbCA9ICJncmVlbiIpICsKICBzY2FsZV9hbHBoYV9tYW51YWwodmFsdWVzID0gYygiMSIgPSAwLjIsICItMSIgPSAwLjUpLCBndWlkZSA9IEZBTFNFKSArCiAgCiAgIyBBZGQgY29udG91ciBsaW5lcyBmb3IgYm90aCBoeXBlcnBsYW5lcwogIGdlb21fY29udG91cihhZXMoeiA9IHoxKSwgYnJlYWtzID0gMCwgY29sb3IgPSAiYmx1ZSIsIHNpemUgPSAxKSArCiAgZ2VvbV9jb250b3VyKGFlcyh6ID0gejIpLCBicmVha3MgPSAwLCBjb2xvciA9ICJkYXJrZ3JlZW4iLCBzaXplID0gMSkgKwogIAogIGxhYnModGl0bGUgPSAiSHlwZXJwbGFuZXMgYW5kIFJlZ2lvbnMiLAogICAgICAgeCA9ICJYMSIsIHkgPSAiWDIiKSArCiAgdGhlbWVfbWluaW1hbCgpICsKICBjb29yZF9maXhlZCgpCgpgYGAKCgojIDIpIEV4cGxvcmluZyBhIE5vbi1MaW5lYXIgRGVjaXNpb24gQm91bmRhcnkgaW4gVHdvIERpbWVuc2lvbnMKCmBgYHtyfQpsaWJyYXJ5KGdncGxvdDIpCgojIENyZWF0ZSBhIGdyaWQgb2YgdmFsdWVzCngxX3ZhbHMgPC0gc2VxKC01LCA1LCBsZW5ndGgub3V0ID0gNDAwKQp4Ml92YWxzIDwtIHNlcSgtNSwgMTAsIGxlbmd0aC5vdXQgPSA0MDApCmdyaWQgPC0gZXhwYW5kLmdyaWQoWDEgPSB4MV92YWxzLCBYMiA9IHgyX3ZhbHMpCgojIENvbXB1dGUgdGhlIGRlY2lzaW9uIHZhbHVlCmdyaWQkWiA8LSAoMSArIGdyaWQkWDEpXjIgKyAoMiAtIGdyaWQkWDIpXjIKCiMgRGVmaW5lIHBvaW50cyB0byBjbGFzc2lmeQpwb2ludHMgPC0gZGF0YS5mcmFtZSgKICBYMSA9IGMoMCwgLTEsIDIsIDMpLAogIFgyID0gYygwLCAxLCAyLCA4KSwKICBsYWJlbCA9IGMoIigwLDApIiwgIigtMSwxKSIsICIoMiwyKSIsICIoMyw4KSIpCikKcG9pbnRzJGNsYXNzIDwtIGlmZWxzZSgoMSArIHBvaW50cyRYMSleMiArICgyIC0gcG9pbnRzJFgyKV4yID4gNCwgIkJsdWUiLCAiUmVkIikKCiMgUGxvdApnZ3Bsb3QoZ3JpZCwgYWVzKHggPSBYMSwgeSA9IFgyKSkgKwogICMgRmlsbCByZWdpb25zCiAgZ2VvbV9yYXN0ZXIoYWVzKGZpbGwgPSBaIDw9IDQpLCBhbHBoYSA9IDAuNCkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoIlRSVUUiID0gIiNhZGQ4ZTYiLCAiRkFMU0UiID0gIiNmZjk5OTkiKSwKICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCI8PSA0IiwgIj4gNCIpLAogICAgICAgICAgICAgICAgICAgIG5hbWUgPSAiRGVjaXNpb24gVmFsdWUiKSArCiAgCiAgIyBDb250b3VyIGxpbmUgd2hlcmUgWiA9IDQKICBnZW9tX2NvbnRvdXIoYWVzKHogPSBaKSwgYnJlYWtzID0gNCwgY29sb3IgPSAiYmxhY2siLCBzaXplID0gMSkgKwogIAogICMgUG9pbnRzIGFuZCBsYWJlbHMKICBnZW9tX3BvaW50KGRhdGEgPSBwb2ludHMsIGFlcyh4ID0gWDEsIHkgPSBYMiwgY29sb3IgPSBjbGFzcyksIHNpemUgPSAzKSArCiAgZ2VvbV90ZXh0KGRhdGEgPSBwb2ludHMsIGFlcyhsYWJlbCA9IGxhYmVsKSwgaGp1c3QgPSAtMC4zLCB2anVzdCA9IC0wLjMsIHNpemUgPSAzLjUpICsKICBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gYygiUmVkIiA9ICJyZWQiLCAiQmx1ZSIgPSAiYmx1ZSIpKSArCiAgCiAgIyBMYWJlbHMgYW5kIHRoZW1lCiAgbGFicyh0aXRsZSA9ICJOb24tbGluZWFyIERlY2lzaW9uIEJvdW5kYXJ5IiwKICAgICAgIHN1YnRpdGxlID0gIigxICsgWDEpXjIgKyAoMiAtIFgyKV4yID0gNCIsCiAgICAgICB4ID0gIlgxIiwgeSA9ICJYMiIpICsKICBjb29yZF9maXhlZCgpICsKICB0aGVtZV9taW5pbWFsKCkKYGBgCgojIChhKSBDdXJ2ZTogKDEgKyBYMSleMiArICgyIC0gWDIpXjIgPSA0CgpUaGlzIGVxdWF0aW9uIHJlcHJlc2VudHMgYSBjaXJjbGUgaW4gdHdvLWRpbWVuc2lvbmFsIHNwYWNlLgpUaGUgY2VudGVyIG9mIHRoZSBjaXJjbGUgaXMgYXQgdGhlIHBvaW50ICgtMSwgMiksIGFuZCB0aGUgcmFkaXVzIGlzIDIgdW5pdHMuClRoZSBjdXJ2ZSBpdHNlbGYgaXMgdGhlIHNldCBvZiBhbGwgcG9pbnRzIHRoYXQgbGllIGV4YWN0bHkgMiB1bml0cyBhd2F5IGZyb20gdGhlIGNlbnRlci4KCiMgKGIpIFJlZ2lvbiBpbnRlcnByZXRhdGlvbgoKVGhlIGNpcmNsZSBkaXZpZGVzIHRoZSBwbGFuZSBpbnRvIHR3byByZWdpb25zOgpJbnNpZGUgdGhlIGNpcmNsZTogVGhpcyBpbmNsdWRlcyBhbGwgcG9pbnRzIHdoZXJlICgxICsgWDEpXjIgKyAoMiAtIFgyKV4yIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA0LgpPdXRzaWRlIHRoZSBjaXJjbGU6IFRoaXMgaW5jbHVkZXMgYWxsIHBvaW50cyB3aGVyZSAoMSArIFgxKV4yICsgKDIgLSBYMileMiBpcyBncmVhdGVyIHRoYW4gNC4KCiMgKGMpIENsYXNzaWZpY2F0aW9uIG9mIHBvaW50cwoKU3VwcG9zZSB3ZSBjbGFzc2lmeSBhIHBvaW50IGFzIGJsdWUgaWYgKDEgKyBYMSleMiArICgyIC0gWDIpXjIgaXMgZ3JlYXRlciB0aGFuIDQsIGFuZCByZWQgb3RoZXJ3aXNlLiBUaGVuOgoKVGhlIHBvaW50ICgwLCAwKSBpcyBjbGFzc2lmaWVkIGFzIGJsdWUsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIDUuClRoZSBwb2ludCAoLTEsIDEpIGlzIGNsYXNzaWZpZWQgYXMgcmVkLCBiZWNhdXNlIHRoZSB2YWx1ZSBpcyAxLgpUaGUgcG9pbnQgKDIsIDIpIGlzIGNsYXNzaWZpZWQgYXMgYmx1ZSwgYmVjYXVzZSB0aGUgdmFsdWUgaXMgOS4KVGhlIHBvaW50ICgzLCA4KSBpcyBjbGFzc2lmaWVkIGFzIGJsdWUsIGJlY2F1c2UgdGhlIHZhbHVlIGlzIDUyLgoKIyAoZCkgTGluZWFyaXR5IGluIHRyYW5zZm9ybWVkIHZhcmlhYmxlcwoKQWx0aG91Z2ggdGhlIGRlY2lzaW9uIGJvdW5kYXJ5ICh0aGUgY2lyY2xlKSBpcyBub3QgYSBzdHJhaWdodCBsaW5lIHdoZW4gdmlld2VkIGluIHRlcm1zIG9mIHRoZSBvcmlnaW5hbCB2YXJpYWJsZXMgWDEgYW5kIFgyLCBpdCBiZWNvbWVzIGEgbGluZWFyIGJvdW5kYXJ5IHdoZW4gd2UgdXNlIHRyYW5zZm9ybWVkIHZhcmlhYmxlczoKCjEuIFgxCjIuIFgxIHNxdWFyZWQKMy4gWDIKNC4gWDIgc3F1YXJlZAoKaWYgd2UgaW5jbHVkZSBib3RoIHRoZSBvcmlnaW5hbCB2YXJpYWJsZXMgYW5kIHRoZWlyIHNxdWFyZXMgYXMgbmV3IGZlYXR1cmVzLCB0aGVuIHRoZSBlcXVhdGlvbiBiZWNvbWVzIGEgbGluZWFyIGNvbWJpbmF0aW9uIG9mIHRob3NlIGZlYXR1cmVzLiBTbywgdGhlIGJvdW5kYXJ5IGlzIG5vbi1saW5lYXIgaW4gdGhlIG9yaWdpbmFsIHNwYWNlIGJ1dCBsaW5lYXIgaW4gdGhlIHRyYW5zZm9ybWVkIGZlYXR1cmUgc3BhY2UuCg==