WICG / turtledove

TURTLEDOVE
https://wicg.github.io/turtledove/
Other
522 stars 226 forks source link

Support for Negative Targeting in Protected Audience #896

Open fabricegaignier opened 10 months ago

fabricegaignier commented 10 months ago

As mentioned in the Protected Audience explainer:

In online ad auctions for ad space, it’s sometimes useful to prevent showing an ad to certain audiences, a concept known as negative targeting. For example, you might not want to show a new customer advertisement to existing customers. New customer acquisition campaigns most often have this as a critical requirement.

This concept of “negative targeting” has been added to Protected Audience for bids coming from the contextual call, using “negative Interest Groups”. We propose extending it to bids based on Interest Groups.

The idea would be to have the possibility to link Negative Interest Groups to ads in « Positive Interest Groups ». An ad would then be:

{renderUrl : "url", metadata : object, negativeInterestGroups : [list of negative IG names]}

When generateBid() gets called, the interestGroup.ads object gets filtered according to the negative interest groups present on the browser for the same owner using the negativeInterestGroups attribute of ads.

This mechanism would:

michaelkleber commented 10 months ago

Hello Fabrice: Would it meet your needs if we instead let negative Interest Groups filter out an entire Interest Group?

Filtering individual ads from a single IG, as you propose, could be used to give that IG a lot of information. For example, your IG could contain 100 ads that each negatively-target an IG that corresponds to the user having visited a particular website. In that case generateBid could look at the whole list of non-filtered ads and learn whether or not the user had visited each of 100 different sites.

Filtering out an entire Interest Group, however, works more like what you describe in your proposal: you can target ads in the normal Protected Audience way, and also you can un-target people in a negative IG. This does expand beyond the "only two sites of data" bidding model in place right now, by introduce just one bit of information from the third site where the negative IG was or was not joined. But that extra bit can only be used for filtering, and cannot be in any way bootstrapped or further combined across sites.

fabricegaignier commented 10 months ago

Thank you for your prompt answer. This would indeed meet our needs. Let’s describe the mechanism:

At InterestGroup creation time we would have an additional field in the interestGroup: interestGroup.negativeInterestGroups : [list of negative IG names] When navigator.runAdAuction is called, all interest groups having an entry for this field are filtered out if any of the negative Interest Groups specified is present on the browser.

This filtering would have the same treatment as a negative dot product in the process of filtering and prioritizing described here

Would that be the way you see it?

michaelkleber commented 9 months ago

Yes! Your description matches what I had in mind. This seems like a good addition from my point of view.

Heads up @orrb1, who wrote the negative targeting implementation.

remysaissy commented 4 months ago

Hello, at Teads, support for for negative targeting in protected audience can also help us in our use cases. I see the issue is still Open, yet the Fledge explainer mentions negativeInterestGroups. What is the status of this support? Is it rolled out (and the issue could be considered as closed?). Thanks!

jeremybaoty commented 3 months ago

Hi all,

I’m Jeremy, new product manager on the Protected Audience API. Our team is evaluating the negative interest group use cases, and thanks for all the valuable feedback you provided! Here we want to propose the following solutions:

  1. Support negative interest groups in protected audience bids

    • Add a field called “negativeInterestGroups” to the interestGroup object. This field accepts a list of negative IGs. The IG and negative IG must have the same owner.
    • When the auction is initiated, all IGs containing a negativeInterestGroup value that the user is included in will be filtered out.
  2. For contextual bids (where negative interest groups are already supported), we will remove the same origin requirement for negative IGs, so that it provides more flexible support to your use cases. Negative IGs in PA bids also won’t have the same origin requirement.

  3. Set a usage budget to prevent abuse and protect privacy:

    • A maximum limit of 3 negative IGs can be applied per bid (either PA bid or contextual bid)
    • A maximum limit of 10 additional bids with negative IGs is applied per buyer per component auction

With this proposal, in both contextual bids and PA bids, buyers can include multiple negative interest groups for targeting (from either the same or different origins).

We look forward to your feedback on how this solution meets your needs. Thanks a lot for your feedback!

dmdabbs commented 3 months ago

Hello @jeremybaoty. Welcome to the funhouse, and thanks for sharing your proposal.

A maximum limit of 3 negative IGs can be applied per bid (either PA bid or contextual bid)

I'm not tracking the per bid aspect, as the proposed field is an attribute of the IG (not a renderURL).

What is the interplay between negativeInterestGroups and the IG's updateability (since it is pre-filtered from the auction)?

