Viết thuật toán trong Excel

Tất cả các giai đoạn trong phương pháp tiếp cận của chúng tôi đều dễ dàng thực hiện đối với ngay cả một người mới làm quen với Khoa học Máy tính, quen thuộc với những kiến ​​thức cơ bản về Excel. Cách tiếp cận của chúng tôi là lý tưởng cho các bài tập trong nhiều lĩnh vực của Khoa học Máy tính và nó có thể được áp dụng ngay cả trong nghiên cứu

Về tính linh hoạt, cách tiếp cận hoạt hình thuật toán Excel có thể được so sánh với máy ảnh Polaroid. trong khi chất lượng có thể không phải là tinh tế nhất, kết quả nhanh chóng là thiết thực ngay cả đối với các mục đích bất ngờ. Và với tư cách là máy ảnh Polaroid, đây là ứng dụng của mọi người. nó hoạt động bất cứ nơi nào Excel làm

Một ví dụ. Tìm kiếm nhị phân

Dưới đây là một ví dụ chi tiết để làm rõ ý tưởng của chúng tôi. Tìm kiếm nhị phân là một phương pháp nổi tiếng để tìm kiếm một mục trong một mảng được sắp xếp. Ban đầu, phạm vi tìm kiếm là toàn bộ mảng. Sau đó, khóa tìm kiếm được so sánh với phần tử ở giữa của phạm vi. Nếu chúng bằng nhau, vật phẩm mong muốn đã được tìm thấy. Nếu khóa nhỏ hơn, quy trình tương tự được áp dụng đệ quy cho nửa bên trái của phạm vi tìm kiếm, nếu không thì nửa bên phải

Có ba giai đoạn tạo hoạt ảnh với Excel

Giai đoạn 1. Đưa cấu trúc dữ liệu vào trang tính

Viết thuật toán trong Excel

Để làm sinh động thuật toán tìm kiếm này, một biểu đồ đại diện cho mảng phải được hình thành. Giả sử mảng có 30 phần tử với các giá trị không giảm. Các giá trị được chèn trong một trang tính Excel bình thường vào các ô từ A1 đến A30

Giai đoạn 2. Tạo biểu đồ trực quan hóa cấu trúc dữ liệu

Viết thuật toán trong Excel

Sau đó, phạm vi này được chọn và trình hướng dẫn biểu đồ của Excel được áp dụng để tạo biểu đồ thanh. Các loại biểu đồ khác cũng có thể

giai đoạn 3. viết mã

Viết thuật toán trong Excel

Bên cạnh việc tạo biểu đồ, thuật toán tìm kiếm nhị phân được viết bằng Visual Basic. Mã tìm kiếm và hoạt hình được hiển thị trong Chương trình 1

Đến cuối hướng dẫn này, bạn sẽ thực hiện thuật toán đầu tiên của mình mà không cần chạm vào một dòng mã nào. Bạn sẽ sử dụng các kỹ thuật Machine Learning để phân loại dữ liệu thực bằng các hàm cơ bản trong Excel. Bạn không cần phải là một thiên tài hay một lập trình viên để hiểu về machine learning. Bất chấp các ứng dụng phổ biến của ô tô tự lái, rô bốt sát thủ và nhận dạng khuôn mặt, nền tảng của máy học (ML) khá đơn giản. Đây là cơ hội để bạn chân ướt chân ráo hiểu sức mạnh của những kỹ thuật mới này

Tuyên bố miễn trừ trách nhiệm về Excel

Tất cả các nhà khoa học dữ liệu có lẽ đang co rúm lại với tiêu đề của hướng dẫn này. Excel thường được coi là một công cụ khủng khiếp để phân tích dữ liệu nghiêm túc. Nó không mở rộng quy mô để xử lý các bộ dữ liệu lớn mà chúng ta xử lý trong thế giới thực và nó thiếu một số chức năng chính của ngôn ngữ lập trình và thư viện máy học. Bạn sẽ thấy rất nhiều công thức được đưa ra trong hướng dẫn này rất phức tạp để phù hợp với những thiếu sót và đặc thù của Excel. Lý do tôi sử dụng Excel là để làm cho phần giới thiệu này có thể truy cập được đối với những người không phải là lập trình viên vì hầu hết chúng ta đều có kiến ​​thức cơ bản về công cụ này. Những người chọn theo đuổi Học máy và Khoa học dữ liệu một cách nghiêm túc hơn cuối cùng sẽ nâng cấp lên sử dụng Python hoặc R, nhưng không có hại gì khi bắt đầu đơn giản

Mục tiêu cuối cùng của chúng tôi

Mục tiêu cuối cùng của hướng dẫn này là sử dụng Học máy để xây dựng mô hình phân loại trên một tập hợp dữ liệu thực bằng cách triển khai thuật toán k-láng giềng gần nhất (KNN). Đừng quá choáng ngợp, hãy chia nhỏ ý nghĩa của điều đó từng chút một

Học máy

