Kiến thức cơ bản về API tổng hợp riêng tư

Các khái niệm chính của Private Aggregation API

Tài liệu này dành cho ai?

Private Aggregation API cho phép thu thập dữ liệu tổng hợp từ các worklet có quyền truy cập vào dữ liệu trên nhiều trang web. Các khái niệm được chia sẻ ở đây rất quan trọng đối với những nhà phát triển xây dựng các chức năng báo cáo trong Shared Storage API và Protected Audience API.

  • Nếu bạn là một nhà phát triển đang xây dựng hệ thống báo cáo để đo lường trên nhiều trang web.
  • Nếu bạn là nhà tiếp thị, nhà khoa học dữ liệu hoặc người dùng báo cáo tóm tắt khác, thì việc hiểu rõ các cơ chế này sẽ giúp bạn đưa ra quyết định thiết kế để truy xuất một báo cáo tóm tắt được tối ưu hoá.

Từ khóa

Trước khi đọc tài liệu này, bạn nên làm quen với các thuật ngữ và khái niệm chính. Mỗi thuật ngữ này sẽ được mô tả chi tiết tại đây.

  • Khoá tổng hợp (còn được gọi là nhóm) là một tập hợp các điểm dữ liệu được xác định trước. Ví dụ: bạn có thể muốn thu thập một nhóm dữ liệu vị trí mà trình duyệt báo cáo tên quốc gia. Khoá tổng hợp có thể chứa nhiều phương diện (ví dụ: quốc gia và mã nhận dạng của tiện ích nội dung).
  • Giá trị có thể tổng hợp là một điểm dữ liệu riêng lẻ được thu thập vào một khoá tổng hợp. Nếu bạn muốn đo lường số lượng người dùng ở Pháp đã xem nội dung của bạn, thì France là một phương diện trong khoá tổng hợp và viewCount của 1 là giá trị có thể tổng hợp.
  • Báo cáo có thể tổng hợp được tạo và mã hoá trong một trình duyệt. Đối với Private Aggregation API, thông tin này chứa dữ liệu về một sự kiện duy nhất.
  • Dịch vụ tổng hợp xử lý dữ liệu từ các báo cáo có thể tổng hợp để tạo báo cáo tóm tắt.
  • Báo cáo tóm tắt là kết quả cuối cùng của Dịch vụ tổng hợp, chứa dữ liệu người dùng tổng hợp có nhiễu và dữ liệu chi tiết về lượt chuyển đổi.
  • Worklet là một phần của cơ sở hạ tầng cho phép bạn chạy các hàm JavaScript cụ thể và trả thông tin về cho bên yêu cầu. Trong một worklet, bạn có thể thực thi JavaScript nhưng không thể tương tác hoặc giao tiếp với trang bên ngoài.

Quy trình Tổng hợp riêng tư

Khi bạn gọi Private Aggregation API bằng một khoá tổng hợp và một giá trị có thể tổng hợp, trình duyệt sẽ tạo một báo cáo có thể tổng hợp. Các báo cáo này sẽ được gửi đến máy chủ của bạn để xử lý theo lô. Sau đó, Dịch vụ tổng hợp sẽ xử lý các báo cáo theo lô và tạo ra một báo cáo tóm tắt.

Dữ liệu sẽ chuyển từ ứng dụng đến trình thu thập dữ liệu, sau đó đến Dịch vụ tổng hợp để tạo báo cáo tóm tắt.
Luồng dữ liệu từ máy khách đến trình thu thập.
  1. Khi bạn gọi Private Aggregation API, ứng dụng (trình duyệt) sẽ tạo và gửi báo cáo có thể tổng hợp đến máy chủ của bạn để thu thập.
  2. Máy chủ của bạn thu thập báo cáo từ các ứng dụng và gộp các báo cáo đó thành lô để gửi đến Dịch vụ tổng hợp.
  3. Sau khi thu thập đủ báo cáo, bạn sẽ tạo lô và gửi các báo cáo đó đến Dịch vụ tổng hợp (chạy trong một môi trường thực thi đáng tin cậy) để tạo báo cáo tóm tắt.

Quy trình công việc được mô tả trong phần này tương tự như Attribution Reporting API. Tuy nhiên, Attribution Reporting liên kết dữ liệu thu thập được từ một sự kiện hiển thị và một sự kiện chuyển đổi xảy ra vào những thời điểm khác nhau. Tổng hợp riêng tư đo lường một sự kiện duy nhất trên nhiều trang web.

Khoá tổng hợp

