<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Feedzai Techblog - Medium]]></title>
        <description><![CDATA[Welcome to Feedzai Techblog, a compilation of tales on how we fight villainous villains through data science, AI and engineering. - Medium]]></description>
        <link>https://medium.com/feedzaitech?source=rss----e11168e7fe6b---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Feedzai Techblog - Medium</title>
            <link>https://medium.com/feedzaitech?source=rss----e11168e7fe6b---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 22 Sep 2026 00:16:11 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/feedzaitech" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Uncovering the Shape of Fraud with Cosmos Explorer: Visual Metaphors Behind Millions of…]]></title>
            <link>https://medium.com/feedzaitech/uncovering-the-shape-of-fraud-with-cosmos-explorer-visual-metaphors-behind-millions-of-transactions-b98e4cf56e56?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/b98e4cf56e56</guid>
            <category><![CDATA[dataviz]]></category>
            <category><![CDATA[fraud]]></category>
            <category><![CDATA[design]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[fraud-detection]]></category>
            <dc:creator><![CDATA[João Bernardo Narciso]]></dc:creator>
            <pubDate>Tue, 07 Apr 2026 17:24:51 GMT</pubDate>
            <atom:updated>2026-04-07T17:38:46.889Z</atom:updated>
            <content:encoded><![CDATA[<h3>Uncovering the Shape of Fraud with Cosmos Explorer: Visual Metaphors Behind Millions of Transactions</h3><p><em>The Data Visualization Research team is developing Cosmos Explorer, an interface that leverages universe-related visual metaphors to convey information about the billions of transactions processed by Feedzai. Pedro Cruz, professor at Northeastern University, partnered with Feedzai to bring this idea to life by contributing with his creativity and expertise to solve this challenging visualization problem.</em></p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F1180896687%3Fapp_id%3D122963&amp;dntp=1&amp;display_name=Vimeo&amp;url=https%3A%2F%2Fvimeo.com%2F1180896687&amp;image=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F2143123062-2c3680a69847deb6320dac8cde7cc297ed643dd3c7080508b29641751fdec429-d_1280%3Fregion%3Dus&amp;type=text%2Fhtml&amp;schema=vimeo" width="1920" height="1281" frameborder="0" scrolling="no"><a href="https://medium.com/media/1b2ecfadd91d204640462f89fa6ff67f/href">https://medium.com/media/1b2ecfadd91d204640462f89fa6ff67f/href</a></iframe><p>When we look out into the universe, we don’t just see emptiness. We see an unimaginable scale: billions of galaxies, each containing billions of stars, each a point of light carrying its own story. No single observer can take it all in at once. Yet with the right instruments, patterns emerge: the structure of the cosmos itself becomes visible.</p><p>In the digital realm, there is another universe just as vast and intricate. Every day, hundreds of millions of events flow through Feedzai’s system which assesses them to protect consumers all over the world. Each one is a unique data point (e.g., a purchase, a login, a transfer). Individually, they don’t tell us much. Together they form a living universe of behavior that represents the diversity in people’s lives.</p><p>But fraud lurks in everyday transactions, with criminals trying to hide their activities within the sheer volume of transactions. The question is: how can we represent those patterns meaningfully, the normal behaviors and the fraudulent behaviors, the trends and the outliers, to empower data analysts and data scientists in their decision-making processes?</p><p>The biggest challenge is scale. No one can look at billions of events one by one. Aggregation helps, but it smooths over the details, which often encode the most interesting signals like the faint outlines of fraud or unusual clusters of activity.</p><p>But what if we could see it all at once? Not just a summary, not just a chart, but the entire data universe laid out in front of us?</p><p>These are the questions that triggered the project we, in the Data Visualization Research team, call the Cosmos Explorer. Just as astronomers build telescopes to look deeper into space, we are experimenting with tools to look deeper into data. Imagine a screen where billions of transactions appear as points of light. Zoomed out, you see entire galaxies of behavior, the vast shape of normal activity. Zoomed in, you can study the tiniest stars: a single transaction, a single moment in time.</p><p>This way of visualizing doesn’t replace dashboards or reports. Those are crucial for fast decision-making and day-to-day operations. What we are exploring is something different: leveraging data visualization to empower the discovery of patterns and outliers. Instead of hiding complexity, we are embracing it and searching for the unexpected shapes that emerge when the raw detail of data is allowed to surface.</p><p>Cosmos Explorer is a work in progress, a way for us to research how to push the boundaries of what visualization can do to represent transactional activity. But even now, the potential is clear: to reveal patterns that were previously invisible, and give analysts a new lens to find the hidden structures of fraud and financial crime.</p><h3>The Origin of Cosmos Explorer</h3><p>From the beginning, we explored rendering the millions of transactions as semi‑transparent points, and encoding density as brightness so that clusters appear as luminous clouds. But the earliest prototypes looked more like a broken television than a visualization.</p><p>In Figure 1, we plotted millions of transactions from a dataset in a long time window; rows encode time while columns encode accounts, and the dense matrix of stripes of circles makes it clear why analysts usually aggregate. Within this maze of points, vertical red stripes correspond to recurring periodic payments, and their regular spacing hints at monthly or weekly cycles.</p><p>To explore how the matrix evolves over time we iterated by creating an animated canvas (Figure 2) that gradually fills up as transactions of different amounts, represented by circles of different sizes, arrive. These first experiments convinced us that we needed to go beyond simple point plots, because although we could technically render tens of millions of points, the human eye needs help to see meaningful patterns.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1mOOF4pgzEq6ulyXoI0JAA.png" /><figcaption><em>Figure 1. Subset of millions of transactions at once on the screen</em></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/573/1*KaC_vM0WCYTYf0cENeUKyA.gif" /><figcaption><em>Figure 2. Animated build-up</em></figcaption></figure><p>To differentiate high‑value transactions, we tried scaling points by amount. With this choice large transfers appear on the screen as large, semi‑opaque circles that dominate the plot.</p><p>These ideas led us to design interactive techniques for browsing transactions. For that, we explored an early version of the interface (Figure 3) where hovering over an account highlights its transactions across months; colored horizontal bars mark unusual bursts of activity. We also tested a fish‑eye lens to magnify a small portion of the dense plot (Figure 4). This approach, inspired by Shneiderman’s “<em>overview first, zoom and filter, then details on demand</em>” mantra, helped analysts inspect specific time windows while still seeing the larger context.</p><figure><img alt="Figure 3. Interactive browsing" src="https://cdn-images-1.medium.com/max/1024/1*_YOwdsaiheiMpb6ZkLOttw.png" /><figcaption><em>Figure 3. Interactive browsing</em></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Lt_GhjfDO1VCocPG1ZTbjg.png" /><figcaption><em>Figure 4. Fish-eye lens</em></figcaption></figure><p>After experimenting with size and focus, we turned our attention to categories. Instead of grouping events purely by time, we aggregated transactions by merchant category or payment type and emphasized each sector with a band of color. In our next iteration (Figure 5), we replaced the earlier category bands with a machine‑like representation: broad swaths of color reminiscent of a spectrogram. The dense tapestry of hues begins to resemble how a computer might “see” the stream of transactions while still highlighting category differences.</p><figure><img alt="Figure 5. Computer‑like categories" src="https://cdn-images-1.medium.com/max/1024/1*CbIGrcluM6zzdio9SKfcYg.png" /><figcaption><em>Figure 5. Computer‑like categories</em></figcaption></figure><p>Although this emphasized categories, it sacrificed temporal context. So, in Figure 6 we brought the time axis back into view: vertical strips encode hours or days, restoring the sense of chronological progression.</p><figure><img alt="Figure 6. Return to time" src="https://cdn-images-1.medium.com/max/1024/1*0vv7KZ_u6tn-CIIxHwH_Kg.png" /><figcaption><em>Figure 6. Return to time</em></figcaption></figure><p>To illustrate the diversity of transactions, we plotted point clouds for six different categories; each panel shows only the points from one merchant sector (Figure 7).</p><figure><img alt="Figure 7. Six categories" src="https://cdn-images-1.medium.com/max/1024/1*RJDo8Ihm1_XOn02XgupYJg.png" /><figcaption><em>Figure 7. Six categories</em></figcaption></figure><p>Our final design leap came from embracing a cosmic metaphor. We pinned an image of the edge‑on spiral galaxy NGC 4565 above our desks for inspiration; the photograph, taken by Ken Crawford on 26 May 2012, shows a slender galaxy about 30–50 million light‑years away in the constellation Coma Berenices. The swirling disk and starry background motivated us to treat each transaction as a star (Figure 8). We then sampled star pictures and used them as textures (Figure 9) so that each transaction becomes a tiny star with subtle variations in brightness and color. When applied to the data the result resembles a long‑exposure astrophotograph: bands of light correspond to dense periods and faint streaks reveal outliers.</p><figure><img alt="Figure 8. Galaxy inspiration" src="https://cdn-images-1.medium.com/max/1024/1*6yCMgCCWPIblMUXtaLoK3w.jpeg" /><figcaption><em>Figure 8. Galaxy inspiration</em></figcaption></figure><figure><img alt="Figure 9. Star textures" src="https://cdn-images-1.medium.com/max/1024/1*vanC406rwXe2Thgv5TSqwQ.png" /><figcaption>Figure 9. Star textures</figcaption></figure><h3>Visualizing hundreds of millions of transactions</h3><p>The stages described above culminate in the current Cosmos Explorer (Figure 10). At its heart it is still a scatter plot that displays each transaction by time and amount. Other elements allow for a deeper exploration of the data: a secondary timeline reveals bursts of activity as they unfold by showing the count of events aggregated by minute. On the sidebar, a curated set of filters and insights helps analysts narrow down the information to bring up meaningful details.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*leXEFKEw8sAt7TMLrZfBKg.png" /><figcaption><em>Figure 10. Interface</em></figcaption></figure><p>We are also exploring the application of natural language prompts. In this context, an analyst can simply type a request asking for “all hotel transactions above two hundred dollars last week” and Cosmos Explorer translates it into precise filters. The scatterplot then highlights those elements in real time, while the insights panel updates with statistics for the new selection. This combination of raw detail and interactive filtering creates a new way of working with data that feels closer to exploration than reporting.</p><p>The biggest technical challenge with a tool like Cosmos Explorer lies in rendering so many points at once. Traditional rendering mechanisms that plot every data point in a scatterplot collapse under the weight of millions of entries, let alone billions. To overcome this, we are using octree-based rendering, a technique mostly used for visualizing 3D point clouds of real life scenarios scanned with cameras equipped with LiDAR sensors. The principle is simple but powerful: the dataset is broken down into a hierarchy of cubes, each cube containing either raw points or a sample of their children cubes. When an analyst zooms out, Cosmos Explorer shows a representative sample from higher-level cubes, maintaining the shape of the data without overwhelming the system. As the view zooms in, the system fetches progressively finer detail, until individual transactions come into focus. This level-of-detail approach makes it possible to glide seamlessly from a galaxy of behaviors to a single anomalous star, without losing context.</p><h3>Representing fraud</h3><p>In financial datasets, the percentage of fraudulent transactions is usually minuscule, often below 1%. Despite the significant imbalance, fraudulent data points are key to any analysis and, as such, they need to be not only visible, but immediately apparent. To represent this information would be challenging in any visualization due to the significant discrepancy in sample size. The same is true for Cosmos Explorer, only exacerbated by the huge volumes of data. In this project we are experimenting with ways to highlight the presence of such transactions without distorting the visualization.</p><p>We have experimented with multiple approaches that led to an implementation that changes the sizes and color of fraudulent points, allowing regions containing fraudulent transactions to pop up on the canvas and take precedence over non-fraudulent transactions (Figure 11). Small guidelines further help locate such elements, aiding the viewer’s navigation through the Cosmos Explorer when they are focused on fraudulent transactions.</p><figure><img alt="Figure 11. Representation of fraud in Cosmos Explorer as red points" src="https://cdn-images-1.medium.com/max/1024/1*1-YV3CS0ePekDYczdWYlbQ.png" /><figcaption><em>Figure 11. Representation of fraud in Cosmos Explorer as red points</em></figcaption></figure><p>At a higher level, looking at the Cosmos Explorer as a whole allows us not only to see each transaction, but also to analyze the overall “health” of the transactions being processed through shades of color: whitish tones show where things are normal, and red highlights areas with fraud, providing a quick sense of which areas are “healthy” and which ones need attention.</p><p>We have always looked at the stars to find meaning, to connect dots across the darkness. Now we are learning to look at the universe of data in the same way. The signals are there, but hidden. Cosmos Explorer is the key to bringing them to light.</p><p><em>A special thank you to João Palmeiro, Diogo Duarte, Rita Costa, Pedro Nuno Silva, Pedro Cruz, Max Spencer, Tiago Simão, and Cláudio Correia, who helped in widely different areas of the project. Without them, Cosmos Explorer would not have been possible.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b98e4cf56e56" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/uncovering-the-shape-of-fraud-with-cosmos-explorer-visual-metaphors-behind-millions-of-transactions-b98e4cf56e56">Uncovering the Shape of Fraud with Cosmos Explorer: Visual Metaphors Behind Millions of…</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[BIY: Preparing a Dataset and Benchmarking AI Models for Scatterplot-Related Tasks]]></title>
            <link>https://medium.com/feedzaitech/biy-preparing-a-dataset-and-benchmarking-ai-models-for-scatterplot-related-tasks-11cbef120cd1?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/11cbef120cd1</guid>
            <category><![CDATA[outlier-detection]]></category>
            <category><![CDATA[clustering]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[large-language-models]]></category>
            <dc:creator><![CDATA[João Palmeiro]]></dc:creator>
            <pubDate>Mon, 19 Jan 2026 14:52:55 GMT</pubDate>
            <atom:updated>2026-01-19T14:52:53.819Z</atom:updated>
            <content:encoded><![CDATA[<h3>Benchmark It Yourself (BIY): Preparing a Dataset and Benchmarking AI Models for Scatterplot-Related Tasks</h3><figure><img alt="A simplified screenshot of an Open WebUI chat with GPT-4.1. The user uploads a scatterplot showing three distinct clusters and asks: “How many clusters are there in the scatterplot? Answer with a number in curly brackets, e.g., {4}.”. The AI responds “{3}”. The user input field shows the next prompt: “How many outliers are there in the scatterplot? Answer with a number in curly brackets, e.g., {3}.”." src="https://cdn-images-1.medium.com/max/1024/1*38-JuFbVd-gW3MKpwh2JxQ.png" /></figure><p>When we need to visualize and interact with millions, or even just thousands, of individual points while analyzing data, we typically resort to rendering them in the browser using a <a href="https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Client-side_APIs/Drawing_graphics">canvas</a>. The other common approach for the web, SVG, doesn’t scale when the number of individual elements increases to such quantities. However, while solving one problem, canvas charts introduce a new challenge: <a href="https://www.w3.org/WAI/fundamentals/accessibility-intro/"><strong>accessibility</strong></a>.</p><p>Although SVG charts are not accessible by default, they can be by design. Each part of an SVG chart has a corresponding element on the web page, allowing for a programmable, accessible experience for <a href="https://developer.mozilla.org/en-US/docs/Glossary/Screen_reader">screen reader</a> users. We can simply think of SVG as HTML. On the other hand, a canvas chart is just like a PNG image. If a screen reader user tries to learn more about a canvas chart, unless the developer has prepared a detailed description of it, they will just hear the word “image”. There’s no way to get an idea of what one of these charts represents, let alone extract any insights.</p><p>For static charts, the solution can be as simple as preparing a description and integrating it into the rendered chart. However, for platforms leveraging dynamic, large datasets, automatically generating these descriptions is not a simple task, especially for charts like scatterplots where data distributions can assume countless forms.</p><p>At Feedzai, we started exploring ways to generate <strong>data distribution-aware descriptions for scatterplots</strong> from their respective images using recent multimodal AI models. When the raw data is not available, or the datasets are composed of several thousand or million instances, relying on chart images and these models becomes tempting. This combination has the potential to generate such descriptions and serve them alongside their respective charts, significantly improving the accessibility of canvas charts.</p><p>That said, we focused on two main directions: using AI models to directly generate the descriptions, and using AI models to extract structured data (imagine a list of clusters and their respective center coordinates, for example) that will populate a predefined description template. The initial results, however, were mixed, and it wasn’t clear if we were on the right track to ensure adequate descriptions.</p><p>So, before moving on to further testing, we carefully reviewed the literature. Although benchmarks and other interesting findings are <em>scattered</em> all over the place, they <strong>rarely cover scatterplots</strong> and their <a href="https://alper.datav.is/publications/scatterplots/">related tasks</a>. We therefore changed the <em>plot</em> and designed a dataset + benchmark to expand the general understanding of AI models when applied to charts, specifically scatterplots. We focused on evaluating the baseline performance of these models in identifying clusters and outliers at scale — both, if present, should be described properly.</p><p>The work culminated in the <a href="https://research.feedzai.com/publication/benchmark-it-yourself-biy-preparing-a-dataset-and-benchmarking-ai-models-for-scatterplot-related-tasks/">“Benchmark It Yourself (BIY): Preparing a Dataset and Benchmarking AI Models for Scatterplot-Related Tasks” paper</a>, presented at the <a href="https://visxgenai.github.io/">GenAI, Agents, and the Future of VIS workshop</a> during <a href="https://ieeevis.org/year/2025/welcome">IEEE VIS 2025</a>. This blog post covers the main results and conclusions after running the benchmark in question.</p><h3>Dataset and Benchmark</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*dM8xis0_TOZJgC5WvkduVg.png" /><figcaption>Examples for each of the data generators, ordered from top-left to bottom-right: Gaussian blobs with and without background noise, Gaussian blobs with outliers, random patterns (no clusters and outliers), relationships (no clusters and outliers), and geometric shape blobs.</figcaption></figure><p>The <strong>dataset</strong> consists of 18,921 synthetic scatterplot images created from 6 data generators (371 different data samples), 17 chart designs, and 3 image sizes. The number of clusters varies between 0 and 6, while the contamination level, when there are outliers, varies between 0.001 and 0.01. We chose to inject a relatively small number of outliers, keeping them well-distanced from the clusters to evaluate the detection of points that are clearly anomalous and relevant to report. In the end, each scatterplot was automatically annotated for clusters and outliers after converting the respective bounding box and point coordinates to screen coordinates (pixels).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HeeUqumHB6BGqM-m6VZxsw.png" /><figcaption>The 17 chart designs for one of the plotted data samples, based on the default Vega-Lite styling. The chart designs are, ordered from top-left to bottom-right: Y-axis only, double-sized points, square points, randomly shaped points, randomly colored points, points only, half-sized points, points at half the default opacity, points at full opacity, default (light theme), dark theme, colored clusters, 21:9 aspect ratio, 16:9 aspect ratio, 9:16 aspect ratio, 4:3 aspect ratio, and 3:4 aspect ratio.</figcaption></figure><p>The <strong>benchmark</strong> was run on a stratified sample of 1,725 scatterplots and for 5 tasks, each defined by a prompt composed of an instruction and a response format:</p><ul><li><strong>Cluster counting</strong> for the number of clusters.</li><li><strong>Cluster detection</strong> for the bounding boxes of each cluster.</li><li><strong>Cluster identification</strong> for the point coordinates of each cluster center.</li><li><strong>Outlier counting </strong>for the number of outliers.</li><li><strong>Outlier identification</strong> for the point coordinates of each outlier.</li></ul><p>In addition to the different tasks, 10 proprietary models from Google and OpenAI were evaluated, along with 3 different prompting strategies: zero-shot, one-shot (prompt + 1 example), and few-shot (prompt + 6 examples).</p><p>For the counting tasks, two performance metrics were computed: Accuracy and Mean Absolute Error (MAE). For the remaining tasks, Precision and Recall were considered with specific thresholds: an Intersection over Union (IoU) of 0.75 for bounding boxes and a Euclidean distance of 10px for point coordinates.</p><h3>Results</h3><p>The overall results for each task are summarized in the charts below. Each is accompanied by its main highlight. Feel free to explore each chart or jump straight to the next section for the key takeaways.</p><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the cluster counting task”. The y-axis legend is “Accuracy”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*XJwOLE-lnamtJiDNeiwbHw.png" /><figcaption>Cluster counting results (Accuracy). Few-shot prompting is particularly promising for several models from both providers (over 75% Accuracy). The full alternative text for each chart is available in the <a href="https://github.com/feedzai/biy-paper/tree/main/benchmark/results/all">GitHub repository for this paper</a>.</figcaption></figure><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the cluster counting task”. The y-axis legend is “MAE”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*NiA4Z9QQFnSHIkSz7C_4dQ.png" /><figcaption>Cluster counting results (MAE). MAE is generally low (a lower MAE is better). The highest value is below 2 for Gemini 2.5 Flash-Lite (Thinking).</figcaption></figure><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the outlier counting task”. The y-axis legend is “Accuracy”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*FpfELA0XGUUkenvY9Xngqg.png" /><figcaption>Outlier counting results (Accuracy). Gemini 2.5 Flash excels at the outlier counting task when one-shot (~87%) and few-shot (~90%) prompted.</figcaption></figure><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the outlier counting task”. The y-axis legend is “MAE”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*7jIDO-x2DjfhymmskvefaA.png" /><figcaption>Outlier counting results (MAE). MAE is higher for outliers in general. It is particularly high for two OpenAI reasoning models (o3 and o4-mini).</figcaption></figure><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the cluster detection task”. The y-axis legend is “Recall @ IoU75”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*M8VjQqGPBeNDGmzxfMh_7Q.png" /><figcaption>Cluster detection results (Recall @ IoU75). The performance is very poor. None surpass 25% Recall. The results are similar for Precision.</figcaption></figure><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the cluster identification task”. The y-axis legend is “Recall @ 10px”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*eLKhpjOSDV042bcjc8Aifw.png" /><figcaption>Cluster identification results (Recall @ 10px). None surpass 25% Recall in the cluster identification task as well. The results are similar for Precision.</figcaption></figure><figure><img alt="This is a grouped vertical bar chart. Its title is “performance for the outlier identification task”. The y-axis legend is “Recall @ 10px”. The x-axis legend is “model”. The chart is made up of 10 groups of bars: GPT-4.1, GPT-4.1 mini, GPT-4.1 nano, GPT-4o, GPT-4o mini, o3, o4-mini, Flash, Flash-Lite, Flash-Lite (Thinking). Each group contains three bars: zero-shot prompt, one-shot, few-shot." src="https://cdn-images-1.medium.com/max/1024/1*KBCajs-OuIfjhu2YXw64lw.png" /><figcaption>Outlier identification results (Recall @ 10px). Recall is also low, although Gemini 2.5 Flash, when few-shot prompted, seems promising (~65%). The results are similar for Precision.</figcaption></figure><h3>Takeaways</h3><p>Based on the results, the main considerations when combining scatterplot images and AI models are as follows:</p><ol><li><strong>Give priority to few-shot prompting.</strong> This prompting strategy consistently outperformed zero-shot prompting across all models and tasks (top models achieved over 90% Accuracy in counting tasks). It is also useful for handling zero-answer scatterplots.</li><li><strong>Avoid localization tasks.</strong> OpenAI and low-cost Google models prompted with strategies similar to those evaluated are unreliable for localization tasks (e.g., detecting clusters) involving scatterplots.</li><li><strong>Invest in other components first, not chart design </strong>(<a href="https://research.feedzai.com/oshuzuxa/2025/10/VIS_x_GenAI__Benchmark_Paper__camera_ready_version_accessible.pdf">page 4</a> for more details). Chart design is fundamental for humans, but it’s a secondary factor when fed into AI models. Nevertheless, it can be beneficial to avoid chart designs with wide aspect ratios (16:9 and 21:9) or seemingly random colors.</li></ol><h3>Further Reading</h3><p>Since this blog post doesn’t cover all the relevant aspects of the dataset and benchmark, feel free to read the <a href="https://research.feedzai.com/publication/benchmark-it-yourself-biy-preparing-a-dataset-and-benchmarking-ai-models-for-scatterplot-related-tasks/">paper</a>, check out the associated <a href="https://github.com/feedzai/biy-paper">GitHub repository</a>, or watch a <a href="https://youtu.be/TZuE47vc3VY?si=JZ16rmMHI7NBjoaj">short presentation</a> about it.</p><p>If you have any questions or feedback, let us know in the comments section.</p><p><em>Diogo Duarte, Pedro Bizarro, Rita Costa, and Sanjay Salomon: thank you so much for your thoughtful feedback that helped me shape this blog post!</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6CGwhw0_h84Z39KLCwUDXg.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=11cbef120cd1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/biy-preparing-a-dataset-and-benchmarking-ai-models-for-scatterplot-related-tasks-11cbef120cd1">BIY: Preparing a Dataset and Benchmarking AI Models for Scatterplot-Related Tasks</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Benchmarking LLMs in Real-World Applications: Pitfalls and Surprises]]></title>
            <link>https://medium.com/feedzaitech/benchmarking-llms-in-real-world-applications-pitfalls-and-surprises-78e720d3bfa1?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/78e720d3bfa1</guid>
            <category><![CDATA[large-language-models]]></category>
            <category><![CDATA[financial-fraud]]></category>
            <category><![CDATA[fraud-prevention]]></category>
            <category><![CDATA[computer-vision]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Jean Alves]]></dc:creator>
            <pubDate>Tue, 25 Nov 2025 15:31:00 GMT</pubDate>
            <atom:updated>2025-11-27T00:12:14.880Z</atom:updated>
            <content:encoded><![CDATA[<h4>By Jean V. Alves and Ferran Pla Fernández</h4><p><strong>Moving beyond binary classification provides novel insights.</strong></p><p>In the real world, scams rarely present themselves in black and white. Fraudsters exploit nuance, impersonate legitimate brands, and mask malicious intent with seemingly ordinary behavior. That’s why Feedzai has launched <a href="https://www.feedzai.com/scamalert/"><strong>ScamAlert</strong></a><strong> </strong>(patent pending), a Generative AI-based system innovating on the current paradigm of scam prevention, in response to this growing challenge.</p><p>Traditional detection systems treat the problem as a binary choice: scam or not a scam, often outputting an estimated “scam likelihood” measure. This value, even if accurate, doesn’t tell users <strong><em>why</em></strong> something is risky or <strong><em>what</em></strong> they should watch out for, leaving them with little guidance on how to stay safe.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7ZGm0BplD5mxzom9fRVSWw.png" /><figcaption>A potential scam SMS</figcaption></figure><p>The binary approach can often suffer from a lack of context. While a text message may look suspicious in a vacuum (e.g., a payment request via a less safe method) the user may have other reasons to believe in its legitimacy, such as a past history of such requests. Consequently, an incorrect risk estimate based on missing context may lead users to distrust the system’s abilities.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*Rz9EOY7IqngKu-edO4KLoA.gif" /><figcaption>A traditional binary classification system outputs only a risk estimate</figcaption></figure><p><strong>ScamAlert</strong>, on the other hand, makes judgements on what it <em>knows</em>. Users submit a screenshot of the suspected scam, and ScamAlert identifies observable <strong>red flags</strong>, patterns or behaviors that are often associated with fraud, such as suspicious links or spelling errors. This approach empowers the user with interpretable insights into the detected risk signals, instead of a vague numeric value. This places the user in the driver’s seat, by presenting them with the facts and enhancing their awareness and judgment.</p><p>To fully understand a systems’ ability to perform this task, we pair this labelling approach with a <strong>rigorous evaluation and benchmarking protocol</strong>. We test the consistency of model outputs for the same input; the model’s ability to justify its decisions and its overall performance, embodying the Robust, Transparent, and Tested pillars of <a href="https://research.feedzai.com/trust/">Feedzai’s TRUST Framework.</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*K6wYiTUo5jbGk_de4aWVZQ.gif" /><figcaption>By identifying red flags, the user is given insights to aid in their judgment</figcaption></figure><p>ScamAlert is a good example of an application of GenAI for a purpose other than increasing productivity, focusing on improving fraud prevention. We will show how a systematic evaluation and benchmarking framework is crucial to faithfully measure the performance of the full system, mitigate known GenAI limitations (such as hallucinations) and increase the trust in AI-powered workflows.</p><p>In this post, we’ll walk you through:</p><ul><li>Why binary scam detection fails in ambiguous or unverifiable cases.</li><li>How a red flag-based multi-label classification system works.</li><li>How we create a thorough benchmark to reliably evaluate ScamAlert.</li><li>How we evaluate ScamAlert and multimodal models using red flag recall, precision, and instruction adherence.</li><li>Practical trade-offs between accuracy, cost, and latency in scalable deployments</li></ul><p>Let’s explore how a more nuanced, interpretable system can raise the bar for scam prevention.</p><h3>Red Flags</h3><p>Rather than determining the likelihood of a message or an online listing being a scam, ScamAlert focuses on identifying which specific red flags are present. This shift leads to more <strong>interpretable outputs</strong>, helping users understand why something appears suspicious instead of collapsing everything into a binary decision or a score. It also introduces a more <strong>flexible framework</strong>, allowing domain experts to take control over what ScamAlert has detected.</p><p>This structure also transforms how we evaluate ScamAlert’s accuracy. By breaking predictions down into individual red flags, we gain visibility into which <strong>behavioral patterns</strong> (e.g., urgency, impersonation, or financial requests) are being consistently recognized, and which ones are being missed. This kind of <strong>transparency</strong> enables more focused analysis, helping teams identify specific areas for improvement.</p><p>Just as importantly, it supports <strong>ongoing auditing</strong> of ScamAlert as fraud tactics shift. As new scam patterns emerge, analysts can evaluate whether ScamAlert’s current red flag coverage is sufficient, and introduce new flags as needed. This modular evaluation strategy ensures ScamAlert remains aligned with a constantly evolving threat landscape, without requiring a full reset every time scammers change tactics.</p><p>To show how this works in practice, let’s look at a fictitious example used for evaluation purposes with a few red flags:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/377/1*ZFoZdWx7PqV494x8shll_g.png" /></figure><p>In this case, four key behaviors may be identified that are often linked to scam attempts:</p><ul><li><strong>Unusual Channel:</strong> The sender claims to be a colleague but reaches out via text message. This is unusual, as formal internal communication typically happens through company email or approved platforms.</li><li><strong>New Phone Excuse:</strong> The unfamiliar phone number is explained with the excuse of using a “new” phone. This is a common tactic used to lower suspicion and discourage questions, masking the fact that in reality an attacker device is being used.</li><li><strong>External Transfer: </strong>The sender asks for a significant money transfer to an external bank account. This is a strong indicator of a potential scam.</li><li><strong>Heightened Urgency: </strong>The message stresses urgency, framing the request as time-sensitive and business-critical. Scammers often rely on this pressure to get quick, unquestioned responses.</li></ul><p>To formalize these observations, we could codify the identified behaviors using the following labels: <em>Unusual Communication Methods</em>, <em>Unknown Sender</em>, <em>Requests for Money</em>, and <em>Urgency Tactics and Pressure</em>. Other common indicators, not used in this example, include, <em>Suspicious URL Shortening</em>, frequently used in phishing attacks to obscure malicious domains, and <em>Suspicious Attachments</em>, which may contain malware capable of compromising the recipient’s device.</p><h3>Evaluating System-level Performance</h3><p>However, to systematically <strong>evaluate the performance</strong> of ScamAlert as a versatile system, we must test it under a wide variety of possible scam patterns and mediums, such as emails, listings, phishing websites, etc. Furthermore, since ScamAlert can be powered by different multimodal models, we also need a way to evaluate how the system performs under different models, and whether these meet our needs and limitations in regards to cost and/or latency.</p><p>Therefore, designing a <strong>comprehensive benchmark</strong> is crucial: one that includes a wide and diverse set of red flags reflecting real-world variation. With a standardized benchmark in place, we can evaluate how the system’s performance varies when changing not only the underlying AI model, but also its parameters, and other elements within the system.</p><p>A reliable benchmark also allows us to keep up with the <strong>rapid pace of new multimodal model releases</strong>. Maintaining a well curated dataset allows us to quickly determine whether a new model can contribute to a better red flag detection performance, making it possible to iterate quickly and ensure ScamAlert evolves alongside the ever expanding field of GenAI, while mitigating known limitations like hallucinations.</p><p>To tackle this challenge, we developed a <strong>benchmark dataset</strong> composed of a large and diverse collection of screenshots, including product listings, emails, and text message conversations. These span multiple language and include attacks such as images unrelated to the use case. Each example in the dataset was manually annotated to indicate the presence or absence of specific scam-related red flags. As we created these annotations, we constructed a curated taxonomy of red flags, which together define the label space for our multi-label classification task.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*5Cy60WKXZ5s3MapMepvSdg.png" /><figcaption>Construction of the benchmarking dataset</figcaption></figure><h3>Identifying Red Flags with ScamAlert</h3><p>Using ScamAlert involves inputting a screenshot into the system, which has been set up to identify a wide variety of flags. Armed with expert-level knowledge on current scam tactics and how to identify them, ScamAlert begins by verifying the submitted user screenshot, employing a multimodal model to analyze the image and extract key information. The model response is then thoroughly validated by ScamAlert to ensure that the delivered insights are high-confidence and well-founded.</p><p>ScamAlert outputs a structured response with three parts: (1) a list of the detected red flags, using our predefined nomenclature, (2) a short explanation for why each red flag was identified in the given screenshot, and (3) a list of recommendations of next steps based on those detections.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pmniuSNvbeQ5368g0fT4Nw.png" /><figcaption>How ScamAlert processes a screenshot</figcaption></figure><p>The explanations serve two key purposes. As these are generated by a Large Language Model (LLM), having the model explain its reasoning, similarly to<a href="https://proceedings.neurips.cc/paper_files/paper/2022/file/9d5609613524ecf4f15af0f7b31abca4-Paper-Conference.pdf"> Chain-of-Thought</a> prompting, can improve the system’s accuracy. Second, the explanations provide a layer of interpretability, helping us determine whether the predictions are based on actual, observable features in the screenshot.</p><p>The recommendations provide the user with safe courses of action, focusing on guiding the user in how to avoid falling victim to a potential scam. These often include suggestions not to click any links or attachments, or blocking further communications from a given source.</p><p>To produce a highly informative output, ScamAlert must balance two key goals: capturing all the red flags that are actually present, while minimizing the inclusion of incorrect or irrelevant ones. We can quantify these principles under our labeling framework by using <strong>red flag recall</strong>, the percentage of true red flags that ScamAlert successfully identifies, and <strong>red flag precision</strong>, the percentage of predicted red flags that are actually correct.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FkEf7_6bdJNS7TcTUr3XVw.png" /></figure><p>To measure performance across both dimensions, we then compute the <strong>red flag F1 score</strong>, which is the harmonic mean of precision and recall. This approach rewards models performing well on both metrics.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WW5gLVKGCckMa_am0U8aKA.png" /><figcaption><em>How we score the performance of ScamAlert on a given instance.</em></figcaption></figure><h3>Evaluating System-level Reliability</h3><p>Our evaluation looks beyond just ScamAlert’s ability to detect relevant red flags. We also assess how reliable the underlying multimodal model is at <strong>following explicit instructions</strong>. This is a critical requirement for an AI model intended to operate in structured or automated workflows. Specifically, we treat failures to follow the expected output format as errors. We focus on two types of mistakes:</p><ol><li><strong>Formatting errors</strong>, where the model’s output is not valid and cannot be parsed; and</li><li><strong>Invalid predictions (hallucinations)</strong>, where the model includes red flags that aren’t part of the predefined list it was given.</li></ol><p>By including these criteria, we aim to evaluate not only what the model predicts, but how consistently and correctly it communicates those predictions.</p><h3>Evaluating Operational Costs</h3><p>Beyond detection accuracy, it’s important to account for practical considerations that would impact real-world deployment of the ScamAlert system, especially when operating at scale for a large client base. In these scenarios, both <strong>cost</strong> and <strong>latency</strong> of model queries become critical performance factors. A model that delivers similar accuracy but with faster response times or lower inference costs is clearly more suitable for production use. Evaluating these trade-offs ensures that our system is not only effective, but also efficient and scalable in real-world environments.</p><p>In summary, our evaluation considers four key dimensions: (1) the system’s ability to detect red flags accurately, (2) how the underlying model adheres to the specified output format and label set, (3) the monetary cost associated with each query, and (4) the latency of its responses.</p><h3>Benchmark Results</h3><p>To evaluate how different multimodal models impact ScamAlert’s red flag detection capabilities, we tested a variety of such models on our benchmark dataset. Each model was evaluated by sending several screenshots, one at a time, through the ScamAlert pipeline, allowing us to observe performance under realistic usage conditions. For each screenshot, we repeated the evaluation three times to account for the variability inherent to generative models.</p><p>Here, we report the results for a selection of commercially available multimodal models (as of November 2025) in terms of average F1 score across the dataset.</p><p><em>DISCLAIMER: These results are only valid for the tested prompt and are specific to the task at hand. Model rankings vary significantly across benchmarks and should not be interpreted as absolute evaluations of each model’s image processing ability.</em></p><h4>Overall Results</h4><p>In the following plot, we display the results for ScamAlert’s performance and operational costs when using each of the multimodal models being tested. To calculate these results, we assume that each instance for which the model failed to output a valid response corresponds to an empty prediction (i.e., no red flags). If a model hallucinates red flags which are not present in our curated list, these are ignored.</p><p>Several recent models (Gemini 3 Pro, Gemini 2.5 Pro, GPT-5, Claude 4, Claude 3.7) offer “hybrid” reasoning capabilities. These models allow users to set a “thinking budget” in which the model can generate intermediate reasoning steps to solve a problem, usually boosting performance at a far greater cost and latency. To keep comparisons balanced, we set the thinking budget of all models to 0, as speed is an important aspect of this task.</p><p>However, Gemini 2.5 Pro, Gemini 3 Pro, and GPT-5 do not allow for completely disabling thinking, allowing only for limitations on the reasoning effort: Gemini 2.5 Pro lets users define maximum reasoning tokens, while 3 Pro and GPT-5 allow for the selection of pre-defined reasoning levels. We set these models at their minimum allowed thinking budget (128 tokens for 2.5 Pro, “Low” for 3 Pro, and “Minimum” for GPT-5), and differentiate them in the following plots by including a box around the model. We also highlight the models in the pareto front, that is, models that dominate others in terms of cost-performance tradeoffs.</p><p>For a reference on how higher thinking budgets may impact these models, we run the 4 GPT-5 reasoning settings: Minimum, Low, Medium (Default), and High; and the 2 Gemini 3 Pro reasoning settings: Low and High. We display the values for the default setting (“Medium”) for both GPT-5 nano and GPT-5 mini.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*saf-gn1HRB25Nxh3YrbSSA.png" /></figure><p><em>*Note:</em></p><ul><li><em>Gemini 3 Pro corresponds to its November preview.</em></li><li><em>Gemini 2.5 Flash corresponds to its May version.</em></li><li><em>Gemini 2.5 Pro corresponds to its May version.</em></li><li><a href="https://artificialanalysis.ai/evaluations/mmlu-pro?models=gemini-2-5-pro%2Cgemini-2-5-flash-preview-09-2025%2Cgemini-2-5-flash%2Cgemini-2-5-pro-05-06"><em>These perform similarly on visual tasks to the latest stable versions.</em></a></li><li><em>Gemini 2.5 Flash Lite corresponds to its June 5th preview — just before its release on the 22nd.</em></li></ul><p>We highlight the following findings (note that the<strong> x-axis is logarithmic</strong>):</p><ul><li>GPT-5 provides a significant performance over competitors, but only if expending effort equal to or above the “Low” setting, incurring significant cost increases.</li><li>Gemini 3 Pro at its lowest reasoning budget performs better than GPT-5 at its lowest reasoning budget, while being significantly cheaper.</li><li>Notably, all of the Claude Sonnet versions do not match the performance of similarly priced OpenAI or Gemini models.</li><li>Gemini “Flash” and “Flash Lite” versions dominate the competing GPT mini and GPT nano offerings.</li></ul><p>Plotting the models’ performance versus their latency, <strong>again on a logarithmic x-axis</strong>, only heightens these differences:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xpQKGbmkswYbdwp3gpskgw.png" /></figure><ul><li>Higher reasoning levels produce substantial increases in latency for Gemini 3 Pro and GPT-5.</li><li>Notably, at their lowest budget, Gemini 2.5 Pro is significantly faster than Gemini 3 Pro and GPT-5.</li><li>While GPT-5 mini and nano provide significant latency gains over the main variant, at the default effort, they are still slower than all other models we tested.</li><li>Surprisingly, Gemini 2.0 Flash<strong> Lite</strong> and 2.5 Flash <strong>Lite</strong> versions take approximately the same amount of time to provide answers as their Flash counterparts.</li></ul><h4>Detailed Analysis: Instruction Following Impacts on Performance</h4><p>In the following plot, we display the results for all reasoning levels for the 3 variants of GPT-5: main, mini, and nano. At a fifth of the token cost, nano is expected to perform worse than mini, but we observe the opposite.</p><p>This strange pattern is compounded by the fact that, as seen previously, both GPT-5 mini and nano perform worse than their equivalent 4.1 counterparts.</p><p>This discrepancy is explained by the fact that both GPT-5 nano and GPT-5 mini have a tendency to generate red flags which are not part of the input list, with the latter doing so at a much higher rate than the former.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SgMsUDmsbXE7wAhPayTRZw.png" /></figure><p>Many times, these are semantically equivalent to the correct option, such as “Suspicious Shortened Link” instead of “Suspicious URL Shortening.” However, as we wish to prioritize not only image processing abilities, but also the model’s instruction following, these predictions are ignored, and only case-insensitive matches are accepted.</p><p>Other models exhibit the same pattern seen previously, albeit at lower rates. In the following plot, we show the 8 models with the highest rate of unknown flag generation. This phenomenon is possibly responsible for the lower performance of GPT-4.1 nano when compared to Claude 3 Haiku, for example.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iEz3uxofw1QP49yueGsr5A.png" /></figure><h4>Detailed Analysis: Robustness of Results</h4><p>In order to assess the consistency of these rankings, that is, whether the performance significantly changed across different runs, we ran the entirety of the benchmark three times. In the following plot, we demonstrate that considering either the worst or best trial for each model would not result in a significant re-ordering of the results.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iQM47uXQqRzkWp7i1qZYEw.png" /></figure><h3>The Importance of Benchmarking</h3><p>These results show the <strong>importance of having a consistent benchmark</strong> and the capacity to systematically evaluate the models for the task at hand.</p><p>The results we presented above may not be aligned with general public benchmarks, emphasizing the necessity of a rigorous and systematic evaluation for the specific task. At Feedzai Research this task is a key step in our projects, as we have shown in our <a href="https://www.nature.com/articles/s41597-025-04664-y.epdf">public benchmarks</a> and <a href="https://research.feedzai.com/publication/turning-the-tables-biased-imbalanced-dynamic-tabular-datasets-for-ml-evaluation/">multiple</a> <a href="https://research.feedzai.com/oshuzuxa/2025/10/VIS_x_GenAI__Benchmark_Paper__camera_ready_version_accessible.pdf">datasets.</a></p><p>It is not our intent to generalize any conclusion to other use cases, as these results show the performance of the models for a very specific task, with the same prompt, for a highly specialized dataset. Different tasks and datasets, even if similar on a surface level, require a specific evaluation, nwhich may offer completely different results.</p><h3>Conclusion</h3><p>As scam tactics evolve to bypass increasingly sophisticated spam filters and exploit new communication channels, systems that rely on rigid definitions or static rules quickly fall behind. <strong>ScamAlert</strong> is designed to meet this challenge head-on, offering a <strong>flexible</strong>, <strong>interpretable</strong> <strong>framework</strong> that can evolve alongside the threat landscape.</p><p>By focusing on red flags rather than binary judgments, ScamAlert provides more <strong>transparency</strong> and <strong>control</strong>. It allows domain experts to define what suspicious behavior looks like, and gives analysts the tools to track exactly which patterns are being recognized and which are being neglected.</p><p>Tracking performance in this context is a multifaceted challenge. We need to know whether the system can detect red flags, but also whether the underlying multimodal model can follow instructions, produce valid outputs, and operate efficiently at scale. Evaluation, therefore, needs to cover both detection accuracy and operational reliability.</p><p>Our <strong>benchmark</strong> is designed with this in mind. It enables fast, consistent evaluation of new LLMs as soon as they are released, ensuring ScamAlert can quickly adopt improvements in model capabilities while maintaining a responsible and disciplined approach to system updates.</p><p><em>Update: This post was updated on the 26th of November to include the results relating to Gemini 3 Pro, currently in preview.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=78e720d3bfa1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/benchmarking-llms-in-real-world-applications-pitfalls-and-surprises-78e720d3bfa1">Benchmarking LLMs in Real-World Applications: Pitfalls and Surprises</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CAUSAL CONCEPT-BASED EXPLANATIONS]]></title>
            <link>https://medium.com/feedzaitech/causal-concept-based-explanations-8e0b4c8c86ac?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/8e0b4c8c86ac</guid>
            <category><![CDATA[research]]></category>
            <category><![CDATA[concept-learning]]></category>
            <category><![CDATA[causality]]></category>
            <category><![CDATA[deep-learning]]></category>
            <category><![CDATA[explainability]]></category>
            <dc:creator><![CDATA[Jacopo Bono]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 13:09:07 GMT</pubDate>
            <atom:updated>2025-10-03T13:08:40.013Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*e98j0D0YvRVw3STC13ktmg.png" /></figure><h3>Introduction</h3><p>Over the years, we have evolved from using simple, often rule-based algorithms to sophisticated machine learning models. These models are incredibly good at finding patterns in large datasets, but due to their complexity it is frequently challenging for a human to understand why a certain input leads to its respective output. This is especially problematic in areas where high-stakes decisions are being made and where human-AI collaboration is critical.</p><p>This is why <em>model explainability</em> has gained traction in recent years. The aim of explainability methods is to shed light on what properties of the data contribute to a machine learning model’s output.</p><p>Ideally, such explanations should be similar to how a human would explain its decisions to a peer. In particular, humans make use of high-level concepts that are easy to grasp for other people. For example, a human would explain, “there was a sudden burst of transactions in a short time” as opposed to, “the average delta time feature is much smaller in a recent short time-window compared to a long time-window, and the count of transactions feature increased substantially in the same recent time-window.”</p><p>Moreover, when explaining choices and decisions, humans are free to reflect on these decisions by reasoning about hypothetical alternatives. For example, we could ask, “if this email address would be considered suspicious, would I trust this request?” Current explainability methods fail to incorporate both properties: the explanations are often much more complex than typical concepts humans would use; and they don’t allow for reasoning. As a result, these limitations impede the usefulness of current explainability methods in many practical applications.</p><p>In this blog post, we will describe a new explainability method that addresses these issues. We’ll try to refrain from discussing too many technical details and focus on the intuition behind the method, but readers interested in the technical justifications are referred to our <a href="https://proceedings.mlr.press/v236/moreira24a.html">publication</a> of this work at the 2024 CLeaR conference.</p><h3>Background</h3><h3>Feature-based explanations</h3><p>The vast majority of explainability methods can be grouped under the “<strong>feature attribution</strong>” umbrella. Feature attribution techniques assign an importance score to each feature in the input, where a higher score typically reflects a feature having a large contribution to the model output. In this way, human analysts can gain insight into the model decision-making process. We previously wrote about the application of these methods at Feedzai in an earlier <a href="https://medium.com/feedzaitech/explainability-for-fraud-one-size-does-not-fit-fraudsters-526bf8e35713#a041">blog post</a>.</p><p>However, sometimes the feature attribution methods themselves are not very helpful. Especially when the number of features is large and there is little knowledge on their connection to higher level concepts, attributions may be spread over a large number of such features and it becomes difficult for a human to meaningfully understand and correct model decisions.</p><h3>A motivating example</h3><p>Consider a hypothetical machine learning model that is tasked to predict the probability of a person having a heart attack in the following year. The model considers many features, such as blood exam data, tracking data from a health app, etc. An explainability method based on feature attributions, such as <strong>SHAP</strong> (Lundberg and Lee, NeurIPS, 2017), would produce results as shown in <strong>Figure 1</strong>. In this example, levels of LDL cholesterol, BMI, and blood glucose levels are seen as the most important features for the model. But many other features contribute with slightly lower scores. The more features there are, the less clear it is for a human how to interpret their impact.</p><figure><img alt="Example of global feature-based explanations" src="https://cdn-images-1.medium.com/max/648/1*hopsfrRdjGAig3HZmRNnrA.png" /><figcaption><strong>Figure 1. Example of global feature-based explanations</strong>. In this dummy example, the feature importance is given by the mean absolute SHAP value, where larger values signify more important features. While these types of explanations give some insight into which features are contributing most to model scores, they do not provide easy human interpretation when the number of features is large and when features themselves are more abstract. Moreover, the interactions between the features are not apparent, making reasoning impossible.</figcaption></figure><p>Especially when human-AI collaboration is time sensitive, it is important to provide more interpretable explanations. One step in that direction is to offer explanations based on human-understandable, high-level concepts instead of on individual features.</p><h3>Concept-based explanations</h3><p>As discussed in the previous section, explainability methods that assign importance to individual features can be opaque themselves. What if, instead of basing explanations on features, we directly assign attributions to higher-level concepts? In other words, we are interested in developing a method that assigns importance to human-defined concepts, where higher importances indicates a stronger contribution to the model output. We therefore move from feature-based explanations to <strong>concept-based explanations</strong>.</p><p>While concept-based explanations address some feature-based method issues, new problems emerge. First of all, we need to define the concepts, which is typically a task for domain experts but may be automated eventually when concept extraction methods become more powerful. Secondly, we need to connect the inputs, concepts, and model outputs in our explainer.</p><p>One recent approach achieves this by designing a specific neural network architecture, known as the <strong>Concept Bottleneck Model </strong>(CBM, Koh et al, ICML, 2020). The CBM essentially connects the inputs to an intermediate layer where each unit is forced to represent a concept (the bottleneck layer), from which connections flow to the outputs. Since information has to flow through the bottleneck layer representing the concepts by construction, one can simply read out the activation of each unit of this layer to know how much a concept is ‘active’ for a certain input. Returning to our hypothetical example of the model to predict cardiac arrest, such a CBM could be schematically depicted as in <strong>Figure 2</strong>. In this network, the bottleneck layer represents concepts such as “smoking,” “drinking, etc.</p><figure><img alt="Representation of a Concept Bottleneck Model" src="https://cdn-images-1.medium.com/max/1024/1*PXbfGd3-WjnQOYXC7qaNtQ.png" /><figcaption><strong>Figure 2. Representation of a Concept Bottleneck Model</strong>. These types of neural networks have an intermediate layer where each neuron encodes a specific concept. The networks are then trained using two objectives simultaneously, namely learning the correct concept(s) present at each instance and learning to classify the instances correctly from the concept layer.</figcaption></figure><p>However, there are still issues with this method. Firstly, since the concepts may not be perfect predictors of the model’s objective, there is typically a trade-off between the accuracy on the original task and the accuracy on the concept predictions. In other words, a CBM that is better at predicting concept labels will be worse at predicting cardiac arrest, and vice versa.</p><p>Secondly, because the concepts may not be independent of each other, it is not possible to reason about alternative outcomes by simply “intervening” in the bottleneck layer. For example, we may be tempted to activate the “Exercise” neuron maximally in the bottleneck layer to answer the question, “How would my likelihood of cardiac arrest be impacted if I exercised more?” Doing so, however, fails to take into account that exercise may also affect the “Weight” and “Cholesterol” concepts.</p><p>To solve the first problem, we will explain what we mean by <strong>post-hoc explanations</strong>. After that, we will talk about the causality aspect.</p><h3>Post-hoc explanations</h3><p>As we saw in the previous section, the CBM learns two tasks simultaneously: predicting concepts from inputs and predicting outputs from concepts.</p><p>This typically incurs a trade-off in performance between both tasks. Instead of this self-explanatory property, one can also develop <em>post-hoc</em> (Latin for “after the event”) methods, which are applied after the model is trained. In other words, we have a first model to learn the mapping from inputs to outputs, and after that model is trained, we construct a second model to explain the first.</p><p>In this way, we do not interfere with the performance of the first model. We typically do not require any specific knowledge of how the first model is constructed, as long as we can pass it an input and receive the respective output. The first model is therefore usually referred to as the black-box model.</p><p>One way to achieve this is to train the explainability model to mimic the black-box model’s input-output relationship. We can then impose any constraint on the explainability model, without affecting the performance of the original black-box model. The technique of using a new model to learn from the behavior of a black-box model is known under the name of <em>“model distillation</em>” Importantly, to distill a black-box model, we only need access to input-output pairs, but no further details of the black-box are needed. The explainer is therefore free to use any other algorithm or architecture.</p><p>Now that you have learned about post hoc methods and model distillation, let’s look into why <strong>causality</strong> is important when we want to reason about our model predictions.</p><h3>Causal explanations</h3><p>As explored in the previous sections, post-hoc, concept-based explanations can yield more interpretable yet highly performing models. However, we’d like to add one more property to our explainer: the ability to reason about alternate situations.</p><p>For example, a model could predict that a patient has a high probability of a cardiac arrest because of high cholesterol, increased weight, and high alcohol consumption. We could ask the question: what would the model predict if we lowered the alcohol consumption data? In a CBM model, all concepts are assumed to be independent; and hence, if we manually lower the alcohol consumption concept we obtain output that ignores the interactions between alcohol consumption and other concepts such as weight. This type of reasoning about alternate situations is called “counterfactual reasoning.”</p><p>The solution to this is to learn a <strong>Structural Causal Model</strong> (SCM) of the concepts, which learns how much each concept causally depends on another. In the language of SCMs, a causal dependency of B on A is denoted as</p><p>A → B</p><p>When we connect multiple concepts through their causal dependencies, we must adhere to the following properties. First, since cause and effect are directed, there is always a single direction to move between two concepts that depend on each other. Second, since one concept can never be a cause of itself (even through intermediate concepts), following the directions in the graph, one can never return to its starting point. The first property of a graph is called <em>“directed,”</em> and the second is called <em>“acyclic”</em> (no cycles). Hence, an SCM has a <strong>Directed Acyclic Graph</strong> (DAG) at its heart.</p><p>Given the DAG encoding the causal dependencies between concepts, we can train a model to learn the complete SCM, extending the DAG with concept attributions (how much each concept is present for each input), and attributions for the connections (how strong the concepts depend on each other). Without going into too many details, the training involves casting the SCM into a neural network language, after which these attributions are learned from a training dataset. The SCM then allows us to perform actual counterfactual reasoning. Returning to our example above, let’s consider the SCM in <strong>Figure 3</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/814/1*ZoQcYJghwqYIlgLOpEfV6Q.png" /><figcaption><strong>Figure 3. Example of an SCM-based explanation</strong>. In this dummy example, the instance explanation is given in the form of an SCM. Each concept represents a node in the SCM, and causal relations are encoded via the directed edges. A higher likelihood of a concept being present is denoted by a darker color of the respective node, while a positive or negative causal relation is denoted by a blue or red directed edge, respectively.</figcaption></figure><p>Here, one can see how, for example, alcohol consumption causes both higher cholesterol and higher weight. If we want to test the counterfactual statement “what if we lower our alcohol consumption,” we would manually lower the concept attribution for “drinking,” which in turn would affect the “weight” and “cholesterol” concepts before changing our prediction of “cardiac arrest.” This reasoning, which takes into account the dependencies between concepts, is completely lost in the previously described bottleneck models.</p><h3>DiConStruct Explainer</h3><p>In the previous sections, we discussed the properties that an ideal explainer should possess. We would like it to be:</p><ol><li><em>concept-based</em>, to provide better interpretability to humans;</li><li><em>post-hoc</em>, to not affect the black-box model performance. As discussed, we will use model distillation to train our explainer;</li><li><em>causal</em>, to allow us to reason about counterfactual situations (e.g., alternatives to what we observed). This will take the form of a Structural Causal Model (SCM) within our explainer.</li></ol><p>From these three properties, it also becomes clear why our method is named <strong>DiConStruct</strong> (<strong>Di</strong>stillation, <strong>Con</strong>cept-Based, <strong>Struct</strong>ural Causal Model).</p><p>On a high level, the DiConStruct explainer is organized as depicted in <strong>Figure 4</strong>.</p><figure><img alt="Schematic representation of the DiConStruct method" src="https://cdn-images-1.medium.com/max/1024/1*__lH_g6X6E52LDh8WN9rOA.png" /><figcaption><strong>Figure 4. Schematic representation of the DiConStruct method</strong>. The required inputs are a DAG containing the concepts and an instance to be explained (left). Then, the black-box model is used to produce the output score Yᵦ. The exogenous model is tasked with predicting concept-specific weights, which are then used with the DAG to produce the causal graph for that instance. Finally, given the causal graph, one can extract concept attributions representing the importance of each of the concepts in producing the score Ŷᵦ.</figcaption></figure><p>The inputs are the data (X) and a DAG of the concepts (which we assume to be created by domain experts and/or extracted from data using specific methods). The DiConStruct explainer then contains two components. The first component, the Exogenous Model, is a neural network that was trained to predict concept-specific weights from the inputs. These weights encode the extent to which certain concepts are present, without considering the causal contributions from other concepts.</p><p>They are then combined with the DAG into the second component, the Concept Distillation SCM, to incorporate the causal interactions between concepts. Given the SCM, we can extract causal explanations in the form of a causal graph and concept attributions. It is important to note that the mapping from inputs to concepts is learned in a supervised manner, meaning that data annotated with concept labels is necessary.</p><p>Finally, the inputs will also be ingested by the black-box model and give rise to the outputs (Yᵦ). The SCM from our DiConStruct model also contains the prediction Ŷᵦ, which is trained to mimic the black-box output Yᵦ.</p><h3>Results/Examples</h3><p>We tested the DiConStruct explainer on two real-world datasets. One is a publicly available dataset for classifying bird images (CUB-200–2011), the other is an in-house fraud detection dataset (Merchant Fraud).</p><p>On both datasets, we train feedforward neural networks as our black-box models. In <strong>Table 1,</strong> we report the performance of multiple variations of DiConStruct on both datasets, compared to multiple baselines. We report the main classification performance (which we chose to be recall at a 5% false positive rate), the concept performance, i.e. how accurately are we predicting the concepts for each instance (quantified by the average accuracy over the concepts) and the fidelity, i.e. how good is DiConStruct mimicking the black-box model decisions (using 1-MAE, the mean absolute error).</p><p>Since DiConStruct methods are not affecting the black-box model, we can see that the task performance is equal to the black-box performance. Moreover, the fidelity of DiConStruct methods is always very high, meaning that it learned very similar input-output relations as the black-box model. Finally, the concept performance of DiConStruct is on par with the state-of-the-art baselines, but of course with the added advantage that our method provides causal explanations.</p><figure><img alt="Experimental results" src="https://cdn-images-1.medium.com/max/1024/1*7eowFf-sWKog57ujh3j7sg.png" /><figcaption><strong>Table 1. Experimental results.</strong> The performance of DiConStruct and various baselines on the test set for the CUB-200–2011 dataset (top) and the Merchant Fraud dataset (bottom). <em>CBM</em> denotes a Concept Bottleneck Model baseline where the classification task and the concept task receive equal weight. <em>Task Baseline</em> and <em>Concept Baseline</em> denote models that were trained on a single task only. The <em>Task Baseline</em> corresponds to the black-box model.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/980/1*5bPzZfV0lyET93nMTtunlA.png" /><figcaption><strong>Figure 5. Example explanation from the DiConStruct method</strong>. (a) Learned SCM for an instance of the Merchant Fraud dataset. The blue edge color denotes positive interactions, while the red edge color denotes negative interactions; the intensity represents the interaction’s strength. A positive/negative interaction increases/decreases the value of the destination node, respectively. Concept likelihood (nodes) is encoded from white (low) to black (high). (b) Concept attribution plot for the same instance.</figcaption></figure><p>In <strong>Figure 5</strong>, we show one example of a causal explanation from our DiConStruct method; for an instance in the Merchant Fraud dataset that was predicted to be suspicious by the model. We can see that <em>Suspicious Device</em> is the concept that is deemed most important for the decision. We can also observe that <em>Good Customer History</em> has a very low likelihood and therefore increases the likelihood of downstream concepts related to fraud. This is indeed expected, since <em>Good Customer History </em>is a concept related to legitimate events. With these causal explanations, one can not only understand which concepts are most relevant but also how they causally relate and interact with each other.</p><h3>Conclusions</h3><p>In summary, we introduced a novel method for model explainability that addresses some limitations of current approaches, namely, providing explanations in the form of human-conceptual terms and incorporating causal principles to enable counterfactual reasoning based on the provided explanations. With our method, we aim to improve human-AI interactions, by providing explanations that are more aligned to how humans would explain decisions to each other.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8e0b4c8c86ac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/causal-concept-based-explanations-8e0b4c8c86ac">CAUSAL CONCEPT-BASED EXPLANATIONS</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Feedzai TrustScore: Enabling Network Intelligence to Fight Financial Crime]]></title>
            <link>https://medium.com/feedzaitech/feedzai-trustscore-enabling-network-intelligence-to-fight-financial-crime-9ce7fcff84fb?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/9ce7fcff84fb</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[fraud-detection]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[network-intelligence]]></category>
            <category><![CDATA[feedzai]]></category>
            <dc:creator><![CDATA[Sofia Guerreiro]]></dc:creator>
            <pubDate>Fri, 25 Jul 2025 11:59:49 GMT</pubDate>
            <atom:updated>2025-07-25T16:42:42.187Z</atom:updated>
            <content:encoded><![CDATA[<h4>By Sofia Guerreiro, Ricardo Ribeiro Pereira, Iker Perez, Jacopo Bono</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*mnHKjb3u3ksh75TU51Kxdg.png" /></figure><p>Detecting financial fraud is like <strong>finding a moving needle in a shifting haystack</strong>. Fraud accounts for a tiny fraction of financial transactions, often less than 0.1%. At the same time, fraudsters are constantly adapting their tactics to evade detection. And this happens within a live and dynamic environment, where financial behaviors and technologies are changing over time. In short, this is an exceptionally <strong>difficult problem </strong>for financial institutions.</p><p>With the rise of digital banking and new technologies like GenAI, this problem is becoming even more challenging. In fact, fraud schemes are spreading faster, growing more sophisticated, and becoming increasingly coordinated across geographies. Meanwhile, many financial institutions still rely on detection systems that are either too rigid (e.g., relying on handcrafted rules) or too narrow (e.g., dependent on custom AI models), and neither option can keep up with the pace of change.</p><p>At Feedzai, we’ve developed a new approach. In this blog post, we introduce <strong>Feedzai TrustScore</strong>, part of the <a href="https://www.feedzai.com/solutions/feedzai-iq/">Feedzai IQ™ solution</a>. This is a state-of-the-art AI solution that combines the aggregated knowledge from <strong>our network of $8.02T yearly processed events</strong> to detect threats earlier, adapt continuously, and safeguard financial systems with speed and precision.</p><h3>Traditional Fraud Detection: Catching a Moving Target With a Fixed Net</h3><p>Every year, millions of people fall victim to financial fraud or scams, with <a href="https://www.feedzai.com/pressrelease/a-colossal-159-billion-lost-to-fraud-and-scams-finds-new-research-from-feedzai-and-the-global-anti-scam-alliance/">a recent report</a> revealing an average loss of over $2,000 per victim. To protect their customers, banks and other financial institutions have made great efforts towards detecting these suspicious transactions, sometimes temporarily blocking them, conducting internal reviews, and contacting the account owner to validate the activity.</p><p>However, this is an inherently adversarial task, as malicious actors adapt to whatever detection system the banks have in place. These players are always searching for “cracks in the system” or leveraging new tools such as GenAI to develop more sophisticated attacks.</p><p>While fraudsters are quick to incorporate new technologies in their attacks, most traditional fraud detection systems still rely on either <strong>rule-based approaches </strong>or institution-specific<strong> custom AI models</strong>. Rule-based systems typically consist of a set of manually defined conditions that describe known fraud patterns. Custom AI models, on the other hand, are trained on historical data from that specific institution only.</p><p>While these approaches can be useful, both present several shortcomings:</p><ul><li><strong>Slow to deploy</strong>: Both rule-based systems and custom AI models require substantial time and effort to design, tune, and validate before they can be deployed. This often involves months of work by analysts, data scientists, and domain experts.</li><li><strong>High maintenance</strong>: These systems demand constant manual updates and oversight to remain effective, especially as fraudsters adapt their tactics. This creates a continuous operational burden on fraud teams.</li><li><strong>Reactive and narrow in scope:</strong> Whether rule-based or AI-driven, conventional detection systems are developed using knowledge from a single institution, offering a narrow and siloed view of fraud. This makes them inherently reactive (learning only after fraud has occurred) and blind to emerging fraud patterns or schemes that haven’t yet appeared in their own environment.</li></ul><p>These constraints are especially problematic given the nature of modern financial crime: fraudsters operate across borders and institutions, sharing techniques and exploiting gaps in visibility. It raises the question: if attackers are collaborating, why aren’t defenders doing the same?</p><h3>Introducing: Feedzai TrustScore</h3><p><strong>Feedzai TrustScore</strong>, part of Feedzai IQ™, addresses these limitations by relying on pre-trained AI experts, which encode the collective knowledge from Feedzai’s broad network of partners. Unlike traditional detection systems, this solution is ready-to-use, doesn’t require months of historical data collection, has built-in processes for continuous refreshing, and can leverage shared intelligence to prevent fraud attacks sooner, all while guaranteeing strict data privacy standards.</p><h4>How does it work?</h4><p>Feedzai TrustScore is built on a <strong>Mixture of Experts (MoE)</strong> architecture¹, a modular approach where multiple expert models are developed on different environments or fraud scenarios, and then are combined to produce the final risk decision.</p><p>A real-world analogy to this would be to diagnose a disease by consulting a panel of medical specialists (e.g., a cardiologist, a neurologist, a nutritionist, and a general practitioner) rather than choosing a single doctor. Each specialist would conduct their analysis from their specialized field, and then they would all discuss their findings to provide the most accurate diagnosis and treatment plan.</p><p>In the same way, Feedzai TrustScore aggregates the fraud knowledge from across the Feedzai community using a <strong>federated learning framework</strong>². Each expert model is developed to become a “specialist” in a specific geography and use case (e.g., banking, payment processing, or anti-money laundering). Then, to deploy the solution, a mixture of experts (the “panel of specialists”) is assembled by combining a set of relevant pre-trained models, which is immediately available to start making predictions.</p><p>One important remark is that, throughout the entire process, <strong>data never leaves the client’s secure environment</strong>. Only a high-level encoding of the fraud patterns, represented in the form of machine learning models, is shared across institutions. This ensures full regulatory compliance and protects our customers’ sensitive data.</p><h4>What are the benefits?</h4><ul><li><strong>Zero-day Solution</strong>: Feedzai TrustScore is a ready-to-use fraud detection tool. New clients benefit from pre-learned fraud patterns, eliminating the time needed for data collection, rules creation, or model training.</li><li><strong>Continuous Refreshing</strong>: Feedzai TrustScore is a dynamic solution, actively maintained and updated in order to continuously integrate both newly found patterns of fraud and the latest machine learning techniques.</li><li><strong>Improved fraud detection</strong>: Feedzai TrustScore significantly outperforms traditional out-of-the-box rule systems by combining the power of AI with the aggregate fraud knowledge of Feedzai’s network.</li><li><strong>Responsible by design:</strong> Feedzai TrustScore is developed with responsibility at its core, guided by <a href="https://research.feedzai.com/trust/">Feedzai’s <strong>TRUST Framework</strong></a>. Besides providing <strong>strict privacy guarantees by design</strong>, this approach ensures transparency, fairness, and auditability, making it compliant with the most demanding regulatory environments.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6glpCOgKbO6xRCrN" /><figcaption><em>With Feedzai TrustScore, clients across geographies and use cases have experienced a significant performance improvement compared to traditional systems, as well as a reduction of time spent chasing false positives.</em></figcaption></figure><h3>Technical Considerations</h3><p>Building a fraud detection system that depends on the collective intelligence of a large network of financial institutions comes with several technical and operational challenges. We will go through some of them:</p><h4>Data Standardization</h4><p>To develop a unified AI solution, applicable to multiple institutions, the format and the meaning of the data must be standardized, such that the patterns that the experts learned can be seamlessly integrated into new financial institutions. This process includes several procedures, for example:</p><ul><li><strong>Schema Alignment</strong>: Financial data is usually tabular, with rows as events and columns as information dimensions. We define a standard schema to unify table structure across institutions, allowing each to populate it with available data. The schema supports incomplete tables, so not all columns need to be filled.</li><li><strong>Categorical Consistency</strong>: Different institutions may use different encodings to represent the same categorical information, such as “merchant type.” We use mapping and harmonization techniques to ensure the representations of categorical features are consistent across environments.</li><li><strong>Currency Normalization</strong>: The difference between normal and abnormal spending behavior depends on the context into which it is inserted. In order to standardize some of these differences, we use currency conversions, cost-of-living adjustments, and percentile-based features.</li><li><strong>Time Zones and Derived Features</strong>: Transaction time is a critical signal, and with Feedzai’s global reach, this means combining insights from all across the world simultaneously. As such, we normalize across time zones and engineer derived features (e.g., daytime vs. nighttime spending) that remain meaningful across institutions.</li></ul><h4>Expert Calibration</h4><p>In a MoE solution such as Feedzai TrustScore, all experts should effectively contribute to the final risk score. But this is a delicate balance, since each expert is trained independently, without context from the other experts and their environments. We use calibration techniques to ensure that experts yield scores that represent fraud risk homogeneously.</p><h4>Monitoring and Refreshing</h4><p>Feedzai TrustScore is monitored and tuned regularly at both the <strong>expert level</strong> and the <strong>MoE aggregation level</strong>. This ensures robustness and allows us to detect model drift early. Moreover, individual expert models can be added, removed, or updated whenever we detect performance drops or want to integrate the latest fraud patterns in the Feedzai TrustScore system.</p><h4>Stable and Interpretable Risk Score</h4><p>As fraud patterns evolve and expert models are updated, the risk score must remain consistent and reliable over time. To ensure this, we apply techniques that keep the score distribution stable, even as the underlying system changes. This facilitates the integration with downstream systems, and ensures that each score consistently reflects the same level of transaction risk, making it more interpretable.</p><h4>Personalization and Augmentation</h4><p>Feedzai TrustScore can be fine-tuned and optimized for individual financial institutions as soon as enough of their own data has been collected, which further improves its predictive performance. Furthermore, this risk score can be seamlessly combined with other solutions, such as rules or custom AI models, to augment their performance. This is an example of how Feedzai TrustScore can provide value not only when activating a new customer, but in a long-term setting.</p><h3>Conclusions</h3><p>In this blog post, we introduced <strong>Feedzai TrustScore</strong>, an AI-powered fraud risk score designed to detect fraud as a zero-day solution, without relying on historical data or complex model setups.</p><p>Feedzai TrustScore combines insights from a global community of financial institutions using a <strong>Mixture of Experts</strong> architecture and <strong>federated learning </strong>principles. This enables the detection of emerging fraud patterns that may be invisible to any single institution, while maintaining strict data privacy and compliance standards. Real-world results show a boost in fraud detection, a reduction in false alerts, and a faster time to market, proving that collective intelligence can drive real business value.</p><p>Feedzai TrustScore is not just an incremental improvement. It represents a completely different approach to tackling the problem of fraud detection, allowing our customers to stay ahead of the criminals, to better protect their clients.</p><p>If you would like to know more about <strong>Feedzai TrustScore</strong> and other <a href="https://www.feedzai.com/solutions/feedzai-iq/">Feedzai IQ™</a> initiatives, feel free to reach out to the Feedzai Product team: <a href="mailto:product@feedzai.com">product@feedzai.com</a>.</p><p>If you are interested in exciting AI projects to combat financial crime, get in touch with the Feedzai Research team: <a href="mailto:research@feedzai.com">research@feedzai.com</a>.</p><p>[1] Mixture of Experts (MoE) is a machine learning approach that divides an artificial intelligence (AI) model into separate sub-models (or “experts”), whose outputs are then combined with some gating/aggregation method [<a href="https://www.researchgate.net/profile/Seniha-Yuksel/publication/260707711_Twenty_Years_of_Mixture_of_Experts/links/568f68e508aeaa1481b077de/Twenty-Years-of-Mixture-of-Experts.pdf">source</a>]. Feedzai TrustScore’s gating and aggregation mechanisms are confidential.</p><p>[2] Federated Learning is a machine learning paradigm where multiple “data silos” collaborate to build an ML model, without sharing their private data [<a href="https://link.springer.com/content/pdf/10.1007/s13042-022-01647-y.pdf">source</a>].</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9ce7fcff84fb" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/feedzai-trustscore-enabling-network-intelligence-to-fight-financial-crime-9ce7fcff84fb">Feedzai TrustScore: Enabling Network Intelligence to Fight Financial Crime</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Here and Now: Reusing Code at Feedzai with JupyterLab Snippets]]></title>
            <link>https://medium.com/feedzaitech/here-and-now-reusing-code-at-feedzai-with-jupyterlab-snippets-ff3b8d880e50?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/ff3b8d880e50</guid>
            <category><![CDATA[jupyterlab]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[jupyter]]></category>
            <category><![CDATA[snippet]]></category>
            <dc:creator><![CDATA[João Palmeiro]]></dc:creator>
            <pubDate>Mon, 17 Mar 2025 13:11:26 GMT</pubDate>
            <atom:updated>2025-03-17T13:11:26.518Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="Illustration of a person interacting with a digital document interface. They appear to be in a workspace environment with cabinets containing folders, a bulletin board, and a minimalist design aesthetic." src="https://cdn-images-1.medium.com/max/1024/1*lMreoxxstMmg1oz80qf-fg.png" /></figure><p>Data scientists use different Jupyter notebooks every day — ranging from disposable ones for quick tasks to those shareable with clients. Over time, more and more notebooks accumulate, making it increasingly difficult to reuse them in whole or in part. To mitigate this problem and make the most relevant pieces of code quickly accessible to every data scientist, we developed <strong>JupyterLab Snippets</strong> at Feedzai — our take on leveraging code snippets directly on JupyterLab.</p><p><a href="https://jupyterlab.readthedocs.io/en/latest/">JupyterLab</a> is a computational notebook platform that enables us to carry on data science work (and beyond) via notebooks. These notebooks, where code, text, and images come together, allow us to complete all kinds of tasks, keeping each input close to each output. At Feedzai, data scientists have access to different JupyterLab environments packed with custom notebooks and Python packages. Here they go from analyzing data to training models, from preparing reports to debugging the system — a <a href="https://en.wiktionary.org/wiki/jack_of_all_trades">“lab of all trades”</a>, we could say.</p><p>Given the importance of JupyterLab and notebooks in the daily work of our data scientists, we started a research project that culminated in JupyterLab Snippets. First, we collected statistics from internal notebook repositories across teams and conducted user interviews with junior and senior data scientists. We needed to know more about how data scientists actually use JupyterLab and notebooks, and what their ideas are for a better platform.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3FopBuyq1jLGH3qEae2wFQ.png" /><figcaption>A sneak peek of JupyterLab Snippets. From the very start, every data scientist can import snippets immediately or start their collection by creating one from scratch.</figcaption></figure><p>After compiling the insights, several aspects became clear:</p><ul><li>JupyterLab and notebooks are heavily used for all sorts of data science and ad-hoc tasks (typically one per notebook). There is no single type of task (e.g., exploratory data analysis) that is more commonly addressed with notebooks than others.</li><li>While file structures may look similar at first glance (each environment has at least a model training notebook, for example), data scientists have different and personal workflows for coding notebooks.</li><li>Duplicating past notebooks available in the environment or getting them from repositories is a very common practice.</li><li>Notebooks composed of code snippets is also an identified practice. These notebooks are not intended to be run, and contain code and text for future reference (imagine a notepad in notebook format). This case and the previous one imply removal of unnecessary parts and parameterization.</li><li>Data scientists regularly communicate within teams and individually. Sharing notebooks/snippets is a common practice.</li><li>No significant issues were identified with the JupyterLab/notebook interface.</li></ul><p>It is true that data scientists have their own ways of finding whatever they need for their next notebook, and AI coding assistants are proliferating. Even so, would it be beneficial to improve the experience of reusing code in JupyterLab? After analyzing all the insights, we believe so. We believe in an interface that allows every data scientist to easily manage and use “their snippets” now and in one year, while also facilitating their sharing with other data scientists. JupyterLab Snippets aims to improve the developer experience, focusing on productivity and satisfaction, while having a low maintenance cost. Here is JupyterLab Snippets in its essence.</p><h3>Introducing JupyterLab Snippets</h3><p>JupyterLab Snippets is a <a href="https://jupyterlab.readthedocs.io/en/stable/user/extensions.html">JupyterLab extension</a> for data scientists to create, manage, and use code snippets directly on JupyterLab, facilitating code reuse in their notebooks. To be more precise, the interface is a <a href="https://github.com/jupyterlab/extension-template">JupyterLab extension</a> and the backend, for managing the snippet data, is a <a href="https://jupyter-server.readthedocs.io/en/latest/developers/extensions.html">Jupyter Server one</a>. Both communicate via a REST API.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JPB6ElAqNaI5MjzjdR5FOw.png" /><figcaption>Two of the three main parts: Snippet Sidebar and Snippet Editor. The snippets are adapted from the <a href="https://altair-viz.github.io/gallery/index.html">Vega-Altair documentation examples</a>.</figcaption></figure><p>The interface, a part of JupyterLab like notebooks and the like, is divided into three main components:</p><ul><li><strong>Snippets Sidebar</strong>: The <em>central hub</em> for JupyterLab Snippets, available as a new tab in the <a href="https://jupyterlab.readthedocs.io/en/latest/user/interface.html#left-and-right-sidebar">right sidebar</a> of JupyterLab. It allows the data scientist to manage and utilize the code snippets. Each snippet is available on a <strong>Snippet Card</strong>.</li><li><strong>Snippet Editor</strong>: The form-like interface for creating new snippets and editing existing ones. When opened, it is available as a tab in the <a href="https://jupyterlab.readthedocs.io/en/latest/user/interface.html#main-work-area">main work area</a> of JupyterLab.</li><li><strong>Shortcuts</strong>: Options for creating snippets from notebook cells. These options are available from the <a href="https://jupyterlab.readthedocs.io/en/latest/user/interface.html#context-menus">context menu</a> after right-clicking on a cell, and the option to start a snippet from a cell is also available from the <a href="https://jupyterlab.readthedocs.io/en/latest/user/interface_customization.html#toolbars">cell toolbar</a>.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BE7AqFoTnRomAjGHCKutSg.png" /><figcaption>Snippet Cards and Shortcuts. Shortcuts consist of new cell context menu options and a new option in the cell toolbar.</figcaption></figure><p>In the <strong>Snippets Sidebar</strong>, in addition to the <em>Personal</em> collection, data scientists will find a set of pre-made snippets: the <em>Feedzai</em> collection. They can switch between both (or view them all at once) by selecting the desired collection in the toolbar just above the list of available snippets. The <em>Feedzai</em> collection is a set of snippets for common actions performed in notebooks, prepared with the help of our data scientists. This collection is specially designed for newcomers who can take advantage of JupyterLab Snippets from day one. Additionally, it is available in a dedicated repository so that anyone can easily contribute to this collection and enrich it for everyone.</p><p>From the <strong>Snippets Sidebar</strong>, data scientists can export all of their snippets in JSON format (each snippet is exportable individually as well). This file makes it easy to share snippets among data scientists, as well as maintain them in repositories for reference. Each data scientist can then import one of these files into their environment, from the dropdown menu shown in the first screenshot, and have access to new snippets.</p><h4>Usage</h4><p>JupyterLab Snippets is designed to be a flexible tool that data scientists can integrate into their workflows in different ways and use as much or as little as they need. There is more than one way to create snippets, and each data scientist may have as few as five or as many as 50 snippets (or even more) at their disposal. Let’s look at a possible simple workflow:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*oU5xavwk2rShT0-JUN_pIQ.gif" /><figcaption>Creating a new snippet from scratch. The notebook is adapted from the <a href="https://github.com/altair-viz/altair_notebooks">Jupyter Notebooks for Altair repo</a>.</figcaption></figure><ol><li>After launching JupyterLab, the data scientist starts by opening the notebook they are working on.</li><li>Instead of copying and pasting code from a given source to the notebook directly, they open the Snippets Sidebar on the right side of JupyterLab and then the Snippet Editor to create a new snippet.</li><li>Since the data scientist can imagine reusing this piece of code in the future, they create a new snippet with it, including a name, a brief description, and two tags that describe it appropriately.</li><li>Now they insert the new snippet into the notebook and continue working from there.</li><li>Finishing the current notebook, the data scientist clears all the output. Then, when they review the notebook and check that everything is okay, they notice a cell that would also make a useful snippet for the future.</li><li>Since not all the cell content is relevant for a reusable snippet, the data scientist selects only what they want and starts a new snippet from there via the cell context menu.</li><li>Similar to the first snippet, they assign a name and a tag.</li><li>After a while, in a new notebook, the data scientist opens the Snippets Sidebar and quickly inserts both previously created snippets, as they will be useful in this new notebook as well.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*R-1f43tP-STIr-O3oSD9nA.gif" /><figcaption>Inserting snippets into a notebook.</figcaption></figure><h3>What’s Next</h3><p>JupyterLab Snippets is now available for data scientists to use across Feedzai. Our current focus is on helping data scientists incorporate JupyterLab Snippets into their daily workflow, addressing any issues that arise, and collecting feedback for future improvements.</p><p>If you have any questions or feedback, let us know in the comments section.</p><p><em>Beatriz Feliciano, Diogo Duarte, Ferran Pla Fernández, Iker Perez Lopez, João Bernardo Narciso, Rita Costa, and Sanjay Salomon: thank you so much for your thoughtful feedback that helped me shape this blog post!</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ff3b8d880e50" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/here-and-now-reusing-code-at-feedzai-with-jupyterlab-snippets-ff3b8d880e50">Here and Now: Reusing Code at Feedzai with JupyterLab Snippets</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[“Show Me What’s Wrong!”: Enhancing Fraud Detection Analysis by Combining Charts and Text]]></title>
            <link>https://medium.com/feedzaitech/show-me-whats-wrong-enhancing-fraud-detection-analysis-by-combining-charts-and-text-22ecfb342fb0?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/22ecfb342fb0</guid>
            <category><![CDATA[fraud-investigation]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[financial-fraud]]></category>
            <category><![CDATA[data-visualization]]></category>
            <category><![CDATA[data-analysis]]></category>
            <dc:creator><![CDATA[Beatriz Feliciano]]></dc:creator>
            <pubDate>Fri, 22 Nov 2024 18:35:14 GMT</pubDate>
            <atom:updated>2024-11-27T14:23:47.575Z</atom:updated>
            <content:encoded><![CDATA[<p>Every year, millions of people fall victim to financial fraud. <a href="https://feedzai.com/pressrelease/a-colossal-159-billion-lost-to-fraud-and-scams-finds-new-research-from-feedzai-and-the-global-anti-scam-alliance/">In 2023, the losses tied to this type of crime were estimated at US$159 billion just in the US</a>, with some <a href="https://www.nytimes.com/2024/07/29/business/retirement-savings-scams.html">people losing all of their retirement savings to scammers</a>.</p><p>However, the impacts of this issue stretch beyond someone’s finances. It can also impact a victim’s life in many dimensions. Detecting and quickly acting upon suspicious transactions is essential to tackle this problem.</p><h3>Finding Fraud Through Data Tables</h3><p>To review the data of alerted transactions, analysts look at information in tabular format (similar to what is presented in Figure 1), scrolling through it to assess past activity patterns of the alerted person and comparing those with the alerted event. “How much money was spent on average on past transactions?” or “Is that significantly different from the amount on the current alert?” are some questions they might try to answer during their review.</p><figure><img alt="Image of a table that analysts typically use to review the data of alerted transactions. It contains fields about each transaction event (ID, date, and status) and the person who made the transaction (name, phone number, and email address)." src="https://cdn-images-1.medium.com/max/1024/1*ymqXh3wRgLd5R5b1XhmgTQ.png" /><figcaption>Figure 1: Image of a table that analysts typically use to review the data of alerted transactions.</figcaption></figure><p>The issue with this approach is that finding groups of patterns and anomalies in tabular data can be overwhelming since it requires an increased cognitive load from analysts to interpret the data effectively. This becomes even more complex since these professionals must review and classify the alerted transaction in a short time — between 1 and 5 minutes.</p><h3>Revamping the analysis</h3><p>To solve this problem, we present a tool that combines charts and text to guide the analysis of financial transactions.</p><p>As presented in Figure 2, the tool (populated with synthetic data) is divided into three regions that provide different levels of information detail — from the most high-level to the most detailed. The goal is that the analyst can scan the charts and prioritize their review towards specific areas of the alert.</p><figure><img alt="Image of the proposed interface. It is composed of three main regions: the Knowledge Area Console, where the alert is segmented into analysis areas, which are highlighted in case of suspicious information, helping analysts detect risky analysis areas; the Knowledge Area Text Summary, where the selected area is broadly explained; and the Knowledge Area Graphical Representation, where analysts can explore in detail all the data points of the selection." src="https://cdn-images-1.medium.com/max/1024/1*9_sDCGrPEP8mrHg4-bIzmg.png" /><figcaption>Figure 2: Proposed interface composed of multiple regions: the Knowledge Area Console (A) to <strong>detect</strong> suspicious areas of the analysis; the Knowledge Area Text Summary (B) to <strong>understand</strong> those areas broadly; and the Knowledge Area Graphical Representation (C) to <strong>explore</strong> them in detail. The data presented above is synthetic and thus does not correspond to real data.</figcaption></figure><h4>Identifying Investigation Areas</h4><p>To assess suspicious areas of the alert and gain a general understanding of the data, analysts first look at the <strong>Knowledge Area Console</strong> (A), where they see all the areas that compose an alert — which are dynamic and use case dependent. For the considered use case, the analyst is presented with the alerted person demographics (A.1), transaction location (A.2), alerted person’s incoming and outgoing transactions (A.3), card used (A.4), counterpart (A.5), and alerted person’s activity (A.6). They are also pointed to the areas that have suspicious information and thus that might require more attention (in this case, A.5, the counterpart).</p><p>To gather more details about a specific alert area, analysts can click on its corresponding icon. This selection will be reflected in the other regions of the tool (B and C, as presented in Figure 3), which will then present insights about the data of the area. In the example illustrated in Figure 2, the analyst is interested in knowing more details about the alerted person’s balance between incoming and outgoing transactions (A.3) and thus selects that area for further investigation.</p><h4>Narrowing the Investigation Focus</h4><p>After selecting an area, analysts can understand more details about it in the <strong>Knowledge Area Text Summary</strong> (B). This is an LLM-generated summary of the most relevant insights of the data where relevant and suspicious information is pointed, giving analysts a broad understanding of the selection data. Through the summary of area A.3, analysts can quickly assess how much money the alerted person sent and received in the past three months and how many counterparts were involved in those transactions.</p><h4>Digging Deeper into the Data</h4><p>Upon reading the text summary, analysts might still feel like they need more information to understand the data. For that, they can look at the <strong>Knowledge Area Graphical Representation</strong> (C). This region is composed of one or more graphs tailored to the data and analysis needs of the selection. Here, all the data points of the selected area are represented, allowing analysts to perform an exhaustive evaluation of the data and to confirm the insights that were given in the other regions of the tool.</p><p>By looking at the graphical representations designed for area A.3, the analyst is able to gather insights about the entities the alerted person sent to or received money from. They can also see how those transactions occurred through time. As confirmed in the summary, they verify that no data regarding this area seems to be suspicious or out of the ordinary.</p><p>User feedback on this tool indicates that it could transform the way analysts perform their reviews. They mentioned that it improves their efficiency and “enables the most basic review to be almost automatic, allowing … time and effort to [be invested only in] more advanced cases.” Analysts also mentioned that the tool makes it easier to “get an overview of the behaviors of the alerted person” and thus “to identify what is wrong or what is not common to the person’s activity,” facilitating the identification of risky analysis areas and information.</p><figure><img alt="GIF showcasing the interface behaviour when selecting an analysis area. When selecting the area in the Knowledge Area Console, the Text Summary and Graphical representations change, adjusting the insights and charts to the new data." src="https://cdn-images-1.medium.com/max/1024/0*SYbYY0pbArkFctp7" /><figcaption>Figure 3: Proposed interface with two different analysis area selections (person who performed the alerted transaction, and the balance between incoming and outgoing transactions). The data presented above is synthetic and thus does not correspond to real data.</figcaption></figure><p>For more details about this work, refer to our <a href="https://research.feedzai.com/publication/show-me-whats-wrong-combining-charts-and-text-to-guide-data-analysis/">paper</a> and <a href="https://www.youtube.com/watch?v=DQnFr20h2XQ&amp;list=PL6HOcHf_w6mrceEUlo0TgW7jioxXV38o6&amp;ab_channel=Feedzai%7CFraudandFinancialCrime">video</a>.</p><p>If you have any questions or feedback, feel free to reach out to <a href="mailto:data-viz@feedzai.com">data-viz@feedzai.com</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=22ecfb342fb0" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/show-me-whats-wrong-enhancing-fraud-detection-analysis-by-combining-charts-and-text-22ecfb342fb0">“Show Me What’s Wrong!”: Enhancing Fraud Detection Analysis by Combining Charts and Text</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The GANfather: Using Malicious GenAI Agents to Combat Money Laundering]]></title>
            <link>https://medium.com/feedzaitech/the-ganfather-using-malicious-genai-agents-to-combat-money-laundering-1666908113fc?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/1666908113fc</guid>
            <category><![CDATA[gans]]></category>
            <category><![CDATA[money-laundering]]></category>
            <category><![CDATA[feedzai]]></category>
            <category><![CDATA[genai]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Ricardo Ribeiro Pereira]]></dc:creator>
            <pubDate>Fri, 04 Oct 2024 13:49:42 GMT</pubDate>
            <atom:updated>2024-10-07T10:31:56.758Z</atom:updated>
            <content:encoded><![CDATA[<p>Digital systems have become deeply integrated into many aspects of modern life, particularly within the financial sector. While digital banking simplifies day-to-day operations for clients, it also creates new opportunities for malicious actors to exploit these systems. As a result, money laundering has grown particularly prevalent due to this digital expansion.</p><p>Banks are required to monitor for money laundering activities and issue alerts when suspicious transactions are detected. Typically, monitoring is performed by rules-based legacy systems. A better approach would be to use Machine Learning models, but these usually require labeled data to train, which are mostly unavailable in this use case.</p><p>To tackle this problem, we employ advanced Generative AI (GenAI) techniques to generate synthetic data that simulates realistic money laundering activities. These synthetic examples help us identify vulnerabilities and strengthen the defense mechanisms used by banks and other financial institutions</p><p>In this blog post, we will explore the method developed by Feedzai, which leverages GenAI to tackle the challenges of detecting and preventing money laundering in today’s digital landscape. This blog post is the first of a series dedicated to the work done on GenAI by Feedzai Research in the last few years.</p><h3>Problem Statement</h3><p>First, let’s briefly introduce the concepts behind money laundering and the difficulties that banks face when trying to prevent it.</p><p><strong>Money laundering</strong> is the process of concealing the origins of illegally obtained funds. Criminals cannot directly spend “dirty” money without risking exposure of their illegal activities. Therefore, they want to disguise the origins of funds before using them.</p><p>Money laundering typically involves three stages:</p><ol><li><strong>Placement</strong>: the money is introduced into the financial system, often in small amounts spread across various banks.</li><li><strong>Layering</strong>: the money launderer moves the funds through a series of transactions, typically across multiple financial institutions and jurisdictions, to obscure the money’s origin.</li><li><strong>Integration</strong>: the “cleaned” money is reintroduced into the legitimate economy, where it can be safely used by criminals.</li></ol><p>Our work focuses on the layering stage.</p><p>Detecting money laundering is particularly challenging because each bank has a limited view of the entire financial system (see figure below). Banks can only monitor transactions in which at least one of the accounts involved is an internal account (green edges). Money launderers exploit this limitation by moving funds between different banks, ensuring each institution has minimal information. As such, the transactions most indicative of the layering process often occur between accounts of different institutions (<em>bold</em> green edges).</p><figure><img alt="A diagram depicting the bank’s view over the network of transactions. The bank has complete visibility of the internal internal accounts and their transactions. If this transactions are made to or from accounts outside of that bank, the bank may have some visibility as well. All transactions that happen between external accounts are not visible for the bank." src="https://cdn-images-1.medium.com/max/428/1*VBrEu-aFIGrtauEWyY3bZg.png" /></figure><p>We can represent these in-and-out transactions from a single bank’s perspective as a <strong>directed tripartite graph</strong>. In this graph, external source accounts transfer money to internal middle accounts, which then pass the funds to external destination accounts, creating a flow of money through the bank.</p><figure><img alt="A diagram depicting the tripartite representation. There is a set of external accounts making transactions to a set of internal accounts, which in turn make transactions to another set of external accounts." src="https://cdn-images-1.medium.com/max/500/1*X_6z5xDxNy6hrvM3O2kMvQ.png" /></figure><p>Banks are required to monitor for money laundering activities and issue alerts when suspicious transactions are detected. If they don’t comply, they can receive substantial fines from regulatory agencies.</p><p>Typically, monitoring is done by encoding the domain knowledge of experts in the form of rules that capture known patterns of money laundering. These rules often focus on individual accounts and trigger when certain thresholds are exceeded within a specific time frame, such as “total amount sent in a month” or “number of transactions in a day”, or based on location information. However, this approach often results in low detection rates and a high number of false positives.</p><p>Machine Learning models offer a different option, but these usually require labeled data to train, which is usually unavailable, incomplete, or very expensive.</p><h3>The GANfather</h3><p>To overcome this limitation, we leveraged GenAI to develop “The GANfather”, a method to generate examples of illicit activity and train effective detection systems <em>without the need for labeled data</em>. Additionally, if an existing detection system is already in place, our method can identify its weaknesses while simultaneously training a complementary detection system to protect against such attacks.</p><figure><img alt="A schematic representation of the components of the solution. There is a generator that creates examples of synthetic illicit activity. These examples, plus some unlabelled data, are used to train a money laundering detector. Optionally, the generator may receive feedback from a pre-existing detection system." src="https://cdn-images-1.medium.com/max/1024/0*5xDepq2CA-6Y4Yzj" /></figure><p>We build upon a Generative Adversarial Network (GAN) by incorporating an optimisation objective and, optionally, a pre-existing detection system. The generator creates synthetic examples of suspicious financial activity. These examples are then used to train the discriminator to identify patterns of money laundering, even without labeled datasets.</p><h4>Data representation</h4><p>To effectively generate and detect suspicious money flows, we first need to represent the transactional data in a structured format.</p><p>Transactional data is usually represented as a table where each row corresponds to a transaction with several features. However, for the purpose of detecting money flows, we conceptualize them as a directed tripartite graph. This graph can be represented as a 3D tensor: the first dimension corresponds to internal accounts, the second to external accounts, and the third to the time window of the transactions, discretized into time units. Each cell in this tensor contains the sum of amounts transferred between the corresponding pair of accounts, during the corresponding time window.</p><figure><img alt="Diagram depicting transaction data in three formats: a table, a tripartite graph and a 3D tensor." src="https://cdn-images-1.medium.com/max/1024/0*YBRlkze-TQBfjoWt" /></figure><p>Due to the nature of transactions, most cells in the tensor will be empty, which is not very efficient from a computational point of view. However, this representation offers a fixed-size input and output for our models, allowing us to use dense or convolutional layers in our neural networks, avoiding the complexity of recurrent layers.</p><h4>Generator</h4><p>With the data representation established, the next step is to generate synthetic transactional data.</p><p>This process is similar to the original GAN framework, in which a deep neural network receives a random noise vector as input and produces data in the specified format. However, unlike traditional GANs, our generator is guided by feedback from three distinct components, as shown in the figure below:</p><ul><li><strong>Discriminator</strong>: makes the generated data more realistic, closer to real data.</li><li><strong>Optimisation objective</strong>: encourages the generator to produce patterns that mimic money laundering behavior.</li><li><strong>Alert system</strong> (optional): helps the generator avoid creating patterns that would trigger an alert.</li></ul><figure><img alt="Diagram depicting the training of the generator. It receives some random noise as input and outputs synthetic examples. This examples are then processed by a discriminator, an optimisation objective and optionally an alert system. These three components provide feedback in the form of a gradient to the generator." src="https://cdn-images-1.medium.com/max/1024/0*Ph__u9AebjVwtEPT" /></figure><p>We will now describe each of these components in more detail.</p><h4>Optimisation objective</h4><p>Using the generator described above, we can create data in the intended format. But how do we teach the generator to create examples that mimic money flow patterns? To achieve this, we fall back on domain knowledge. We know that money laundering flows are typically characterized by large and similar amounts of money going in and out of the internal accounts.</p><figure><img alt="Diagram exemplifying how to compute the sum of amounts of incoming transactions and the sum of amounts of outgoing transactions, to or from internal accounts." src="https://cdn-images-1.medium.com/max/320/1*X0F5DQTBqCM8R745WRQ5Fg.png" /></figure><p>To describe this behavior, we define the objective function as the geometric mean of the total amount of incoming and outgoing money per generated account. This simple formula naturally encourages the generator to increase the volumes of money being transferred, while maintaining a balance between incoming and outgoing totals.</p><figure><img alt="GIF showing the shape of z equals geometric mean of x and y in 3D space." src="https://cdn-images-1.medium.com/max/1024/1*rwnXHowKFW17EryFvUg5pA.gif" /></figure><h4>Discriminator</h4><p>A potential issue with the aforementioned objective is that it is unbounded, allowing the generator to increase amounts indefinitely, resulting in unrealistic data. To prevent this, we incorporate the feedback from the discriminator.</p><p>The discriminator is another deep neural network, similar to the generator, that evaluates examples and produces a score indicating the likelihood of each being real or synthetic. This component not only refines the training of the generator, making the synthetic data more realistic, but it is also useful itself. Since the real data primarily consists of legitimate activity and the synthetic data mimics money laundering behavior, the discriminator can be used as a detection system for illicit activity.</p><figure><img alt="Diagram depicting the training of the discriminator. It receives either real or synthetic examples and outputs its prediction of wether it is real or not." src="https://cdn-images-1.medium.com/max/1024/0*r2cFIB2Kew_c7_z6" /></figure><h4>Alert System</h4><p>Financial institutions often have systems in place to flag some suspicious patterns of money laundering. Usually this alert system is based on rules, like “every transaction above ten thousand dollars needs to be reviewed”.</p><p>If we pass the feedback of the alert system to the generator, it can learn to create examples that bypass the existing system. This approach helps identify vulnerabilities in the current systems and generates examples of money-flow behaviors that go undetected. Furthermore, since the discriminator model learns to detect these synthetic examples, it can serve as a complement to the existing alert system, improving overall detection.</p><figure><img alt="Diagram depicting three types of accounts: real legitimate, real malicious and generated. Then, two decision boundaries are shown: one from the pre-existing detection system, and one from the discriminator. The discriminator’s decision boundary is circling the generated accounts. The two decision boundaries don’t overlap." src="https://cdn-images-1.medium.com/max/1024/0*Z1jfof_Mjfv8Wtw8" /></figure><h4>Complete architecture</h4><p>To summarize, the GANfather architecture consists of:</p><ul><li>a <strong>generator</strong> that produces synthetic examples mimicking money laundering activity;</li><li>a <strong>money flow objective</strong> that guides the generator to create realistic money flows;</li><li>a <strong>discriminator</strong> that distinguishes between real and synthetic data, forming the basis of a new detection system;</li><li>(optionally) an <strong>alert system</strong> that ensures the generated examples bypass existing detection rules, helping to identify potential gaps in current systems</li></ul><figure><img alt="Diagram depicting how the different components of the complete solution interact with each other." src="https://cdn-images-1.medium.com/max/1024/0*kTXEmSsEiYLeCFM7" /></figure><h3>Experiments and Results</h3><h4>Dataset</h4><p>We use a real-world dataset of financial transactions, containing approximately 200,000 transactions between 100,000 unique accounts over 10 months. Some accounts are labeled as suspicious of money laundering. We built a real test set of 5,000 accounts, 184 of which are labeled positive.</p><p>The dataset includes a limited set of features: source account, target account, transferred amount, and timestamp of the transaction.</p><h4>Comparison between real and generated data</h4><p>First, we compare the distributions of real and generated data. Because we include the money flow objective in the loss of the generator, we expect a larger volume of money being transferred in the synthetic examples. The following figure shows the distributions of different volume-related metrics.</p><figure><img alt="Three panels, each with an histogram comparing statistics real and generated accounts. The first panel shows to that generated accounts move more money than real accounts. The second panel shows that the amount per transaction is similar for both types of accounts. The third panel shows that generated account make a larger number of transactions than real accounts." src="https://cdn-images-1.medium.com/max/1024/0*DszYzFePxdIngeX7" /></figure><p>Looking at the distribution of the total amount of money flowing through the internal accounts (left panel), we see that <strong>generated accounts move much larger volumes of money than real ones</strong>. However, the center panel shows that the generator is approximating the range of the real distribution of amounts per transaction quite well. This is probably to avoid triggering rules that capture large amount transactions. Instead, the generated accounts are able to transfer more money by increasing the number of transactions significantly, when compared to the real data (right panel).</p><h4>Detection performance</h4><p>We generate a dataset of synthetic transactions using different pre-trained generators to increase variety. Then, we train a new discriminator to distinguish between real (unlabeled) data and synthetic examples of suspicious activity. Finally, we evaluate this discriminator using the test set with real transactions and real labels.</p><p>We compare the performance of a set of standard anti-money laundering rules against this discriminator. For a fair comparison, we adjust the model’s threshold to match the alert rate of the rules, ensuring both systems predict the same number of positive cases. We see that <strong>the model outperforms the rules in detecting suspicious transactions</strong>, even though it was trained using only generated data as positive examples.</p><p>Next, we simulate a combined detection system that triggers an alert if either the rules or the model detects suspicious activity. The results show minimal overlap between the alerts and true positives identified by the two methods, suggesting that <strong>the model captures different patterns of suspicious behavior</strong> compared to the rules. This is expected, given that the generator was trained specifically to create examples that evade the rule-based system, leading the discriminator to identify distinct patterns.</p><p>In conclusion, the discriminator effectively complements the rule-based system, resulting in <strong>a combined approach that significantly improves the detection of money laundering activities</strong>.</p><figure><img alt="A diagram comparing the predictive performance of a rule-based solution against either our discriminator model or a combined solution of rules plus our model. For the same alert rate, the model has 5 percentage points higher recall and 13 percentage points higher precising than the rules. And the rules plus model solution has 16 percentage points higher recall and 6 percentage points higher precision than the rules." src="https://cdn-images-1.medium.com/max/1024/0*DWpP3lJna1IWTk6_" /></figure><h3>Conclusion</h3><p>In this blog post, we introduced a method leveraging GenAI to generate synthetic data that simulates realistic money laundering activities. This data can be used to train Machine Learning models to detect money laundering without requiring labeled data.</p><p>Our approach involves training a generator to produce examples that mimic money laundering behavior, guided by an optimization function integrated into its loss. This synthetic data is then used to train a discriminator, which learns to distinguish between real (mostly legitimate) behavior and synthetic suspicious behavior.</p><p>Our results demonstrate that, when tested on a real test set with real labels, the discriminator outperforms traditional rule-based systems in predictive accuracy and can also serve as an effective complement to them. For a more detailed explanation about our method or our experiments, please refer to <a href="https://arxiv.org/pdf/2307.13787">the full paper</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1666908113fc" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/the-ganfather-using-malicious-genai-agents-to-combat-money-laundering-1666908113fc">The GANfather: Using Malicious GenAI Agents to Combat Money Laundering</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Aequitas Flow step-by-step: a Fair ML optimization framework]]></title>
            <link>https://medium.com/feedzaitech/aequitas-flow-step-by-step-a-fair-ml-optimization-framework-9d2f90309ba4?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/9d2f90309ba4</guid>
            <category><![CDATA[responsible-ai]]></category>
            <category><![CDATA[fairness]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Sérgio Jesus]]></dc:creator>
            <pubDate>Mon, 12 Aug 2024 14:35:43 GMT</pubDate>
            <atom:updated>2024-08-12T14:35:42.566Z</atom:updated>
            <content:encoded><![CDATA[<h4>By Sérgio Jesus, Inês Silva, Pedro Saleiro, Hugo Ferreira, Pedro Bizarro</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/902/1*vytckI7OMjr1pa_embFH6Q.png" /></figure><p><strong>In this blog post we will visit<em> Aequitas Flow</em>, an Open-Source framework designed to run complete and standardized experiments of Fair ML algorithms. </strong>We encourage you to try <em>Aequitas Flow</em> with the Google Colab Notebooks, which are available in the project’s <a href="https://github.com/dssg/aequitas/tree/master?tab=readme-ov-file#example-notebooks-supporting-various-tasks-and-workflows">GitHub repository</a>.</p><p>This blog post is based on the <a href="https://arxiv.org/abs/2405.05809">paper</a> by Sérgio Jesus, Pedro Saleiro, Inês Silva, Beatriz M. Jorge, Rita P. Ribeiro, João Gama, Pedro Bizarro, and Rayid Ghani.</p><h4><strong>Table of Contents:</strong></h4><p><a href="#bcf1"><strong>1. What is Aequitas Flow?</strong><br></a><a href="#ea13">- 1.1. For Practitioners selecting a model<br></a><a href="#4828">- 1.2. For Researchers running a benchmark<br></a><a href="#9a74"><strong>2. Install Aequitas Flow<br></strong></a><a href="#fcaa"><strong>3. The components of Aequitas Flow</strong></a><strong><br></strong><a href="#7a5c">- 3.1. Experiment<br></a><a href="#a8e0">- 3.2. Optimizer<br></a><a href="#ac14">- 3.3. Datasets<br></a><a href="#10ad">- 3.4. Methods<br></a><a href="#dabc">- 3.5. Audit<br></a><a href="#3e3f"><strong>4. Conclusion</strong></a></p><h3><strong>What is <em>Aequitas Flow</em>?</strong></h3><p><strong><em>Aequitas Flow</em> </strong>is the codename for the latest version of <em>Aequitas</em>, a well-established package for fairness auditing in the ML community. This version extends the package to include experimentation with Fair ML algorithms.</p><p><em>Aequitas</em> started as a software to <strong>diagnose and alert for disparities</strong> in ML models’ decisions depending on sensitive attributes, such as race, gender, or age. To achieve this, the package runs a Bias Audit, in which it calculates several metrics across all data groups, determined by the sensitive attributes, and compares them to identify any gap in performance.</p><p>While some other packages already implement Fair ML methods, they also introduce an overhead of technical knowledge to configure, evaluate, and deploy these models. Because of this, we extended <em>Aequitas</em> to enable users to conduct experiments using a wide variety of fair ML methods from the literature in an intuitive user experience. <em>Aequitas Flow</em> was built on the principles of <strong>extensibility</strong> and <strong>reproducibility</strong>: it allows users to incorporate their own datasets and methods in the framework using familiar interfaces of sci-kit-learn and pandas. It ensures their work can be replicated by performing an extensive collection of configurations and information.</p><p>The framework is designed for two different experiences, depending on the user’s end goal. It provides the means for:</p><ul><li><strong>Practitioners — </strong>to <strong>select a model</strong> for a given application or dataset;</li><li><strong>Researchers — </strong>to <strong>run a benchmark</strong>, or check<strong> </strong>if a given method is significantly better than others.</li></ul><h4>For Practitioners selecting a model</h4><p>A Practitioner can use <em>Aequitas Flow</em> to <strong>select a model</strong>, for example, to go to a production environment. To help in this task, <em>Aequitas Flow</em> creates an interactive plot to compare models on a given dataset. This provides an intuitive way to view the achieved performance and fairness of the trained models.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*0b2w8smjQtlciESk" /><figcaption>Figure 1 — Example of an experiment to select a model. Each model is represented by a circle in the graph on the left. The blue line shows the Pareto line, with models for which no other model is simultaneously better in both Performance and Fairness and the recommended model is marked with a star. The models were trained with a dataset provided by <em>Aequitas</em>.</figcaption></figure><p>This plot shows all the models of an experiment drawn in a two-axis grid, where the X-axis has the performance metric (e.g., it can be Accuracy, TPR, Precision, <em>etc</em>.) and the Y-axis the fairness metric (e.g., Demographic Parity, Equal Opportunity, <em>etc</em>., more about fairness metrics <a href="https://github.com/dssg/aequitas/tree/master?tab=readme-ov-file#fairness-metrics">here</a>). Generally, we aim to maximize both these metrics, and as such, the best models are in the top right corner.</p><p>The plot highlights the model with the best combination of the selected performance and fairness metrics, being marked as “Recommended” (with a star). This best combination is, by default, given by the model with the highest combination of performance and fairness. The weight of each metric can be adjusted to focus on more performing or fairer models, with an <em>alpha</em> parameter in the plotting method.</p><p>Additionally, the Pareto frontier is highlighted in blue. This frontier is composed of the models that present a dominant tradeoff (i.e., no model can obtain better performance without losing fairness and vice versa). The plot lets the user interactively click on any models and see how they compare to the “Recommended” model. The comparison includes a comprehensive list of metrics of fairness and performance, as well as the hyperparameters of the model. In the provided example, we compare the “Recommended” model with the one that achieved the best predictive performance (+1.9 p.p. in Accuracy). We notice, however, that it has a much lower value of fairness (-36.9 p.p. in Equal Opportunity).</p><h4>For Researchers running a benchmark</h4><p>A common objective among researchers is to <strong>run a benchmark</strong>, i.e., compare a new method with other methods established in the literature for a wide array of tasks or datasets. Using <em>Aequitas Flow</em>, it is possible to run the necessary experiments and analyze the results quickly and straightforwardly.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1006/0*1Pw87R1tKQ6WJnHX" /><figcaption>Figure 2 — Comparing the tradeoffs between fairness (equal opportunity, in this case) and performance (accuracy, in this case) for several algorithms.</figcaption></figure><p>This plot has each method (represented by a different line) drawn within all the possible tradeoffs between fairness and performance. The X-axis determines this tradeoff, and is what we call the alpha parameter. To the left of the X-axis, the value plotted in the Y-axis is more influenced by the fairness metric (in this case, Equal Opportunity), while to the right, it is more influenced by the performance metric (Accuracy). Methods that are above the others in certain regions are considered dominant. For example, FairGBM (in orange) is dominant in the region of fairer methods.</p><p>The shaded regions between each method are estimated through a bootstrap of controllable size. This emulates the expected result and confidence interval for a certain number of trained models for each method. This allows researchers to identify both the methods that are expected to obtain the best results (either in fairness, performance, or a combination of both) and methods that are more or less stable in training.</p><p>The <em>Aequitas Flow</em> framework provides the necessary tools to easily conduct and visualize these experiments while allowing for flexibility in the chosen metrics, datasets, and sensitive attributes being analyzed.</p><h3><strong>Install<em> Aequitas Flow</em></strong></h3><p>Whether you are a practitioner, a researcher, or are just interested in the package, you can easily <strong>try it out for yourself</strong>! We provide <strong>resources</strong> to enable anyone to <strong>quickly start </strong>using the <em>Aequitas Flow</em> framework.</p><p><em>Aequitas Flow</em> is the latest version of Aequitas, and therefore, the first step is as simple as installing the current version of Aequitas via pip, using:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/869/0*f1zW86xLuIoAu-2O" /></figure><p>To facilitate understanding how to configure an experiment and obtain results using <em>Aequitas Flow</em>, we have curated a <strong>series of example notebooks</strong>, which you are free to adapt as you follow along.</p><p>Across these notebooks, we explain the multiple <strong>components</strong> of the package and provide examples on running different <strong>pipelines</strong>, from processing raw public data to training Fair ML models and generating the resulting plots.</p><p>The available <strong>Google Colab Notebooks</strong> are the following:</p><ul><li><a href="https://colab.research.google.com/github/dssg/aequitas/blob/notebooks/compas_demo.ipynb">Audit a Model’s Predictions</a> — Check how to do an in-depth bias audit with the <a href="https://www.kaggle.com/datasets/danofer/compass">COMPAS</a> example notebook (or use your own data);</li><li><a href="https://colab.research.google.com/github/dssg/aequitas/blob/notebooks/aequitas_flow_model_audit_and_correct.ipynb">Correct a Model’s Predictions</a> — Create a dataframe to audit a specific model and correct the predictions with group-specific thresholds in the Model correction notebook;</li><li><a href="https://colab.research.google.com/github/dssg/aequitas/blob/notebooks/aequitas_flow_experiment.ipynb">Train a Model with Fairness considerations</a> — Experiment with your own dataset or methods and check the results of a Fair ML experiment;</li><li><a href="https://colab.research.google.com/github/dssg/aequitas/blob/notebooks/aequitas_flow_add_method.ipynb">Add your method to <em>Aequitas Flow</em></a> — Learn how to add your own method to the <em>Aequitas Flow</em> toolkit.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*9XXeFgcKRCn3mlpu" /><figcaption>Figure 3 — Start of an interactive notebook in Google Colab</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4BS7njFuUvHdi8a2" /><figcaption>Figure 4 — Example of how to configure an experiment</figcaption></figure><h3><strong>The components of Aequitas Flow</strong></h3><p>Now that you know what <em>Aequitas Flow</em> is and how to use it, we will explore its package contents in more detail.</p><p><em>Aequitas Flow</em> is designed to offer an intuitive user experience while still being flexible enough for more experienced users to extend its components to meet their unique requirements. We finish this blog post by checking the architecture that makes <em>Aequitas Flow</em> a versatile and empowering tool.</p><h4>Experiment</h4><p>The Experiment is the main orchestrator of the workflow within the package.</p><p>It processes configurations — either in the form of files or Python dictionaries — specifying the methods, datasets, and optimization parameters to be used in the experimental process. The Experiment then handles the initialization and population of the necessary classes, ensuring they interact deterministically throughout the execution process. When an experiment is completed, the results are readily available to be analyzed.</p><p>This component can be instantiated to simplify the experimental process to only require the dataset and can execute an experiment using default settings for methods and optimization. This feature is intentionally designed to streamline initial experiments and reduce configurations.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/0*5-8_y1UeP00PjcAS" /></figure><h4>Optimizer</h4><p>The Optimizer component manages hyperparameter selection and model evaluation.</p><p>Having the hyperparameter search space of the methods and a split dataset, it handles the hyperparameter tuning, evaluating the performance of models, and storing the resulting objects, scores, and predictions. The Optimizer component leverages the <a href="https://optuna.org/">Optuna</a> framework for hyperparameter selection and employs the Aequitas package for fairness and performance evaluation of the models.</p><h4>Datasets</h4><p>This component has two primary functions:</p><ul><li>loading the data;</li><li>generating splits according to user-defined configurations.</li></ul><p>It maintains details on target attributes, sensitive features, and categorical variables, presenting the data in an extension of the <a href="https://pandas.pydata.org/docs/reference/frame.html">pandas dataframe</a> format.</p><p>The framework initially encompasses eleven datasets, selected for their use in research, including those from the <a href="https://github.com/feedzai/bank-account-fraud">BankAccountFraud</a> (created by Feedzai) and <a href="https://github.com/socialfoundations/folktables">Folktables</a> collections. The Dataset component allows users to supply their own datasets, supporting both CSV and parquet formats.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/0*XRPXGcjs2SfvvZ2D" /></figure><h4>Methods</h4><p>These components are dedicated to data processing and creation and adjustment of predictions for validation and test sets.</p><p><em>Aequitas Flow</em> provides interfaces for <strong>three types of Fair ML methods</strong>:</p><ul><li><strong>Pre-processing methods</strong>, which modify the input data;</li><li><strong>In-processing methods</strong>, which aim to enforce fairness during model training;</li><li><strong>Post-processing methods</strong>, which adjust the resulting scores or decisions.</li></ul><p>Additionally, classical ML methods are included in the “base estimators” category function similarly to in-processing methods. These methods adhere to standardized interfaces to ensure seamless operation and facilitate function calls within the experiment class.</p><p>Currently, <a href="https://github.com/dssg/aequitas?tab=readme-ov-file#fair-ml-methods">15 methods</a> are supported, including pre-processing techniques such as undersampling and oversampling, label massaging and suppression, and label flipping. Regarding in-processing techniques, the package includes <a href="https://feedzai.com/blog/understanding-fairgbm-feedzais-experts-discuss-the-breakthrough/">FairGBM</a>, a gradient boosting machine algorithm with fairness constraints developed by Feedzai, and the methods of Exponentiated Gradient and Grid Search for transforming fairness constraints into cost-sensitive classification. For post-processing, the framework includes different implementations of group-wise thresholding.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/798/0*251zw9B7Q2AKTPIc" /></figure><h4>Audit</h4><p>The Audit component simplifies the process of calculating and analyzing any disparities in performance between different groups. The Aequitas toolkit offers a suite of confusion matrix-based metrics for auditing the existence of bias.</p><p>Users can specify a group as a reference for the disparity comparison and select the appropriate fairness metric for their analysis. Aequitas Flow then leverages the Audit class to create a dataframe of metrics and disparities for each group in the dataset, allowing for a comprehensive analysis of the predictions that a method has produced for a given dataset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/0*NzM6DNV4OXd-abQF" /></figure><p><em>Aequitas Flow</em> further provides tools for visualizing the results of the Bias Audit, as shown below in Figures 5 and 6.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/951/0*LtiTsL6DvkN8Ozr-" /><figcaption>Figure 5 — Summary of an Audit. In this example, we focus on two metrics (False Positive Rate and False Discovery Rate), and three protected attributes (Race, Sex, and Age group).</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/952/0*RCPuWFqgObB76Eyv" /><figcaption>Figure 6 — Disparity plot of an Audit. Here, we select a specific attribute to plot (in this case, Race). With this plot, we see the relative differences in metrics between the groups of the dataset.</figcaption></figure><p>In Figures 5 and 6, we are able to view the results of the bias audit. Figure 5 presents a summary plot of the bias audit. It identifies the groups that have significant differences from the metrics of the reference groups and highlights them as red. We can get more information by hovering over these groups, such as the group’s name, size, and metric value.</p><p>Figure 6 shows the relative differences in metrics between groups. The examples illustrate two error rates: FPR, which is the percentage of negative labels incorrectly labeled as positive, and FDR, which is the percentage of positive labeled instances which are negative. The user can select the metrics of these plots.</p><h3><strong>Conclusion</strong></h3><p>As more people navigate the complex landscape of fairness in machine learning, <em>Aequitas Flow</em> stands as an effort to drive ethical open-source innovation. We invite you to explore <em>Aequitas Flow</em> and contribute to its development by visiting our <a href="https://github.com/dssg/aequitas">GitHub repository</a>. To contribute to the package’s development, feel free to open an issue in the repository or create a merge request regarding one of the open issues.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9d2f90309ba4" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/aequitas-flow-step-by-step-a-fair-ml-optimization-framework-9d2f90309ba4">Aequitas Flow step-by-step: a Fair ML optimization framework</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Building Trust in a Digital World: The Role of Machine Learning in Behavioral Biometrics]]></title>
            <link>https://medium.com/feedzaitech/building-trust-in-a-digital-world-the-role-of-machine-learning-in-behavioral-biometrics-bb0da913d95a?source=rss----e11168e7fe6b---4</link>
            <guid isPermaLink="false">https://medium.com/p/bb0da913d95a</guid>
            <category><![CDATA[feedzai]]></category>
            <category><![CDATA[digital-trust]]></category>
            <category><![CDATA[online-fraud-prevention]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Javier Liébana]]></dc:creator>
            <pubDate>Fri, 21 Jun 2024 14:01:53 GMT</pubDate>
            <atom:updated>2024-06-21T14:01:53.596Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kVoRoWuR1AtSnkxH2Qb7rQ.png" /></figure><p>In the world of financial services, the bank or financial institution’s relationship with the customer relies on <strong>digital trust</strong>, which is anchored in two fundamental principles. First, it must ensure the person engaging through digital banking channels is genuinely the individual they claim to be. Second, it must confirm that this person is authorized to complete the intended financial transaction.</p><p>Addressing these crucial requirements is the core mission of Feedzai’s Digital Trust solution. The solution collects and analyzes comprehensive user behavioral data, scrutinizes device information for potential threats, such as malware attacks, and evaluates contextual factors like network, operating system, or browser information to gain a complete understanding of the user’s environment. However, the high volume and heterogeneous nature of the collected data, among other challenges, makes detecting potential fraudulent sessions with high accuracy a formidable endeavor.</p><p>In this blog post we explore how a new machine learning (ML) model that performs a continuous evaluation of collected data and leverages insights from previous frauds to vastly improve Digital Trust’s fraud prevention capabilities. We will start with an introduction to technical details behind our Digital Trust solution, going into the challenges of fraud detection and prevention. We continue by explaining how we can apply ML to boost fraud detection and how we deployed the new Fraud model to dozens of Feedzai customers.</p><h3>Table of Contents</h3><p><a href="#bf05"><strong>1. Digital Trust data collection</strong></a><br> - 1.1 <a href="#6ed6">The user journey</a><br> - 1.2 <a href="#35e3">Behavioral biometrics data</a><br> - 1.3<a href="#cb3b"> User’s behavior</a><br> - 1.4<a href="#0595"> Device and network data</a><br><a href="#2880"><strong>2. Challenges to detect fraud in Digital Trust</strong></a><br><a href="#9705"><strong>3. Machine Learning for Digital Trust</strong></a><br> - 3.1 <a href="#f1ad">The holistic approach</a><br> - 3.2 <a href="#500a">New Fraud Model</a><br><a href="#c6df"><strong> 4. Deploying the model</strong></a><br><a href="#dd08"><strong> 5. In summary</strong></a></p><h3><strong>Digital Trust data collection</strong></h3><p>To better identify the challenges that are typically faced when designing a fraud prevention system based on Digital Trust, first we need to understand the user’s journey and the data that the system is able to collect.</p><h4>The user journey</h4><p>The user’s journey commences the moment they register on the bank’s website or application. During this registration phase, the user enters their data, triggering the initiation of Digital Trust’s protective measures, even if the user isn’t fully registered yet.</p><p>At this instant, the Digital Trust system can already:</p><ul><li>Detect whether the device used is associated with previous frauds;</li><li>Identify if the network originates from a location with elevated fraud rates;</li><li>Notice any deviations in the user’s behavior, such as pasting their name instead of typing it.</li></ul><p>Based on these illustrative examples, we can promptly inform the financial institution and issue an alert regarding the creation of a new account if malicious intent is suspected.</p><p>Likewise, when a user accesses either the website or the mobile application, they undergo a login procedure. During this phase, we can analyze the user’s typing patterns and how they compare to previous sessions. We can also determine if the device used by the current user has been shared by previous users. As the user progresses through various activities, such as reviewing past transfers and initiating new transactions, Digital Trust continuously monitors their actions, proactively identifying and reporting any suspicious behavior.</p><p>To perform the analyses and detections, the Digital Trust system collects different types of data.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*qO0ylPrxCJGhLb8O" /></figure><h4>Behavioral biometrics data</h4><p>Regarding biometric data, Digital Trust can handle various types of data depending on the device. For desktop-like devices, the system collects biometric events, including keystrokes, which involve monitoring the duration of key presses, the specific type of key (e.g., a number, letter, or special character), and the typing speed. The system also tracks mouse-related events, encompassing mouse movements and mouse clicks. These biometric events allow the Digital Trust system to verify user identity by comparing current patterns with previous ones, detect the use of Remote Access Trojans (RATs), identify bot usage or behaviors that are not humanly possible, among other unusual behaviors.</p><p>In the case of mobile-like devices, the interaction differs, and consequently, so does the biometric data collected. On these devices, primary interaction occurs on the device’s screen. The Digital Trust system captures touch events, recording position and pressure strength, as well as typing on the virtual keyboard and screen gestures like strokes or pinch movements. Additionally, the mobile devices usually have other sensors, such as orientation of the screen or gyroscope movements, providing more usage information. Once more, this serves as valuable data for confirming user identity and behavior verification.</p><h4>User’s behavior</h4><p>More information is derived from user operations on the bank’s digital platform. Specific sets of views within the platform may be linked to critical actions, such as initiating a transaction or altering the contact information needed for two-factor authentication.</p><p>Conversely, actions like adding a new frequent beneficiary or adjusting particular settings may signify an atypical user journey. These signals must not only be reported to the bank or financial institution analysts but also incorporated as features within the Digital Trust detection systems. This information is harnessed by Digital Trust to proactively mitigate and prevent malicious attacks.</p><h4>Device and network data</h4><p>Another source of information involves data derived from the user’s device and connection. On the one hand, in the case of accessing the bank’s website, Digital Trust gathers the information related to the browser and its configuration. On the other hand, in the case of using the bank or financial institution’s application, the Digital Trust integration extends this data collection with software details like the operating system version and default language, as well as physical data such as battery availability or the current telephone line status (e.g., if the user is making a call simultaneously).</p><p>Regarding network information, we can deduce specific details from the user’s connection, such as the current Internet Service Provider (ISP), network type, or the user’s approximate location. All this information empowers our detection mechanisms to identify both unusual behaviors or configurations and establish typical fraudulent patterns.</p><p>In conclusion, Digital Trust seamlessly integrates with financial institutions’ digital platforms, continuously monitoring user behavior and digital environments upon login to detect anomalies and suspicious activities. It gathers diverse data, including biometric data from keystrokes and mouse movements, and leverages this information to verify user identity and identify unusual behavior. User operations on the platform, such as critical actions or atypical user journeys, provide additional signals for the system to proactively prevent malicious attacks. Data derived from the user’s device and connection further aids in recognizing unusual behavior or configurations and establishing typical fraudulent patterns.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*JOm4_4sXLEcbytFq" /></figure><h3>Challenges to detect fraud in Digital Trust</h3><p>Several challenges related to the data and other details exist when faced with the task of developing a fraud detection system in Digital Trust.</p><p>First and foremost, minimizing potential user friction is paramount. On the device side, information collection should not impact the user experience. Simultaneously, device resources such as CPU time, bandwidth, or battery usage should be minimally affected. On the detection side, non-fraudulent users should operate without impediment, therefore keeping false positives to a minimum, while detecting as many fraudulent cases as possible.</p><p>Another significant challenge is the volume and diversity of information. As explored before, data sources encompass static user information (e.g., the current device), dynamic information (e.g., network connectivity or available device battery), biometric data (e.g., keystrokes, mouse movements, or mobile gestures), and behavioral data (e.g., time spent on each view and the sequence of user actions).</p><p>This heterogeneous nature of the data, coupled with varying data scales (for example, a user may have a single device but generate thousands of mouse events), creates a complex scenario. This is where data feature engineering assumes a pivotal role. The primary objectives are twofold: maximize detection capabilities while minimizing processing, networking, and user interference costs.</p><p>Another challenge is the requirement of continuous evaluation. When dealing with transactional fraud, the precise moment for making a prediction is clear: it must occur when the user initiates the payment, at which point the available information is leveraged to produce a prediction. However, Digital Trust is designed to protect both the user and the financial institution throughout the entirety of the user’s session. This necessitates the evaluation of the session at each stage of the user’s journey, striking a balance between alerting as early as possible to preempt potential malicious actions and the risk of alerting with incomplete session information.</p><p>Finally, there is the issue of class imbalance. Our detection system must deal with millions of instances in the legitimate class, as opposed to just hundreds or a few thousands of attacks. This places substantial pressure on the detection models: both during the inference phase and during the training period. To address this issue, our Data Scientists apply different advanced mitigation techniques.</p><h3><strong>Machine Learning for Digital Trust</strong></h3><h4>The holistic approach</h4><p>As we’ve discussed in previous sections, the identification of fraudulent and high-risk activities poses a formidable challenge. The volume of data, coupled with pronounced class imbalances, with varying time resolutions and data modalities, requires employing advanced techniques.</p><p>It’s clear that there is no one-size-fits-all solution to these complex issues. The strength of the Digital Trust solution lies in its holistic combination of diverse feature sets, combined to enhance detection efficacy. As an example, when detecting Remote Access Trojans, the system combines behavioral biometric data alongside the ability to identify the installation of malicious software. The combination of these features ensures a comprehensive security framework that adapts to the specific detection needs.</p><p>Traditionally, the solutions in this space are focused only on very basic and simple rules for each of the detection signals. The problem of this approach, even if it initially offers simple explainability, is its limited capacity. The solution needs to be deployed on different geographies with their own particularities, it has to cover multiple use cases, and it has to deal with the evolution of the fraud. All of these issues create the need for more complex rules. At that point, any benefit of the rule system starts to crumble: rules become too hard to maintain, too complicated to understand, and even its computational performance may be affected.</p><p>In our case, Digital Trust leverages a wide spectrum of techniques: from expert defined rules, basic yet effective heuristics, to state-of-the-art ML models. The rules encapsulate the expert knowledge of fraud detection; heuristics allow simple and agile solutions for simple cases; and ML models are the key for the detection of more complex and data-intensive scenarios. This multifaceted approach enables us to address the complexity of the threat landscape.</p><p>Upon the completion of individual detections, this information has to be indicated in the risk associated with the session. To facilitate this, the Digital Trust system offers the capability to formulate a customized risk strategy that aligns with the specific needs and preferences of each institution. Banks and financial institutions can establish their own ruleset, building upon the default rule set provided by Digital Trust experts. This dynamic adaptability ensures that the solution remains agile in addressing evolving threats and regulatory requirements while maintaining a strong foundation of security.</p><h4>New Fraud Model</h4><p>In advancing our custom risk strategy, we at Feedzai have successfully developed and seamlessly integrated a new Fraud ML Model for Digital Trust. This latest model utilizes the comprehensive and heterogeneous array of signals and data from Digital Trust, combined with several advanced techniques developed over the years at Feedzai, to detect and alert potential fraudulent sessions.</p><p>The model is able to use combinations of the multiple signals available, which can be more informative than looking at each signal separately. For example, we can process the IP information to detect the origin of the network requests, understanding the spatial location of that user; this information can be combined with other risk indicators, such as Account Take Over (ATO) indicator; in this case, a connection from an unusual country and an ATO indicator is potentially riskier than each of them separately.</p><p>Besides the different types of signals leveraged by the model, we use advanced sampling techniques to deal with the high volume and extreme class imbalance, as well as lightweight and efficient machine learning algorithms to ensure both the high detection performance and the low latencies required to make multiple predictions for tens of millions of Digital Trust sessions per day. Our model continuously evaluates the current users’ sessions and, once it detects a potential fraudulent session, it promptly reports this information.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6VAhUO8iJNZ8VhGs" /></figure><p>The reporting of this detection is done through a risk indicator called “Potential Fraud Risk”. This indicator may be combined with other custom detections specified by the financial institutions to not only improve the detection efficiency but also to tailor it to their unique business scenarios. The new Fraud Model fuels the Potential Fraud Risk indicator that integrates seamlessly with other existing detection systems.</p><p>This new model is another example of Feedzai’s all-encompassing and holistic ML methodology that effectively utilizes heterogeneous Digital Trust data and complements other existing risk indicators. Since this model was deployed, we have seen a significant uplift in fraud detection performance across a diverse set of financial institutions.</p><h3><strong>Deploying the model</strong></h3><p>Creating and validating the new Fraud Model is only the first part of Feedzai’s Research work. Deploying it and ensuring that it satisfies the strict latency requirements is, in itself, an often underlooked task. This section describes the major challenges of serving the new Fraud Model and our solutions.</p><p>As previously mentioned, the Fraud Model must continuously evaluate every session for each user of our Digital Trust customers. This results in an enormous volume of evaluations. Unlike typical transactional fraud detection models, which assess transactions individually, Feedzai Digital Trust continuously evaluates the potential risk of every session, significantly increasing the number of requests to our models. The new Fraud Model reviews nearly ten thousand requests per second.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*75T5nWmatDGEph8h" /></figure><p>Furthermore, the inference process must be swift: if a session appears suspicious, the fraud indicator must be communicated to the bank immediately. This requirement places significant demand on our system to minimize latency and overhead.</p><p>To meet these demands for high throughput and low latency, we developed a completely new ML Infrastructure that embraces cloud technology and is capable of managing this load with ease. Our new system is designed to scale horizontally and to serve the model and adjust resource consumption as needed. This new infrastructure enabled the deployment of the new Fraud Model, ensuring the high throughput and low latency required for continuous fraud risk assessment.</p><p>Our new ML Infrastructure leverages Kubernetes to orchestrate our services more effectively, ensuring that the Fraud Model is always available, even under varying loads. Kubernetes facilitates seamless scaling, allowing us to dynamically adjust the number of instances based on real-time demand, thus optimizing resource utilization. Moreover, its self-healing features automatically restart failed containers, replace them, and reschedule them to new hosts if needed, ensuring high availability and reliability. This integration not only streamlines deployment processes but also significantly enhances the performance and resilience of our fraud detection services, enabling us to maintain low latency and high throughput, critical for real-time fraud risk assessment.</p><p>Alongside Kubernetes, our new ML Infrastructure enables on-demand, independent deployment of models. This modular strategy greatly enhances our system’s adaptability and speeds up the development cycle. When a new model iteration is ready, it can be deployed without affecting the operation of existing models, minimizing potential disruptions.</p><p>From the instrumentation point of view, for real-time monitoring and logging, ML Infrastructure integrates with standard open-source tools such as Prometheus for metrics collection and Grafana for data visualization, alongside centralized logging solutions. These tools provide us with granular insights into system performance and behavior, enabling proactive issue resolution and optimization of the experience.</p><p>In addition to these monitoring and visualization tools, our infrastructure includes a comprehensive Event Collection system designed to capture and store all interactions within our platform. This system logs every request and response, encompassing both the incoming features and the resulting inferences. The stored data becomes a valuable asset for ongoing model monitoring, offering a view of model performance in real time.</p><p>Furthermore, this repository of interaction data is key for future model retraining efforts. By analyzing historical interactions, we can identify patterns, anomalies, and areas for improvement, ensuring that our models evolve in line with changing patterns and emerging threats. This capability not only enhances model accuracy over time but also contributes to a continuous cycle of improvement and adaptation, keeping our systems at the forefront of fraud detection technology.</p><p>Together, these technologies form a robust infrastructure that supports our Fraud Model’s high-performance requirements, ensuring that our Digital Trust solution is both efficient and reliable.</p><h3><strong>In summary</strong></h3><p>In this blog post, we have explored the intricate landscape of Digital Trust and its role in ensuring secure online financial transactions and how Feedzai’s new Fraud Model further enhances its fraud detection capabilities.</p><p>Our solution stands out for its holistic and adaptable approach. It combines various and diverse data sources, including biometric and behavioral data, device and connection information, and user interactions, with advanced machine learning techniques. This multifaceted strategy not only aids in the robust detection but also enhances the overall security of the digital banking experience. Moreover, Digital Trust’s capability to create customized risk strategies allows financial institutions to tailor their security measures, ensuring a dynamic and responsive defense against evolving threats.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bb0da913d95a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/feedzaitech/building-trust-in-a-digital-world-the-role-of-machine-learning-in-behavioral-biometrics-bb0da913d95a">Building Trust in a Digital World: The Role of Machine Learning in Behavioral Biometrics</a> was originally published in <a href="https://medium.com/feedzaitech">Feedzai Techblog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>