Machine Learning là tập hợp các kỹ thuật để tối ưu hóa các mô hình. Nói cách khác, Machine Learning sử dụng các mô hình mà chúng ta đã xây dựng và sử dụng dữ liệu trong thế giới thực để “học” cách tinh chỉnh các tham số của mô hình sao cho hữu ích nhất trong tình huống thực tế dựa trên dữ liệu đào tạo. Trong hướng dẫn này, chúng ta sẽ áp dụng học máy vào mô hình phân loại. Đừng lo lắng nếu bạn vẫn chưa hoàn toàn rõ ràng ngay bây giờ, khi kết thúc hướng dẫn, bạn sẽ biết chính xác tôi đang nói về điều gì

Tập huấn luyện vs Tập kiểm tra

Thuật toán Machine Learning điều chỉnh mô hình dựa trên tập dữ liệu huấn luyện. Dữ liệu huấn luyện là tập dữ liệu chứa tất cả các biến mà chúng ta có sẵn cũng như phân loại chính xác. Tập huấn luyện có thể được phát triển theo nhiều cách nhưng trong hướng dẫn này, chúng ta sẽ sử dụng tập huấn luyện được phân loại bởi một chuyên gia về con người. Điều quan trọng cần nhớ là các mô hình học máy chỉ tốt khi dữ liệu đào tạo. Dữ liệu đào tạo của bạn càng chính xác và bạn càng có nhiều dữ liệu thì càng tốt. Nói cách khác - rác vào, rác ra

Một tập kiểm tra thường là một tập con của dữ liệu huấn luyện trong đó nó cũng chứa tất cả các biến và phân loại chính xác. Sự khác biệt là ở cách chúng ta sử dụng nó. Mặc dù tập huấn luyện giúp phát triển mô hình, nhưng tập kiểm tra sẽ thử mô hình đó trong một tình huống thực tế và xem nó hoạt động tốt như thế nào. Có rất nhiều cách phức tạp để đo lỗi và kiểm tra các mô hình nhưng miễn là bạn nắm được ý tưởng cơ bản, chúng ta có thể tiếp tục

Mô hình phân loại

Mô hình phân loại chỉ đơn giản là một công cụ toán học để xác định danh mục hoặc loại của thứ gì đó mà bạn đang xử lý dựa trên một tập hợp các biến hoặc đầu vào. Ví dụ: nếu tôi muốn phân loại một con vật là mèo hay cá, tôi có thể sử dụng các biến như con vật đó có bơi hay không, nó có lông hay không và nó có ăn hay không để xác định nó thuộc loại nào. . Bạn sẽ nhận thấy hai điều. Thứ nhất, bạn càng có nhiều biến càng tốt. Với nhiều thông tin hơn, bạn có thể tự tin hơn rằng phân loại của mình là chính xác. Thứ hai, một số biến hữu ích hoặc mang tính dự đoán hơn những biến khác. Lấy ví dụ cuối cùng, con vật có ăn hay không. Người quan sát bình thường biết rằng cả cá và mèo đều ăn, vì vậy việc có phần dữ liệu này không hữu ích trong việc xác định loại động vật. Mục tiêu của học máy trong bối cảnh này là tạo ra mô hình phân loại hữu ích nhất với dữ liệu có sẵn và loại bỏ các đầu vào không cải thiện hiệu quả của mô hình

K hàng xóm gần nhất

K-Nearest Neighbors (KNN) là một loại Mô hình phân loại cụ thể. Trực giác rất đơn giản để hiểu. Mô hình lấy tất cả dữ liệu có sẵn về một điểm dữ liệu chưa biết và so sánh nó với tập dữ liệu huấn luyện để xác định điểm nào trong tập huấn luyện mà điểm chưa biết giống nhất hoặc gần nhất với. Ý tưởng là điểm dữ liệu chưa biết rất có thể sẽ thuộc cùng loại với các điểm dữ liệu đã biết mà nó giống nhất với. KNN chỉ đơn giản là một cách toán học để xác định sự giống nhau giữa hai điểm dữ liệu

Tập dữ liệu Iris

Đối với hướng dẫn này, chúng tôi sẽ sử dụng một bộ dữ liệu cổ điển được sử dụng để dạy học máy có tên là Bộ dữ liệu Iris. Đây là tập hợp dữ liệu về ba loài hoa Iris và bốn mẩu dữ liệu về chúng. chiều dài đài hoa, chiều rộng đài hoa, chiều dài cánh hoa và chiều rộng cánh hoa. Bộ dữ liệu đã được chuẩn bị để giúp người mới bắt đầu dễ dàng bắt đầu ngay. Bạn có thể tải xuống dữ liệu ở định dạng excel tương thích bằng cách nhấp vào “tải xuống zip” ở trên cùng bên phải và mở nội dung trong Excel

Chuẩn bị dữ liệu của chúng tôi