Một khoá tổng hợp ("khoá" cho ngắn gọn) đại diện cho nhóm nơi các giá trị có thể tổng hợp sẽ được tích luỹ. Bạn có thể mã hoá một hoặc nhiều phương diện vào khoá. Phương diện đại diện cho một khía cạnh mà bạn muốn hiểu rõ hơn, chẳng hạn như nhóm tuổi của người dùng hoặc số lượt hiển thị của một chiến dịch quảng cáo.

Ví dụ: bạn có thể có một tiện ích được nhúng trên nhiều trang web và muốn phân tích quốc gia của những người dùng đã nhìn thấy tiện ích của bạn. Bạn đang tìm cách trả lời những câu hỏi như "Có bao nhiêu người dùng đã xem tiện ích của tôi đến từ Quốc gia X?" Để báo cáo về câu hỏi này, bạn có thể thiết lập một khoá tổng hợp mã hoá 2 phương diện: mã nhận dạng tiện ích và mã nhận dạng quốc gia.

Khoá được cung cấp cho Private Aggregation API là một BigInt, bao gồm nhiều phương diện. Trong ví dụ này, các phương diện là mã nhận dạng tiện ích và mã nhận dạng quốc gia. Giả sử mã nhận dạng tiện ích có thể dài tối đa 4 chữ số, chẳng hạn như 1234, và mỗi quốc gia được liên kết với một số theo thứ tự bảng chữ cái, chẳng hạn như Afghanistan là 1, Pháp là 61 và Zimbabwe là 195. Do đó, khoá có thể tổng hợp sẽ có độ dài 7 chữ số, trong đó 4 ký tự đầu tiên được dành riêng cho WidgetID và 3 ký tự cuối cùng được dành riêng cho CountryID.

Giả sử khoá đại diện cho số lượng người dùng ở Pháp (mã quốc gia 061) đã nhìn thấy mã nhận dạng tiện ích 3276, thì khoá tổng hợp là 3276061.

Khoá tổng hợp
Mã tiện ích Mã quốc gia
3276 061

Bạn cũng có thể tạo khoá tổng hợp bằng cơ chế băm, chẳng hạn như SHA-256. Ví dụ: chuỗi {"WidgetId":3276,"CountryID":67} có thể được băm rồi chuyển đổi thành giá trị BigInt42943797454801331377966796057547478208888578253058197330928948081739249096287n. Nếu giá trị băm có hơn 128 bit, bạn có thể cắt bớt giá trị đó để đảm bảo giá trị này không vượt quá giá trị tối đa được phép của nhóm là 2^128−1.

Trong một worklet Bộ nhớ dùng chung, bạn có thể truy cập vào các mô-đun cryptoTextEncoder có thể giúp bạn tạo một hàm băm. Để tìm hiểu thêm về cách tạo hàm băm, hãy xem SubtleCrypto.digest() trên MDN.

Ví dụ sau đây mô tả cách bạn có thể tạo khoá nhóm từ một giá trị đã băm:

async function convertToBucket(data) {
  // Encode as UTF-8 Uint8Array
  const encodedData = new TextEncoder().encode(data);

  // Generate SHA-256 hash
  const hashBuffer = await crypto.subtle.digest('SHA-256', encodedData);

  // Truncate the hash
  const truncatedHash = Array.from(new Uint8Array(hashBuffer, 0, 16));

  // Convert the byte sequence to a decimal
  return truncatedHash.reduce((acc, curr) => acc * 256n + BigInt(curr), 0n);
}

const data = {
  WidgetId: 3276,
  CountryID: 67
};

const dataString = JSON.stringify(data);
const bucket = await convertToBucket(dataString);

console.log(bucket); // 126200478277438733997751102134640640264n

Giá trị có thể tổng hợp

Các giá trị có thể tổng hợp được tính tổng theo khoá trên nhiều người dùng để tạo thông tin chi tiết tổng hợp dưới dạng các giá trị tóm tắt trong báo cáo tóm tắt.

Bây giờ, hãy quay lại câu hỏi ví dụ đã đặt trước đó: "Có bao nhiêu người dùng đã xem tiện ích của tôi đến từ Pháp?" Câu trả lời cho câu hỏi này sẽ có dạng như "Khoảng 4.881 người dùng đã nhìn thấy Tiện ích 3276 của tôi đến từ Pháp". Giá trị có thể tổng hợp là 1 cho mỗi người dùng và "4881 người dùng" là giá trị tổng hợp, tức là tổng của tất cả giá trị có thể tổng hợp cho khoá tổng hợp đó.