Looking forward to hearing more in a Wendesday call.

fabricegaignier commented 2 months ago

Hello Jeremy,

Sorry for the late answer. We have been discussing your proposal internally and it took longer than expected.

We fully agree on removing the constraint on the origin to only impose that negative Interest Groups should have the same owner as the positive ones.

We would like as well to confirm that the signature mechanism with 'additionalBidKey' is not needed in this use case.

Regarding the limitation to 3 negative Interest Group specified in a positive Interest Group, we do agree with that limitation. However we do not see how removing/extending this limit would constitute a breach of privacy.

jeremybaoty commented 2 months ago

Hello @jeremybaoty. Welcome to the funhouse, and thanks for sharing your proposal.

A maximum limit of 3 negative IGs can be applied per bid (either PA bid or contextual bid)

I'm not tracking the per bid aspect, as the proposed field is an attribute of the IG (not a renderURL).

What is the interplay between negativeInterestGroups and the IG's updateability (since it is pre-filtered from the auction)?

Looking forward to hearing more in a Wendesday call.

Hi David,

Your feedback regarding the usage budget makes sense to me. I want to make some modifications the budget language here:

  1. For negative targeting in PA bids, A maximum limit of 3 negative IGs would be applied per IG
  2. For negative targeting in contextual bids (i.e. additional bids):
    • A maximum limit of 3 negative IGs would be applied per additional bid
    • A maximum limit of 10 additional bids with negative IGs would be applied per buyer per component auction

RE your question on updatability, an IG is allowed to do an update any time it is invited to participate in an auction — that is, any time a seller in the auction lists that IG owner as a buyer that can submit bids. This means: even when an IG is loaded but then filtered, it will be eligible for updates (subject to the IG's frequency limits).

Let me know if you have additional questions!

dmdabbs commented 2 months ago

Got it. Thanks for clarifying @jeremybaoty.

What about Fabrice's question about the key?

We would like as well to confirm that the signature mechanism with 'additionalBidKey' is not needed in this use case.

Perhaps we can cover it in today's call. I see there's an item for Negative targeting proposal, so I assume this issue.

eysegal commented 2 months ago

Hi @jeremybaoty, good luck in your new role! Unfortunately, as discussed in #1096, due to the nature of Native Advertising, which involves a lot of ads per call, sometimes dozens, we need the negative targeting information somehow available in the contextual call, so this solution doesn't help us.

xxia2021 commented 2 months ago

We fully support removing the same origin requirement for negative IGs. After some coverage analysis of advertiser use cases, we think maximum limit of 3 negative IGs per additional bid is not sufficient, can that be raised to 10 as well? That would cover the majority of use cases.

michaelkleber commented 2 months ago

@xxia2021 Allowing negative IGs from many domains means that a single auction's result can imply something about the user's behavior on more domains, which is a privacy problem. Why do you need so many different negative IGs for the same bid anyway? Maybe we can find another way for you to achieve the goal that does not increase the privacy leakage.

xxia2021 commented 1 month ago

@xxia2021 Allowing negative IGs from many domains means that a single auction's result can imply something about the user's behavior on more domains, which is a privacy problem. Why do you need so many different negative IGs for the same bid anyway? Maybe we can find another way for you to achieve the goal that does not increase the privacy leakage.

Some advertisers just have many user segmentations to split the users into different IGs.

michaelkleber commented 1 month ago

Some advertisers just have many user segmentations to split the users into different IGs.

I understand that, but there is no reason that each advertiser-defined user segment needs to be represented by a separate negative IG.

eysegal commented 1 month ago

@michaelkleber but an advertiser might want to suppress one product and target another. For example a user is interested in an advertiser cloths - shirt, pants and socks. Initially the user may get ads on all these products. Then the user buys the shirt, so advertiser suppress the shirt, but still want to target the panths and socks. Then the user buys the pants so the advertiser wants to suppress the shirt and pants but target the socks. So the advertiser needs multiple negative IG.

michaelkleber commented 1 month ago

@eysegal The use case you're describing can be accomplished with each bid having just one negative IG, "This is an ad campaign for shirts so don't show it to the bought_a_shirt negative IG."

eysegal commented 1 month ago

@michaelkleber and when the user buys the pants but the advertiser still wants to show to socks?

michaelkleber commented 1 month ago

Your shirt ads would negatively target the bought-a-shirt negative IG. Your socks ads would negatively target the bought-socks negative IG. This is not a discussion about how many negative IGs exist, this is about how many different negative IGs a single bid needs to target.