Bài viết này là phần tiếp theo của “Machine Learning Thú Vị Mà

Điều đó thật tuyệt, nhưng liệu có thể ước tính được giá của một ngôi nhà bằng cách “học tập”

Là một con người, bộ não của bạn có thể tiếp cận hầu hết mọi tình huống và học cách đối phó với tình huống đó mà không cần bất kỳ hướng dẫn rõ ràng nào. Nếu bạn buôn bán nhà trong một thời gian dài, theo bản năng, bạn sẽ có một phán đoán đúng với giá phù hợp cho một ngôi nhà, cách tốt nhất để tiếp thị căn nhà đó, loại khách hàng sẽ quan tâm, v.v … Mục tiêu nghiên cứu một AI mạnh mẽ là để có thể tái tạo khả năng này trên máy tính.

Nhưng các thuật toán máy học hiện tại vẫn chưa tốt – chúng chỉ hoạt động khi tập trung vào một vấn đề rất cụ thể, hạn chế. Có lẽ một định nghĩa tốt hơn cho việc “học tập” của người Viking trong trường hợp này là cách tìm ra một phương trình để giải quyết một vấn đề cụ thể dựa trên một số ví dụ về dữ liệu.

Thật không may, “Machine Figuring tìm ra một phương trình để giải quyết một vấn đề cụ thể dựa trên một số dữ liệu mẫu” thực sự không phải là một cái tên hay. Vì vậy, chúng tôi đã kết thúc với “Machine Learning” thay vào đó.

Tất nhiên, nếu bạn đang đọc nó 50 năm này, trong tương lai và chúng tôi đã tìm ra thuật toán cho AI mạnh mẽ, thì toàn bộ bài đăng này sẽ có vẻ hơi lạ. Bạn có thể ngừng đọc và nói với người hầu robot của bạn đi làm cho bạn một chiếc bánh sandwich, con người tương lai.

Đến lúc viết chương trình nào!

Vì vậy, làm thế nào bạn sẽ viết chương trình để ước tính giá trị của một ngôi nhà như trong ví dụ của chúng tôi ở trên? Hãy suy nghĩ về nó trong một giây trước khi bạn đọc thêm.

Nếu bạn không biết gì về học máy, có lẽ bạn sẽ cố gắng viết ra một số quy tắc cơ bản để ước tính giá của một ngôi nhà như thế này:

def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
  price = 0  # In my area, the average house costs $200 per sqft
  price_per_sqft = 200  if neighborhood == “hipsterton”:
    # but some areas cost a bit more
    price_per_sqft = 400  elif neighborhood == “skid row”:
    # and some areas cost less
    price_per_sqft = 100  # start with a base price estimate based on how big the place is
  price = price_per_sqft * sqft  # now adjust our estimate based on the number of bedrooms
  if num_of_bedrooms == 0:
    # Studio apartments are cheap
    price = price — 20000
  else:
    # places with more bedrooms are usually
    # more valuable

    price = price + (num_of_bedrooms * 1000) return price

Nếu bạn miệt mài với điều này hàng giờ liền, bạn có thể sẽ có thứ gì đó tương tự. Nhưng chương trình của bạn sẽ không bao giờ hoàn hảo và sẽ khó duy trì khi giá thay đổi.

Sẽ tốt hơn nếu máy tính có thể tìm ra cách thực hiện hàm số này cho bạn? Ai quan tâm chính xác hàm số làm gì miễn là nó trả về số chính xác:

def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
  price = <computer, plz do some math for me>  return price

Một cách để tư duy về vấn đề này là giá cả là một món hầm ngon và các thành phần là số phòng ngủ, diện tích và khu phố. Nếu bạn có thể chỉ ra mỗi nguyên liệu ảnh hưởng đến giá cuối cùng, thì có thể có một tỷ lệ chính xác của các thành phần này được đưa vào để tạo ra giá cuối cùng.

Điều đó sẽ làm giảm hàm số ban đầu của bạn (với tất cả những if’s và else’s điên rồ) xuống một thứ thực sự đơn giản như thế này:

def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
 price = 0 # a little pinch of this
 price += num_of_bedrooms * .841231951398213 # and a big pinch of that
 price += sqft * 1231.1231231 # maybe a handful of this
 price += neighborhood * 2.3242341421 # and finally, just a little extra salt for good measure
 price += 201.23432095 return price

Lưu ý các số ma thuật in đậm – .841231951398213, 1231.1231231, 2.3242341421 và 201.23432095. Đây là weights (trọng số) của chúng ta. Nếu chúng ta có thể tìm ra trọng số hoàn hảo để sử dụng công việc đó cho mọi nhà, hàm số của chúng ta có thể dự đoán giá nhà!

Một cách ngu ngốc để tìm ra trọng số tốt nhất sẽ là một cái gì đó như thế này:

Bước 1:

Bắt đầu với mỗi trọng số được đặt thành 1.0:

def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
  price = 0  # a little pinch of this
  price += num_of_bedrooms * 1.0  # and a big pinch of that
  price += sqft * 1.0  # maybe a handful of this
  price += neighborhood * 1.0  # and finally, just a little extra salt for good measure
  price += 1.0  return price

Bước 2:


Chạy mọi ngôi nhà bạn biết thông qua hàm số của bạn và xem hàm số này cách xa mức giá chính xác cho mỗi ngôi nhà:

Image for post

Sử dụng hàm số của bạn để dự đoán giá cho mỗi ngôi nhà.

Ví dụ: nếu ngôi nhà đầu tiên thực sự được bán với giá 250.000 đô la, nhưng hàm số của bạn đoán nó được bán với giá 178.000 đô la, thì bạn đã giảm 72.000 đô la cho ngôi nhà duy nhất đó.

Bây giờ hãy cộng số tiền diện tích bạn đang giảm cho mỗi ngôi nhà bạn có trong bộ dữ liệu của mình. Hãy nghĩ rằng bạn đã có 500 doanh số bán nhà trong bộ dữ liệu của mình và diện tích của chúng đã được giảm cho mỗi ngôi nhà là tổng cộng 86,123.373 đô la. Đó là “lỗi” mà hàm số của bạn cung cấp.

Bây giờ, lấy tổng số tiền đó và chia cho 500 để có trung bình khoảng cách bạn dành cho mỗi ngôi nhà. Gọi số tiền lỗi trung bình này là chi phí cho hàm số của bạn.

Nếu bạn có thể khiến chi phí này bằng 0 bằng cách chơi với các trọng số, hàm số của bạn sẽ hoàn hảo. Điều đó có nghĩa là trong mọi trường hợp, hàm số của bạn đã đoán hoàn toàn tương ứng giá của căn nhà dựa trên dữ liệu đầu vào. Vì vậy, mục tiêu của chúng tôi – làm cho chi phí này càng thấp càng tốt bằng cách thử các trọng lượng khác nhau.

Bước 3:

Lặp lại Bước 2 nhiều lần với mọi trọng số có thể có. Bất kỳ sự kết hợp nào của trọng số làm cho chi phí gần bằng 0 là những gì bạn sử dụng. Khi bạn tìm thấy các trọng số hoạt động, bạn đã giải quyết vấn đề!

(Còn tiếp)

Nguồn: Medium.com

Người viết: Adam Geitgey

#VNAIHUB #Trituenhantao #Mayhoc #Huongdan