Khoá tổng hợp Giá trị có thể tổng hợp
Mã tiện ích Mã quốc gia Số lượt xem
3276 061 1

Trong ví dụ này, chúng ta sẽ tăng giá trị thêm 1 cho mỗi người dùng nhìn thấy tiện ích. Trên thực tế, giá trị có thể tổng hợp có thể được điều chỉnh quy mô để cải thiện tỷ lệ tín hiệu trên nhiễu.

Ngân sách đóng góp

Mỗi lệnh gọi đến Private Aggregation API được gọi là một đóng góp. Để bảo vệ quyền riêng tư của người dùng, số lượng thông tin đóng góp có thể thu thập từ một cá nhân sẽ bị giới hạn.

Khi bạn tính tổng tất cả các giá trị có thể tổng hợp trên tất cả các khoá tổng hợp, tổng này phải nhỏ hơn ngân sách đóng góp. Ngân sách được giới hạn theo nguồn gốc mỗi worklet, mỗi ngày và tách biệt cho Protected Audience API và worklet Shared Storage. Một khoảng thời gian liên tục khoảng 24 giờ qua được dùng cho ngày. Nếu một báo cáo tổng hợp mới khiến ngân sách bị vượt quá, thì báo cáo đó sẽ không được tạo.

Ngân sách đóng góp được biểu thị bằng tham số L1 và được đặt thành 216 (65.536) cho mỗi 10 phút mỗi ngày với mức tối đa là 220 (1.048.576). Hãy xem giải thích để tìm hiểu thêm về các thông số này.

Giá trị của ngân sách đóng góp là tuỳ ý, nhưng nhiễu sẽ được điều chỉnh theo giá trị đó. Bạn có thể sử dụng ngân sách này để tối đa hoá tỷ lệ tín hiệu trên nhiễu cho các giá trị tóm tắt (sẽ được thảo luận thêm trong phần Nhiễu và việc mở rộng quy mô).

Để tìm hiểu thêm về ngân sách đóng góp, hãy xem bài giải thích. Ngoài ra, hãy tham khảo Ngân sách đóng góp để biết thêm hướng dẫn.

Giới hạn đóng góp cho mỗi báo cáo

Tuỳ thuộc vào người gọi, hạn mức đóng góp có thể khác nhau và đối với Bộ nhớ dùng chung, đây là hạn mức mặc định mà bạn có thể thay thế. Tại thời điểm này, các báo cáo được tạo cho các đối tượng gọi Shared Storage API bị giới hạn ở 20 lượt đóng góp cho mỗi báo cáo. Mặt khác, số lượng lệnh gọi Protected Audience API bị giới hạn ở 100 lượt đóng góp cho mỗi báo cáo. Những giới hạn này được chọn để cân bằng số lượng nội dung đóng góp có thể được nhúng với kích thước của tải trọng.

Đối với Bộ nhớ dùng chung, những nội dung đóng góp trong một thao tác run() hoặc selectURL() sẽ được gộp vào một báo cáo. Đối với Protected Audience, các lượt đóng góp của một nguồn duy nhất trong một phiên đấu giá sẽ được gộp lại với nhau.

Thành phần kết hợp có khoảng đệm

Nội dung đóng góp được sửa đổi thêm bằng tính năng khoảng đệm. Hành động thêm phần đệm vào tải trọng giúp bảo vệ thông tin về số lượng đóng góp thực tế được nhúng trong báo cáo có thể tổng hợp. Phần đệm sẽ tăng tải trọng bằng các đóng góp null (tức là có giá trị bằng 0) để đạt được độ dài cố định.

Các báo cáo tổng hợp

Sau khi người dùng gọi Private Aggregation API, trình duyệt sẽ tạo các báo cáo có thể tổng hợp để Dịch vụ tổng hợp xử lý sau này nhằm tạo báo cáo tóm tắt. Báo cáo có thể tổng hợp có định dạng JSON và chứa một danh sách đóng góp được mã hoá, mỗi danh sách là một cặp {aggregation key, aggregatable value}. Các báo cáo tổng hợp được gửi đi với độ trễ ngẫu nhiên lên đến một giờ.