Như tôi đã đề cập, tập dữ liệu này có nghĩa là đơn giản để làm việc với. Mỗi cột trong số 4 cột đầu tiên (A-D) là một thứ nguyên hoặc tính năng của dữ liệu. Cột thứ năm, E, là giống hoặc loại hoa. Mỗi hàng là bản ghi hoặc điểm dữ liệu của chính nó. Như bạn có thể thấy, chúng tôi có 150 điểm dữ liệu đã biết để làm việc với

Chúng tôi có một quyết định quan trọng để thực hiện. làm cách nào để chúng tôi muốn tách tập dữ liệu này thành tập huấn luyện và tập kiểm tra. Với tập dữ liệu lớn hơn, chúng tôi có thể sử dụng các kỹ thuật tối ưu hóa để đưa ra quyết định này. Vì tập dữ liệu này nhỏ và dành cho người mới bắt đầu nên chúng tôi sẽ chia nó theo tỷ lệ 70/30 theo quy ước. Nói cách khác, chúng tôi sẽ sử dụng 70% dữ liệu hoặc 105 điểm dữ liệu làm tập huấn luyện và 45 điểm dữ liệu còn lại làm tập kiểm tra

Bây giờ chúng tôi sẽ sử dụng Excel để lấy mẫu ngẫu nhiên 70% dữ liệu. Trước tiên, hãy thêm một cột vào trang tính của bạn có tên là “Giá trị ngẫu nhiên” và sử dụng hàm RAND() để chọn ngẫu nhiên một giá trị trong khoảng từ 0 đến 1. Hãy nhớ rằng hàm RAND() sẽ chọn lại một số mới mỗi khi trang tính của bạn tính toán lại. Để tránh điều đó, sau khi tạo các số của mình, tôi sẽ sao chép chúng (Ctrl+C) và sau đó dán đặc biệt lên chúng dưới dạng giá trị (Ctrl+Shift+V) để chúng cố định. Chúng ta sẽ bắt đầu ở ô F2 và kéo xuống điểm dữ liệu cuối cùng

=RAND()

Tiếp theo, tôi sẽ xếp hạng chúng từ 1 đến 150 bằng cách sử dụng hàm RANK() của Excel, bắt đầu từ ô G2 như hình bên dưới và kéo tất cả xuống điểm dữ liệu cuối cùng. Đảm bảo khóa khung tham chiếu như được hiển thị bằng cách nhấn F4 hoặc thêm ký hiệu $ theo cách thủ công, nếu không công thức này sẽ không hoạt động như chúng tôi dự định

=RANK(F2, $F$2:$F$15)

Bây giờ chúng ta có một giá trị duy nhất từ ​​1 đến 150 cho mỗi điểm dữ liệu. Vì chúng tôi muốn có 105 giá trị cho tập huấn luyện của mình, nên chúng tôi sẽ thêm một cột nữa và chọn các giá trị được xếp hạng từ 1 đến 105 cho tập huấn luyện của mình bằng cách sử dụng hàm IF() nhanh. Nếu không, chúng tôi sẽ thêm giá trị vào bộ thử nghiệm của chúng tôi. Một lần nữa, chúng ta sẽ bắt đầu từ H2 và kéo xuống điểm dữ liệu cuối cùng

=IF(G2<=105,”Training”, “Test”)

Tại thời điểm này, tập dữ liệu của bạn sẽ được thiết lập giống như ảnh chụp màn hình. Hãy nhớ rằng vì mỗi chúng ta lấy một mẫu ngẫu nhiên khác nhau nên các giá trị cụ thể trong các cột F-H sẽ khác nhau đối với bạn. Bạn cũng nên dành một phút để thêm bộ lọc cho bước tiếp theo của chúng tôi

Ảnh chụp màn hình của tác giả

Tiếp theo, chúng tôi sẽ chia hai bộ dữ liệu của mình thành các trang tính (hoặc tab) riêng của chúng để sắp xếp mọi thứ. Tạo một trang tính mới có tên là “Tập huấn luyện” và lọc dữ liệu “Đào tạo” trong trang tính gốc. Sao chép dữ liệu này cùng với các tiêu đề và dán vào “Tập huấn luyện. ” Bạn nên có 106 hàng (105 giá trị + hàng tiêu đề). Làm tương tự cho trang tính “Test Set. ” Bạn nên có 46 hàng (45 giá trị + hàng tiêu đề)

