Trang Chủ Tài chính Cá nhân Cách tìm số lượng các yếu tố trong luồng dữ liệu - núm vú

Cách tìm số lượng các yếu tố trong luồng dữ liệu - núm vú

Video: [Lập trình C# Winform] - Bài 19: Thread trong Winform | HowKteam 2025

Video: [Lập trình C# Winform] - Bài 19: Thread trong Winform | HowKteam 2025
Anonim

Mặc dù một bộ lọc Bloom có ​​thể theo dõi các vật đến từ một dòng, nó không thể cho biết có bao nhiêu đối tượng ở đó. Một vector bit đầy bởi những cái có thể (phụ thuộc vào số lượng băm và xác suất va chạm) ẩn số thực của các đối tượng được băm tại cùng một địa chỉ.

Biết được số lượng đối tượng riêng biệt rất hữu ích trong các tình huống khác nhau, chẳng hạn như khi bạn muốn biết có bao nhiêu người dùng khác biệt đã nhìn thấy một trang web nhất định hoặc số truy vấn công cụ tìm kiếm riêng biệt. Lưu trữ tất cả các yếu tố và tìm kiếm các bản sao trong số chúng không thể làm việc với hàng triệu yếu tố, đặc biệt là từ một dòng suối. Khi bạn muốn biết số lượng các đối tượng khác biệt trong một luồng, bạn vẫn phải dựa vào một hàm băm, nhưng phương pháp này liên quan đến việc lấy một phác thảo số.

Sketching có nghĩa là lấy một xấp xỉ, đó là một giá trị chưa chính xác nhưng không hoàn toàn sai là một câu trả lời. Xấp xỉ có thể chấp nhận được vì giá trị thực không xa lắm. Trong thuật toán thông minh này, HyperLogLog, dựa trên xác suất và xấp xỉ, bạn sẽ quan sát được các đặc tính của con số được tạo ra từ luồng. HyperLogLog xuất phát từ các nghiên cứu của các nhà khoa học máy tính Nigel Martin và Philippe Flajolet. Flajolet đã cải thiện thuật toán ban đầu của họ, Flajolet-Martin (hoặc thuật toán LogLog), vào phiên bản HyperLogLog mạnh mẽ hơn, hoạt động như sau:

  1. Một hash chuyển đổi mọi phần tử nhận được từ luồng thành một số.
  2. Thuật toán chuyển đổi số thành nhị phân, tiêu chuẩn số 2 cơ sở mà máy tính sử dụng.
  3. Thuật toán đếm số số không ban đầu trong số nhị phân và các bài hát của số cực đại mà nó thấy, là n.
  4. Thuật toán ước tính số lượng các phần tử khác biệt được truyền trong luồng bằng n Số lượng các yếu tố khác biệt là 2 ^ n.
Ví dụ, phần tử đầu tiên trong chuỗi là từ

con chó. Thuật toán băm nó thành một giá trị số nguyên và chuyển nó thành nhị phân, với kết quả là 01101010. Chỉ một số không xuất hiện ở đầu số, do đó, thuật toán ghi nó như là số lượng các số không tối đa được nhìn thấy. Sau đó, thuật toán sẽ thấy các từ vẹt và sói, có các số tương đương nhị phân là 11101011 và 01101110, để lại n không thay đổi. Tuy nhiên, khi cat vượt qua, đầu ra là 00101110, vì vậy n trở thành 2. Để ước tính số lượng các phần tử riêng biệt, thuật toán tính 2 ^ n, nghĩa là, 2 ^ 2 = 4. Hình minh họa quá trình này. Chỉ đếm hàng đầu.

Bí quyết của thuật toán là nếu băm của bạn tạo ra các kết quả ngẫu nhiên, phân bố đều (như trong bộ lọc Bloom), bằng cách nhìn vào biểu diễn nhị phân, bạn có thể tính toán xác suất có một chuỗi các số không xuất hiện. Bởi vì xác suất của một số nhị phân duy nhất là 0 là một trong hai, để tính xác suất của chuỗi các số không, bạn chỉ cần nhân rằng 1/2 xác suất nhiều lần như độ dài của chuỗi các số không:

50 phần trăm (1/2) xác suất đối với số bắt đầu với 0

  • 25 phần trăm (1/2 * 1/2) xác suất cho số bắt đầu từ 00
  • 12. Xác suất xác suất 5% (1/2 * 1/2 * 1/2) đối với số bắt đầu bằng 000
  • (1/2) ^ k xác suất cho số bắt đầu bằng số không k (bạn sử dụng quyền hạn để tính toán nhanh hơn nhiều phép nhân của cùng một con số)
  • Số lượng mà HyperLogLog nhìn thấy càng ít, sự không chính xác càng lớn. Độ chính xác tăng khi bạn sử dụng tính toán HyperLogLog nhiều lần sử dụng các hàm băm khác nhau và tính trung bình các câu trả lời từ mỗi phép tính, nhưng băm nhiều lần cần thời gian, và các luồng nhanh. Thay vào đó, bạn có thể sử dụng cùng một hàm băm nhưng chia luồng thành các nhóm (chẳng hạn như bằng cách tách các phần tử thành các nhóm khi chúng đến dựa vào thứ tự đến) và cho mỗi nhóm, bạn có thể theo dõi số lượng số không tối đa. Cuối cùng, bạn tính ước tính chi tiết riêng biệt cho từng nhóm và tính toán trung bình số học của tất cả các ước tính. Cách tiếp cận này là trung bình stochastic và cung cấp ước lượng chính xác hơn so với việc áp dụng các thuật toán cho toàn bộ dòng.
Cách tìm số lượng các yếu tố trong luồng dữ liệu - núm vú

Lựa chọn của người biên tập

Web Marketing: Loại bỏ đăng ký và đăng nhập để đảm bảo khả năng hiển thị - núm vú

Web Marketing: Loại bỏ đăng ký và đăng nhập để đảm bảo khả năng hiển thị - núm vú

Tiếp thị web, một cách để đảm bảo khả năng hiển thị là để loại bỏ đăng ký và các hình thức đăng nhập. Khách truy cập thường phải hoàn thành các biểu mẫu này trước khi họ có thể tải xuống một số loại nội dung cao cấp, chẳng hạn như giấy trắng hoặc trước khi họ có thể đọc một số bài viết trên trang web. Các công ty đã đưa chúng vào vị trí vì họ muốn dẫn ...

Web Marketing: Làm thế nào để Tránh Duplicate Content - núm vú

Web Marketing: Làm thế nào để Tránh Duplicate Content - núm vú

Duplicate nội dung cần tránh trong web tiếp thị và Google cung cấp công cụ để phát hiện thông tin lặp lại. Không có gì gây tổn hại cho việc tìm kiếm nội dung có liên quan của công cụ tìm kiếm cũng như tìm ra chính xác những từ giống nhau trên hai trang khác nhau. Sao chép là xấu vì những lý do này: Sao chép được sử dụng để được một chiến thuật được sử dụng để đánh lừa ...

Web Marketing: Làm thế nào để Deal với Broken Links - núm vú

Web Marketing: Làm thế nào để Deal với Broken Links - núm vú

Trong bài hát của họ. Là một nhà tiếp thị web, việc xử lý các liên kết hỏng này có thể giúp đảm bảo sự thành công của trang web của bạn. Nếu một công cụ tìm kiếm đạt đến một liên kết bị hỏng, nó không thể tìm thấy trang bạn dự định (rõ ràng) - nhưng nó cũng có thể bỏ trên trang web của bạn hoặc giảm sự liên quan ...

Lựa chọn của người biên tập

Các kiểu dữ liệu điểm nổi trong Java - núm vú

Các kiểu dữ liệu điểm nổi trong Java - núm vú

Số dấu phẩy động là số có các phần phân đoạn (thường được thể hiện bằng dấu thập phân). Bạn nên sử dụng một kiểu điểm nổi trong các chương trình Java bất cứ khi nào bạn cần một số có số thập phân, như là 19. 95 hoặc 3. 1415. Java có hai kiểu nguyên thủy cho các số dấu phẩy: float: Sử dụng 4 byte gấp đôi: Sử dụng 8 bytes Trong hầu hết tất cả ...

Tải phiên bản mới nhất của Java - núm vú

Tải phiên bản mới nhất của Java - núm vú

Trước khi bạn có thể viết các chương trình Java cho các thiết bị Android, bạn cần một số phần mềm công cụ, bao gồm cả phiên bản mới nhất của Java. Bạn có thể có được phiên bản Java mới nhất và lớn nhất bằng cách truy cập vào trang web Java. Trang web cung cấp một số lựa chọn thay thế. (Được giới thiệu) Nhấp chuột vào nút Free Java Download trên trang chính của trang web. Đối với hầu hết các máy tính, ...

Thử nghiệm với JShell - núm vú

Thử nghiệm với JShell - núm vú

JShell là một công cụ Java 9 cho phép bạn khám phá về lập trình. JShell làm cho nó dễ dàng để chơi xung quanh mà không sợ hậu quả thảm khốc. Các chương trình Java thường sử dụng cùng kiểu cũ, lúng túng: public class SomethingOrOther {public static void main (String args []) {Một chương trình Java đòi hỏi sự giới thiệu này bởi vì trong Java ...

Lựa chọn của người biên tập

Hẹn hò Sau 50: Tâm linh và Tôn giáo - những con voi

Hẹn hò Sau 50: Tâm linh và Tôn giáo - những con voi

Bản quyền © 2014 AARP Tất cả các quyền được bảo lưu. Tâm linh và tôn giáo, tình dục, những trò vui nhộn nhịp, sự tham gia của gia đình, lối sống và tiền bạc - tất cả những điều này thường quan trọng đối với những người trên 50 tuổi, nhưng bạn có thể đặt một số cao hơn những người khác. Trong bất kỳ trường hợp nào, điều quan trọng là phải suy nghĩ về họ trước để bạn có thể thảo luận ...

Hẹn hò Sau 50: Nói về Monogami - vú

Hẹn hò Sau 50: Nói về Monogami - vú

Bản quyền © 2014 AARP. Đã đăng ký Bản quyền. Một vợ một chồng là một vấn đề lớn cho dù bạn là người chưa sẵn sàng cho vợ chồng một vợ chồng và muốn hẹn hò xung quanh hay người chỉ có thể quan hệ tình dục với một người một lần. Đảm bảo đối tác hẹn hò của bạn biết bạn đang đứng ở đâu (hoặc nằm xuống) đối với vợ chồng một vợ chồng ...

Hẹn hò Sau 50: Thảo luận về sức khoẻ cá nhân của bạn - những con voi

Hẹn hò Sau 50: Thảo luận về sức khoẻ cá nhân của bạn - những con voi

Bản quyền © 2014 AARP. Đã đăng ký Bản quyền. Nếu bạn bị bệnh mãn tính hoặc đe dọa đến mạng sống khi bạn còn nhỏ, bạn đã có kinh nghiệm về sức khoẻ của mình. Có thể bạn phải liên tục kể câu chuyện về vết sẹo ngực hoặc nẹp chân hoặc giải thích số ít các viên thuốc mà bạn phải dùng mỗi ngày. Nó không phải ...