Các khoản đóng góp được mã hoá và không đọc được bên ngoài Dịch vụ tổng hợp. Dịch vụ tổng hợp sẽ giải mã các báo cáo và tạo báo cáo tóm tắt. Khoá mã hoá cho trình duyệt và khoá giải mã cho Dịch vụ tổng hợp do điều phối viên phát hành. Điều phối viên đóng vai trò là dịch vụ quản lý khoá. Trình điều phối lưu giữ danh sách các hàm băm nhị phân của hình ảnh dịch vụ để xác minh rằng trình gọi được phép nhận khoá giải mã.

Ví dụ về báo cáo có thể tổng hợp khi bật chế độ gỡ lỗi:

  "aggregation_service_payloads": [
    {
      "debug_cleartext_payload": "omRkYXRhgaJldmFsdWVEAAAAgGZidWNrZXRQAAAAAAAAAAAAAAAAAAAE0mlvcGVyYXRpb25paGlzdG9ncmFt",
      "key_id": "2cc72b6a-b92f-4b78-b929-e3048294f4d6",
      "payload": "a9Mk3XxvnfX70FsKrzcLNZPy+00kWYnoXF23ZpNXPz/Htv1KCzl/exzplqVlM/wvXdKUXCCtiGrDEL7BQ6MCbQp1NxbWzdXfdsZHGkZaLS2eF+vXw2UmLFH+BUg/zYMu13CxHtlNSFcZQQTwnCHb"
    }
  ],
  "debug_key": "777",
  "shared_info": "{\"api\":\"shared-storage\",\"debug_mode\":\"enabled\",\"report_id\":\"5bc74ea5-7656-43da-9d76-5ea3ebb5fca5\",\"reporting_origin\":\"https://localhost:4437\",\"scheduled_report_time\":\"1664907229\",\"version\":\"0.1\"}"

Bạn có thể kiểm tra báo cáo tổng hợp trên trang chrome://private-aggregation-internals:

Trang nội bộ của Private Aggregation API
Trang nội bộ của Private Aggregation API

Để kiểm thử, bạn có thể dùng nút "Gửi báo cáo đã chọn" để gửi báo cáo đến máy chủ ngay lập tức.

Thu thập và xử lý hàng loạt các báo cáo tổng hợp

Trình duyệt sẽ gửi các báo cáo có thể tổng hợp đến nguồn gốc của worklet chứa lệnh gọi đến Private Aggregation API, bằng cách sử dụng đường dẫn đã biết được liệt kê:

  • Đối với Bộ nhớ dùng chung: /.well-known/private-aggregation/report-shared-storage
  • Đối với Protected Audience: /.well-known/private-aggregation/report-protected-audience

Tại các điểm cuối này, bạn sẽ cần vận hành một máy chủ (đóng vai trò là một trình thu thập) nhận các báo cáo có thể tổng hợp được gửi từ các ứng dụng.

Sau đó, máy chủ sẽ phân lô các báo cáo và gửi lô đó đến Dịch vụ tổng hợp. Tạo các lô dựa trên thông tin có trong tải trọng chưa mã hoá của báo cáo tổng hợp, chẳng hạn như trường shared_info. Lý tưởng nhất là mỗi lô nên chứa từ 100 báo cáo trở lên.

Bạn có thể quyết định xử lý theo lô hằng ngày hoặc hằng tuần. Chiến lược này linh hoạt và bạn có thể thay đổi chiến lược phân lô cho các sự kiện cụ thể mà bạn dự kiến sẽ có nhiều lượt hiển thị hơn, chẳng hạn như những ngày trong năm mà bạn dự kiến sẽ có nhiều lượt hiển thị hơn. Các lô phải bao gồm báo cáo từ cùng một phiên bản API, nguồn gốc báo cáo và thời gian báo cáo theo lịch.

Mã bộ lọc

Private Aggregation API và Aggregation Service cho phép sử dụng các mã nhận dạng lọc để xử lý các phép đo ở cấp độ chi tiết hơn, chẳng hạn như theo từng chiến dịch quảng cáo thay vì xử lý kết quả trong các truy vấn lớn hơn.

Tính năng Tổng hợp riêng tư và lọc mã nhận dạng Dịch vụ tổng hợp.
Private Aggregation và Aggregation Service lọc các mã nhận dạng.

Để bắt đầu sử dụng tính năng này ngay hôm nay, bạn có thể tham khảo một số bước sơ bộ để áp dụng cho chế độ triển khai hiện tại.

Các bước trong Bộ nhớ dùng chung