Tại thời điểm này, bạn có thể loại bỏ trang tính “Iris” và xóa các cột F-H trong cả hai trang tính còn lại của mình vì chúng tôi đã tách dữ liệu của mình. Cuối cùng, tôi sẽ thêm một cột “ID” ở đầu mỗi trang tính và gắn nhãn cho từng điểm dữ liệu tương ứng là 1–105 và 1–45 bằng cách chỉ cần nhập số (kéo thanh điều khiển điền xuống sẽ là bạn của bạn ở đây để giúp bạn tiết kiệm công sức . Điều này sẽ giúp chúng tôi tính toán trong các phần tiếp theo. Đảm bảo rằng mỗi bộ của bạn được sắp xếp như ví dụ bên dưới

Ảnh chụp màn hình của tác giả

Xây dựng mô hình

Dữ liệu của chúng tôi hiện đã sẵn sàng và chúng tôi có thể tiến hành xây dựng mô hình của mình. Xin nhắc lại, mô hình này hoạt động bằng cách so sánh điểm dữ liệu chưa biết mà chúng tôi muốn phân loại với các lân cận gần nhất hoặc tương tự nhất của nó. Để làm được điều đó, chúng ta sẽ cần lấy từng điểm trong tập kiểm tra của mình và tính khoảng cách của nó đến từng điểm trong tập huấn luyện

Khái niệm về khoảng cách

Khoảng cách là cách các nhà toán học xác định điểm nào giống nhau nhất trong không gian n chiều. Trực giác là khoảng cách giữa các điểm càng nhỏ thì chúng càng giống nhau. Hầu hết chúng ta đã quen với việc tính toán khoảng cách trong không gian 2 chiều, chẳng hạn như hệ tọa độ x, y hoặc sử dụng kinh độ và vĩ độ. Có một số cách để tính khoảng cách nhưng để đơn giản, chúng ta sẽ sử dụng khoảng cách Euclide. Dưới đây là hình ảnh của công thức khoảng cách Euclide trong không gian 2 chiều. Như bạn có thể thấy, công thức hoạt động bằng cách tạo một tam giác vuông giữa hai điểm và xác định độ dài của cạnh huyền, cạnh dài nhất của tam giác, như được xác định bằng mũi tên

Đồ họa của tác giả

Tập dữ liệu của chúng tôi là 4 chiều. Thật khó để chúng tôi hình dung không gian ngoài 3 chiều, nhưng bất kể bạn có hình dung được hay không, chúng tôi vẫn có thể tính khoảng cách giữa hai điểm theo cùng một cách bất kể số lượng kích thước. Đây là công thức chung cho Khoảng cách Euclide

Ảnh chụp màn hình từ WikiPedia theo Giấy phép Creative Commons

Nói một cách đơn giản, điều này có nghĩa là khoảng cách Euclide giữa hai điểm, q & p, có thể được xác định bằng cách lấy từng thứ nguyên cho mỗi điểm, bắt đầu với thứ nguyên đầu tiên và lặp đi lặp lại bình phương sự khác biệt giữa chúng cho đến khi bạn làm như vậy cho . Sau đó, chúng ta lấy căn bậc hai của tổng đó và chúng ta có khoảng cách Euclide. Nghe có vẻ phức tạp nhưng bạn sẽ thấy rằng nó thực sự khá đơn giản để sử dụng khi chúng tôi quay lại dữ liệu của mình

Tính khoảng cách

Trong sổ làm việc của chúng ta, hãy tạo một trang tính mới có tên là “Khoảng cách. ” Mục tiêu của chúng tôi cho trang tính này là tạo ma trận 45X105 về khoảng cách giữa mỗi điểm dữ liệu trong tập kiểm tra và tập huấn luyện. Trong trường hợp của chúng tôi, mỗi hàng sẽ tương ứng với một điểm dữ liệu trong tập kiểm tra và mỗi cột sẽ tương ứng với một điểm dữ liệu trong tập huấn luyện. Bắt đầu từ A2 và làm việc xuống từng dòng cho đến khi bạn đạt đến A46, điền vào mỗi ô các số từ 1–45. Một lần nữa, núm điều khiển điền rất hữu ích ở đây, do đó bạn không cần phải nhập từng số một. Bây giờ, làm việc từ B1 rồi đến từng cột theo chiều ngang cho đến khi bạn chạm vào DB1, hãy điền vào mỗi cột các số từ 1–105. Ma trận của bạn sẽ trông giống như ảnh chụp màn hình bên dưới, hiển thị một phần nhỏ của nó

Ảnh chụp màn hình của tác giả

Trước khi tiếp tục, bạn cần chuyển đổi ma trận của mình thành Bảng để chúng tôi có thể sắp xếp mọi thứ ngăn nắp. Chọn toàn bộ ma trận của bạn và nhấn Ctrl + T, sau đó đặt tên cho bảng là “Distance_Table” và chọn để tạo bảng với Tiêu đề. Tiếp theo, bạn sẽ muốn đặt tên cho Cột đầu tiên của mình là "ID kiểm tra" bằng cách nhập tên đó vào ô A1

Bây giờ bảng của chúng tôi đã được thiết lập, chúng tôi có thể bắt đầu tính toán của mình. Chúng ta sẽ bắt đầu ở ô B2, ô này sẽ tính khoảng cách giữa điểm đầu tiên trong Tập huấn luyện (ID #1) và điểm đầu tiên trong Tập kiểm tra (ID #1). Chúng ta có thể áp dụng công thức khoảng cách Euclide một cách nhanh chóng bằng cách sử dụng hàm VLOOKUP trong excel để tìm các giá trị cho từng thứ nguyên và sau đó tạo sẵn các phép tính khi cần thiết. Tốt nhất là sao chép và dán công thức này vào thanh công thức của bạn trong Ô B2 vì nó xử lý một vài đặc điểm của tính năng Bảng trong Excel, nhưng hãy đảm bảo rằng bạn hiểu rằng tất cả những gì công thức này đang làm là áp dụng công thức Khoảng cách Euclide mà chúng ta đã thảo luận trước đó. Như đã viết, sau đó bạn có thể kéo phần này để lấp đầy toàn bộ bảng của mình

=SQRT(((VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 2, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 2, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 3, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 3, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 4, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 4, FALSE)) ^ 2+(VLOOKUP(NUMBERVALUE(Distance_Table[[#Headers],[1]]), ‘Training Set’!$A$1:$F$106, 5, FALSE)-VLOOKUP(Distance_Table[@[Test ID]:[Test ID]], ‘Test Set’!$A$1:$F$46, 5, FALSE)) ^ 2))

Bạn nên kết thúc với một cái gì đó như thế này

Ảnh chụp màn hình của tác giả

Tìm hàng xóm gần nhất

Ở giai đoạn này, chúng tôi đã tính toán khoảng cách giữa mọi điểm trong tập kiểm tra và mọi điểm trong tập huấn luyện của chúng tôi. Bây giờ chúng ta cần xác định những người hàng xóm gần nhất với từng điểm trong bộ thử nghiệm của mình. Tạo một trang tính mới có tên “Hàng xóm gần nhất” và bắt đầu từ A2, làm việc xuống từng dòng để điền vào các ô các số từ 1–45 để tương ứng với các điểm trong Tập kiểm tra của chúng tôi. Các cột của chúng tôi sẽ không đại diện cho Tập huấn luyện như chúng có trên các trang trước. Thay vào đó, những thứ này sẽ đại diện cho 6 người hàng xóm gần nhất, bắt đầu với người gần nhất thứ nhất và sau đó là người gần thứ hai, v.v. Hàng xóm gần thứ nhất có khoảng cách nhỏ nhất, hàng xóm gần thứ 2 có khoảng cách nhỏ thứ hai, v.v. Trang tính của bạn sẽ trông như thế này

Ảnh chụp màn hình của tác giả

Như chúng ta đã làm trước đây, chúng ta sẽ viết một công thức trong ô B2 có thể được kéo để điền vào phần còn lại của ma trận của chúng ta. Cách tiếp cận của chúng tôi là xác định giá trị nhỏ nhất trong hàng tương ứng (2) trong bảng khoảng cách, tìm số cột cho giá trị đó, sau đó trả về tên cột vì điều đó sẽ cung cấp cho chúng tôi ID của giá trị trong Tập huấn luyện. Chúng tôi sẽ sử dụng kết hợp các hàm Chỉ mục và Khớp để đạt được điều này. Lưu ý rằng chúng tôi có thể làm cho công thức này trở nên đơn giản vì chúng tôi có tầm nhìn xa để thiết lập ma trận Khoảng cách dưới dạng bảng trong Excel và vì vậy chúng tôi có thể dễ dàng lấy các tiêu đề

=INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 1), Distance!2:2, FALSE))

Kéo công thức này để điền vào hàng trên cùng của ma trận hàng xóm gần nhất của bạn. Bạn sẽ cần tự điều chỉnh giá trị in đậm trong hàm SMALL() để biểu thị người hàng xóm mà chúng ta đang tìm kiếm. Vì vậy, ví dụ, để tìm hàng xóm gần thứ hai, công thức sẽ như sau

=INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 2), Distance!2:2, FALSE))

Hãy nhớ rằng các giá trị của bạn sẽ khác vì mẫu ngẫu nhiên của bạn được sử dụng để tạo Bộ kiểm tra khác với mẫu của tôi

Ảnh chụp màn hình của tác giả

Ở giai đoạn này, tôi thường dành một phút để kiểm tra lại một trong các hàng theo cách thủ công khi khả thi chỉ để đảm bảo các công thức của tôi hoạt động như mong đợi. Ở quy mô lớn, bạn sẽ muốn sử dụng thử nghiệm tự động, nhưng hiện tại chúng tôi đang đơn giản hóa việc này

Chúng ta còn một bước cuối cùng. chúng ta cần xác định phân loại của từng hàng xóm gần nhất. Chúng tôi sẽ quay lại công thức trong B2 và sửa đổi nó để thực hiện VLOOKUP ID trong Tập huấn luyện và trả về phân loại. Sau đó, chúng tôi sẽ kéo nó để điền vào ma trận

=VLOOKUP(NUMBERVALUE(INDEX(Distance_Table[#Headers], MATCH(SMALL(Distance!$B2:$DB2, 1), Distance!2:2, FALSE))), ‘Training Set’!$A$1:$F$106, 6, FALSE)

Lùi Một Bước

Hãy lùi lại một bước và nhìn vào những gì chúng ta đã đạt được. Bây giờ bạn đã xác định được từng điểm trong bài kiểm tra của mình, đặt phân loại cho 6 người hàng xóm gần nhất. Bạn có thể sẽ nhận thấy rằng đối với tất cả hoặc gần như tất cả các điểm dữ liệu của bạn, 6 hàng xóm gần nhất sẽ thuộc cùng một phân loại. Điều này có nghĩa là dữ liệu của chúng tôi được thiết lập theo nhóm cao. Trong trường hợp của chúng tôi, dữ liệu của chúng tôi được phân cụm cao vì hai lý do. Đầu tiên, như chúng ta đã thảo luận khi bắt đầu hướng dẫn, tập dữ liệu được thiết kế để dễ dàng làm việc với. Thứ hai, đây là tập dữ liệu ít chiều vì chúng tôi chỉ làm việc với 4 chiều. Khi bạn xử lý dữ liệu trong thế giới thực, thông thường bạn sẽ thấy rằng nó ít được phân cụm hơn, đặc biệt là khi số lượng thứ nguyên tăng lên. Dữ liệu của bạn càng ít được phân cụm, tập huấn luyện sẽ càng lớn để xây dựng một mô hình hữu ích

Tối ưu hóa với Machine Learning

Nếu dữ liệu của chúng tôi luôn được phân cụm gọn gàng như Tập dữ liệu Iris thì sẽ không cần học máy. Chúng tôi chỉ cần tìm hàng xóm gần nhất bằng công thức của mình và sử dụng công thức đó để xác định phân loại của từng điểm dữ liệu chưa biết. Vì điều này thường không xảy ra nên học máy giúp chúng tôi dự đoán chính xác hơn việc phân loại một điểm dữ liệu chưa biết bằng cách xem xét nhiều điểm lân cận cùng một lúc. Nhưng chúng ta nên xem xét bao nhiêu người hàng xóm? . K mô tả số lượng hàng xóm mà chúng tôi sẽ xem xét khi dự đoán phân loại của một điểm dữ liệu chưa biết

Quá ít hoặc quá nhiều hàng xóm

Theo trực giác, điều quan trọng là phải hiểu tại sao vấn đề này lại phức tạp. Có thể nhìn vào quá ít hàng xóm và cũng có quá nhiều hàng xóm. Đặc biệt là khi số lượng kích thước tăng lên, có thể hàng xóm gần nhất không phải lúc nào cũng là phân loại chính xác. Nhìn vào quá ít hàng xóm sẽ hạn chế lượng thông tin mà mô hình của bạn có sẵn để đưa ra quyết định. Xem xét quá nhiều hàng xóm thực sự sẽ làm giảm chất lượng thông tin mà mô hình của bạn sử dụng làm đầu vào. Điều này là do khi có nhiều hàng xóm được giới thiệu, bạn cũng đang tạo nhiễu cho dữ liệu. Chỉ cần nghĩ về nó - sẽ không hợp lý nếu xem xét tất cả 104 người hàng xóm trong ví dụ của chúng tôi. Xem một đại diện trực quan của khái niệm này dưới đây

Đồ họa của tác giả

Do đó, điều này trở thành một vấn đề tối ưu hóa cổ điển khi chúng tôi cố gắng tìm giá trị K cung cấp nhiều thông tin nhất mà không quá cao hoặc quá thấp

Sử dụng Bộ kiểm tra của bạn

Đối với hướng dẫn này, chúng tôi sẽ sử dụng quy trình thử và sai rất đơn giản để xác định giá trị K tối ưu. Trước khi chúng ta tiếp tục, tôi khuyên bạn nên xem bảng tính Hàng xóm gần nhất của mình và đoán xem giá trị k tốt nhất có thể là bao nhiêu, chỉ để cho vui. Chúng tôi sẽ sớm tìm ra nếu bạn đúng

Thiết lập thuật toán

Thuật toán chỉ là một tập hợp các bước để máy tính lặp đi lặp lại theo một bộ quy tắc đã xác định. Trong trường hợp này, chúng tôi sẽ yêu cầu máy tính thử các giá trị K khác nhau, tính toán tỷ lệ lỗi cho từng giá trị bằng cách sử dụng bộ kiểm tra của chúng tôi, sau đó cuối cùng trả về giá trị tạo ra tỷ lệ lỗi thấp nhất. Để làm điều này, chúng ta sẽ cần tạo một trang tính mới có tên là “Mô hình KNN. ” Chúng tôi sẽ thiết lập như sau, gắn nhãn các hàng từ A4 đến A48 với 1–45 cho mỗi điểm dữ liệu thử nghiệm của chúng tôi

Ảnh chụp màn hình của tác giả

Hãy bắt đầu với giá trị dự đoán trong Cột B. Chúng ta cần công thức này để điều chỉnh dựa trên giá trị K. Trong trường hợp Giá trị K là 1, công thức rất đơn giản, chúng ta chỉ cần lấy hàng xóm gần nhất

=’Nearest Neighbors’!B2

Trong trường hợp Giá trị K lớn hơn 1, chúng tôi sẽ lấy hàng xóm phổ biến nhất xuất hiện. Nếu sự xuất hiện của các hàng xóm được phân bổ đồng đều, ví dụ: nếu 3 trong số các hàng xóm là Setosa và 3 trong số các hàng xóm là Virginica khi K=6, chúng ta sẽ phân loại hàng xóm gần nhất. Công thức cho K=2 sẽ như sau. Chúng tôi sử dụng IFERROR vì công thức này trả về lỗi khi có hai hàng xóm xảy ra số lần bằng nhau đối với giá trị K đã cho

________số 8_______

Bạn sẽ muốn sử dụng công thức mở rộng bên dưới trong ô B4, công thức này cho phép bạn sử dụng các giá trị K tối đa và bao gồm K=6. Không cần phải lo lắng về các chi tiết cụ thể của công thức này, chỉ cần sao chép và dán nó. Nhân tiện, việc phải sử dụng các công thức phức tạp, cầu kỳ và khó hiểu như thế này là một trong những hạn chế của Excel mà tôi đã đề cập trước đó. Đây sẽ là một miếng bánh trong Python. Lưu ý rằng công thức này sẽ trả về lỗi nếu không có giá trị nào trong K hoặc giá trị không nằm trong khoảng từ 1 đến 6. Bạn nên sao chép công thức này từ ô B4 xuống Cột B

=IFS($B$1=1, 'Nearest Neighbors'!B2, $B$1=2, IFERROR(INDEX('Nearest Neighbors'!B2:C2,MODE(MATCH('Nearest Neighbors'!B2:C2,'Nearest Neighbors'!B2:C2,0))), 'Nearest Neighbors'!B2), $B$1=3, IFERROR(INDEX('Nearest Neighbors'!B2:D2,MODE(MATCH('Nearest Neighbors'!B2:D2,'Nearest Neighbors'!B2:D2,0))), 'Nearest Neighbors'!B2), $B$1=4, IFERROR(INDEX('Nearest Neighbors'!B2:E2,MODE(MATCH('Nearest Neighbors'!B2:E2,'Nearest Neighbors'!B2:E2,0))), 'Nearest Neighbors'!B2), $B$1=5, IFERROR(INDEX('Nearest Neighbors'!B2:F2,MODE(MATCH('Nearest Neighbors'!B2:F2,'Nearest Neighbors'!B2:F2,0))), 'Nearest Neighbors'!B2),$B$1=6, IFERROR(INDEX('Nearest Neighbors'!B2:G2,MODE(MATCH('Nearest Neighbors'!B2:G2,'Nearest Neighbors'!B2:G2,0))), 'Nearest Neighbors'!B2))

Tiếp theo, chúng tôi muốn lấy phân loại thực tế, đã biết của từng điểm kiểm tra để chúng tôi có thể xác định xem mô hình của mình có đúng hay không. Đối với điều này, chúng tôi sử dụng hàm VLOOKUP nhanh trong Cột C, bắt đầu từ ô C4 và kéo xuống

=RANK(F2, $F$2:$F$15)
0

Sau đó, chúng tôi sẽ thiết lập một công thức trong Cột D để trả về 1 nếu dự đoán không chính xác hoặc do lỗi và 0 nếu dự đoán đúng. Bạn sẽ bắt đầu ở ô D4 và kéo công thức xuống

=RANK(F2, $F$2:$F$15)
1

Cuối cùng, chúng tôi sẽ tính tỷ lệ lỗi bằng cách chia số lỗi cho tổng số điểm dữ liệu, sử dụng công thức này trong ô B2. Theo quy ước, chúng tôi sẽ định dạng phần trăm này dưới dạng phần trăm

=RANK(F2, $F$2:$F$15)
2

Chạy thuật toán

Bây giờ chúng tôi đã sẵn sàng để chạy thuật toán của mình cho các giá trị K khác nhau. Vì chúng tôi chỉ kiểm tra 6 giá trị nên chúng tôi có thể thực hiện thủ công. Nhưng điều đó sẽ chẳng vui vẻ gì và quan trọng hơn là không mở rộng quy mô. Bạn sẽ cần bật Phần bổ trợ bộ giải cho Excel theo hướng dẫn trong bài viết này trước khi chúng tôi tiếp tục

Bây giờ, điều hướng đến dải băng Dữ liệu và nhấp vào nút Bộ giải. Nút giải quyết tự động thử và sai cho chúng tôi theo hướng dẫn của chúng tôi. Bạn sẽ có một hộp thoại gồm các tham số hoặc hướng dẫn mà bạn muốn thiết lập như hình bên dưới. Chúng tôi đang thiết lập nó để nó tìm cách giảm thiểu tỷ lệ lỗi trong khi kiểm tra các giá trị từ 1 đến 6, chỉ kiểm tra các giá trị số nguyên

Ảnh chụp màn hình của tác giả

Excel sẽ quay trong một phút và bạn có thể thấy nó nhấp nháy một vài giá trị trên màn hình trước khi nhận được hộp thoại này. Bạn nên bấm OK để giữ giải pháp Bộ giải

Ảnh chụp màn hình của tác giả

Giải thích tỷ lệ lỗi và giải pháp bộ giải

Nhiều thuật toán tối ưu hóa có nhiều giải pháp do dữ liệu có nhiều cực tiểu hoặc cực đại. Điều này đã xảy ra trong trường hợp của tôi. Trên thực tế, trong trường hợp cụ thể của tôi, tất cả các giá trị số nguyên từ 1 đến 6 biểu thị giá trị cực tiểu với tỷ lệ lỗi xấp xỉ 2%. Vậy chúng ta làm gì bây giờ?

Một vài điều lướt qua đầu tôi. Đầu tiên, bộ thử nghiệm này không tốt lắm. Mô hình không đạt được bất kỳ lợi ích tối ưu hóa nào từ bộ thử nghiệm và do đó, tôi có thể sẽ thực hiện lại bộ thử nghiệm và thử lại để xem liệu tôi có nhận được kết quả khác không. Tôi cũng cân nhắc sử dụng các phương pháp kiểm tra tinh vi hơn như xác thực chéo

Với tỷ lệ lỗi thấp như thế này trong bộ thử nghiệm của tôi, tôi cũng bắt đầu lo lắng về việc lắp quá nhiều. Quá phù hợp là một vấn đề xảy ra trong học máy khi một mô hình quá phù hợp với các sắc thái của một tập dữ liệu thử nghiệm hoặc đào tạo cụ thể. Khi một mô hình quá phù hợp, nó không thể dự đoán hoặc hiệu quả khi gặp dữ liệu mới trong tự nhiên. Tất nhiên, với một bộ dữ liệu học thuật như thế này, chúng tôi hy vọng tỷ lệ lỗi của chúng tôi sẽ khá thấp

Việc xem xét tiếp theo là chọn giá trị nào nếu tôi đã xác định được một số cực tiểu. Mặc dù thử nghiệm không hiệu quả trong ví dụ cụ thể này, nhưng nói chung tôi sẽ chọn số lượng hàng xóm thấp nhất ở mức tối thiểu để tiết kiệm tài nguyên máy tính. Mô hình của tôi sẽ chạy nhanh hơn nếu nó phải xem xét ít hàng xóm hơn. Nó sẽ không tạo ra sự khác biệt với một tập dữ liệu nhỏ nhưng các quyết định như thế này sẽ bảo tồn các nguồn tài nguyên đáng kể trên quy mô lớn

Phần kết luận

Thanh danh. Bạn đã học những kiến ​​thức cơ bản về máy học và triển khai tất cả thuật toán KNN mà không cần rời khỏi giới hạn của Excel. Hãy nhớ rằng Excel chỉ là một công cụ và phần quan trọng là bạn hiểu trực giác và các khái niệm giúp cho phương pháp này hoạt động. Hiểu các nguyên tắc cơ bản sẽ giúp bạn khi bạn tìm hiểu sâu hơn về Khoa học dữ liệu và Học máy và bắt đầu phát triển các mô hình của riêng mình

Bạn có thể viết một thuật toán trong Excel không?

Công cụ biểu đồ dữ liệu của Excel có thể tạo mô hình máy học để dự đoán những thay đổi về giá trị của dữ liệu . Nó cũng có một tính năng gọi là Đường xu hướng có thể tạo mô hình hồi quy từ dữ liệu. Đường xu hướng có thể được đặt thành các loại thuật toán hồi quy khác nhau như tuyến tính, logarit, hàm mũ và đa thức.

Làm thế nào để viết công thức trong Excel?

Tạo công thức đơn giản trong Excel .
Trên trang tính, bấm vào ô mà bạn muốn nhập công thức
Nhập = (dấu bằng) theo sau là các hằng số và toán tử (tối đa 8192 ký tự) mà bạn muốn sử dụng trong phép tính. Ví dụ của chúng tôi, gõ =1+1. ghi chú. .
Nhấn Enter (Windows) hoặc Return (Mac)

Excel có ngôn ngữ kịch bản không?

Tập lệnh Office được viết bằng TypeScript, đây là tập hợp siêu lớn của JavaScript . Nếu bạn quen thuộc với JavaScript, kiến ​​thức của bạn sẽ tiếp tục vì phần lớn mã giống nhau ở cả hai ngôn ngữ.

Ngôn ngữ mã hóa nào được sử dụng trong Excel?

VBA là viết tắt của Visual Basic for Application . VBA là một ngôn ngữ lập trình được phát triển bởi Microsoft Corp. và nó được tích hợp vào các ứng dụng chính của Microsoft Office, chẳng hạn như Word, Excel và Access.