Nếu bạn đang sử dụng Shared Storage API trong quy trình của mình:

  1. Xác định vị trí bạn sẽ khai báo và chạy mô-đun Bộ nhớ dùng chung mới. Trong ví dụ sau, chúng ta đã đặt tên cho tệp mô-đun là filtering-worklet.js, được đăng ký trong filtering-example.

    (async function runFilteringIdsExample () {
    await window.sharedStorage.worklet.addModule('filtering-worklet.js');
    await window.sharedStorage.run('filtering-example', {
      keepAlive: true,
      privateAggregationConfig: {
        contextId: 'example-id',
        filteringIdMaxBytes: 8 // optional
      }
    }});
    })();
    

    Xin lưu ý rằng bạn có thể định cấu hình filteringIdMaxBytes cho mỗi báo cáo và nếu không được đặt, giá trị mặc định sẽ là 1. Giá trị mặc định này là để ngăn việc tăng kích thước tải trọng một cách không cần thiết, từ đó làm tăng chi phí lưu trữ và xử lý. Đọc thêm trong phần giải thích về tính năng đóng góp linh hoạt.

  2. Trong filtering-worklet.js, khi truyền một giá trị đóng góp đến privateAggregation.contributeToHistogram(...) trong worklet Shared Storage, bạn có thể chỉ định một mã nhận dạng lọc.

    // Within  filtering-worklet.js
    class FilterOperation {
      async run() {
        let contributions = [{
          bucket: 1234n,
          value: 56,
          filteringId: 3n // defaults to 0n if not assigned, type bigint
        }];
    
        for (const c of contributions) {
          privateAggregation.contributeToHistogram(c);
        }
        
    }
    });
    
    register('filtering-example', FilterOperation);
    
  3. Báo cáo có thể tổng hợp sẽ được gửi đến nơi bạn đã xác định điểm cuối /.well-known/private-aggregation/report-shared-storage. Tiếp tục xem hướng dẫn lọc mã nhận dạng để tìm hiểu về những thay đổi cần thiết trong các thông số của tác vụ Aggregation Service.

Sau khi quá trình phân lô hoàn tất và được gửi đến Dịch vụ tổng hợp đã triển khai, kết quả được lọc sẽ xuất hiện trong báo cáo tóm tắt cuối cùng.

Các bước trong Protected Audience

Nếu bạn đang sử dụng Protected Audience API trong quy trình của mình:

  1. Trong quá trình triển khai Protected Audience hiện tại, bạn có thể đặt những nội dung sau để kết nối với Private Aggregation. Không giống như Bộ nhớ dùng chung, bạn chưa thể định cấu hình kích thước tối đa của mã nhận dạng lọc. Theo mặc định, kích thước tối đa của mã nhận dạng lọc là 1 byte và sẽ được đặt thành 0n. Xin lưu ý rằng các thông số này sẽ được đặt trong các hàm báo cáo Protected Audience (ví dụ: reportResult() hoặc generateBid()).

    const contribution = {
      ...
      filteringId: 0n
    };
    
    privateAggregation.contributeToHistogram(contribution);
    
  2. Báo cáo có thể tổng hợp sẽ được gửi đến nơi bạn đã xác định điểm cuối /.well-known/private-aggregation/report-protected-audience. Sau khi quá trình xử lý hàng loạt hoàn tất và được gửi đến Dịch vụ tổng hợp đã triển khai, kết quả được lọc sẽ xuất hiện trong báo cáo tóm tắt cuối cùng. Các tài liệu giải thích sau đây cho Attribution Reporting API và Private Aggregation API hiện có, cũng như đề xuất ban đầu.

Tiếp tục xem hướng dẫn lọc mã nhận dạng của chúng tôi trong Dịch vụ tổng hợp hoặc chuyển đến các phần API Báo cáo phân bổ để đọc thông tin chi tiết hơn.

Dịch vụ tổng hợp

Dịch vụ này chạy trong một TEE, giải mã các báo cáo tổng hợp và thêm độ nhiễu để tạo báo cáo tóm tắt cuối cùng.
Dịch vụ này chạy trong một TEE, giải mã các báo cáo tổng hợp và thêm độ nhiễu để tạo báo cáo tóm tắt cuối cùng.

Dịch vụ tổng hợp nhận các báo cáo tổng hợp được mã hoá từ trình thu thập và tạo báo cáo tóm tắt. Để biết thêm các chiến lược về cách tạo lô báo cáo có thể tổng hợp trong trình thu thập dữ liệu, hãy xem hướng dẫn tạo lô của chúng tôi.

Dịch vụ này chạy trong một môi trường thực thi đáng tin cậy (TEE), mang đến một mức độ đảm bảo về tính toàn vẹn của dữ liệu, tính bảo mật của dữ liệu và tính toàn vẹn của mã. Nếu bạn muốn tìm hiểu kỹ hơn về cách các điều phối viên được dùng cùng với TEE, hãy đọc thêm về vai trò và mục đích của họ.

Báo cáo tóm tắt

Báo cáo tóm tắt cho phép bạn xem dữ liệu đã thu thập có thêm tiếng ồn. Bạn có thể yêu cầu báo cáo tóm tắt cho một nhóm khoá nhất định.

Báo cáo tóm tắt chứa một tập hợp các cặp khoá-giá trị theo kiểu từ điển JSON. Mỗi cặp đều chứa:

  • bucket: khoá tổng hợp dưới dạng chuỗi số nhị phân. Nếu khoá tổng hợp được dùng là "123", thì giá trị nhận dạng nhóm là "1111011".
  • value: giá trị tóm tắt cho một mục tiêu đo lường nhất định, được tổng hợp từ tất cả các báo cáo có thể tổng hợp hiện có và có thêm nhiễu.

Ví dụ:

[
  {"bucket":` `"111001001",` `"value":` `"2558500"},
  {"bucket":` `"111101001",` `"value":` `"3256211"},
  {"bucket":` `"111101001",` `"value":` `"6536542"},
]

Độ nhiễu và tỷ lệ

Để bảo vệ quyền riêng tư của người dùng, Dịch vụ tổng hợp sẽ thêm nhiễu một lần vào mỗi giá trị tóm tắt mỗi khi có yêu cầu báo cáo tóm tắt. Các giá trị nhiễu được rút ngẫu nhiên từ phân phối xác suất Laplace. Mặc dù không trực tiếp kiểm soát cách thêm nhiễu, nhưng bạn có thể tác động đến mức độ ảnh hưởng của nhiễu đối với dữ liệu đo lường.

Phân phối nhiễu là như nhau bất kể tổng của tất cả các giá trị có thể tổng hợp. Do đó, giá trị có thể tổng hợp càng cao thì khả năng yếu tố ảnh hưởng tác động càng thấp.

Ví dụ: giả sử phân phối nhiễu có độ lệch chuẩn là 100 và được đặt ở giữa tại 0. Nếu giá trị báo cáo có thể tổng hợp đã thu thập (hoặc "giá trị có thể tổng hợp") chỉ là 200, thì độ lệch chuẩn của nhiễu sẽ là 50% giá trị được tổng hợp. Tuy nhiên, nếu giá trị có thể tổng hợp là 20.000,thì độ lệch chuẩn của nhiễu sẽ chỉ là 0, 5% giá trị được tổng hợp. Do đó, giá trị có thể tổng hợp là 20.000 sẽ có tỷ lệ tín hiệu trên nhiễu cao hơn nhiều.

Do đó, việc nhân giá trị có thể tổng hợp của bạn với một hệ số tỷ lệ có thể giúp giảm nhiễu. Hệ số tỷ lệ biểu thị mức độ bạn muốn chia tỷ lệ một giá trị có thể tổng hợp nhất định.

Nhiễu không đổi bất kể giá trị tổng hợp.
Hằng số nhiễu bất kể giá trị tổng hợp.

Việc tăng các giá trị bằng cách chọn hệ số tỷ lệ lớn hơn sẽ làm giảm nhiễu tương đối. Tuy nhiên, điều này cũng khiến tổng của tất cả các khoản đóng góp trên tất cả các nhóm đạt đến giới hạn ngân sách đóng góp nhanh hơn. Việc giảm các giá trị bằng cách chọn hằng số hệ số tỷ lệ nhỏ hơn sẽ làm tăng nhiễu tương đối, nhưng giảm nguy cơ đạt đến giới hạn ngân sách.

Chia tỷ lệ giá trị có thể tổng hợp theo ngân sách đóng góp.
Điều chỉnh giá trị có thể tổng hợp theo tỷ lệ với ngân sách đóng góp.

Để tính hệ số tỷ lệ phù hợp, hãy chia ngân sách đóng góp cho tổng tối đa của các giá trị có thể tổng hợp trên tất cả các khoá.

Hãy xem Tài liệu về ngân sách đóng góp để tìm hiểu thêm.

Tương tác và chia sẻ ý kiến phản hồi

Private Aggregation API đang được thảo luận tích cực và có thể thay đổi trong tương lai. Nếu bạn dùng thử API này và có ý kiến phản hồi, chúng tôi rất mong nhận được ý kiến của bạn.