{"id":6200,"date":"2026-04-09T12:31:14","date_gmt":"2026-04-09T17:31:14","guid":{"rendered":"https:\/\/ykim.synology.me\/wordpress\/?p=6200"},"modified":"2026-04-10T01:58:41","modified_gmt":"2026-04-10T06:58:41","slug":"center-alignment-index-cai-a-novel-metric-for-evaluating-data-center-agreement-on-the-11-line","status":"publish","type":"post","link":"https:\/\/ykim.synology.me\/wordpress\/center-alignment-index-cai-a-novel-metric-for-evaluating-data-center-agreement-on-the-11-line-6200\/","title":{"rendered":"Center Alignment Index (CAI): A Novel Metric for Evaluating Data Center Agreement on the 1:1 Line"},"content":{"rendered":"<style>.kadence-column6200_916fb4-2e > .kt-inside-inner-col{display:flex;}.kadence-column6200_916fb4-2e{max-width:900px;margin-left:auto;margin-right:auto;}.wp-block-kadence-column.kb-section-dir-horizontal:not(.kb-section-md-dir-vertical)>.kt-inside-inner-col>.kadence-column6200_916fb4-2e{-webkit-flex:0 1 900px;flex:0 1 900px;max-width:unset;margin-left:unset;margin-right:unset;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col,.kadence-column6200_916fb4-2e > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6200_916fb4-2e > .kt-inside-inner-col{flex-direction:column;align-items:flex-start;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col > .kb-image-is-ratio-size{align-self:stretch;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col > .wp-block-kadence-advancedgallery{align-self:stretch;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6200_916fb4-2e{text-align:left;}.kadence-column6200_916fb4-2e{position:relative;}@media all and (min-width: 1025px){.wp-block-kadence-column.kb-section-dir-horizontal>.kt-inside-inner-col>.kadence-column6200_916fb4-2e{-webkit-flex:0 1 900px;flex:0 1 900px;max-width:unset;margin-left:unset;margin-right:unset;}}@media all and (max-width: 1024px){.kadence-column6200_916fb4-2e > .kt-inside-inner-col{flex-direction:column;justify-content:center;align-items:flex-start;}}@media all and (max-width: 767px){.wp-block-kadence-column.kb-section-sm-dir-vertical:not(.kb-section-sm-dir-horizontal):not(.kb-section-sm-dir-specificity)>.kt-inside-inner-col>.kadence-column6200_916fb4-2e{max-width:900px;-webkit-flex:1;flex:1;margin-left:auto;margin-right:auto;}.kadence-column6200_916fb4-2e > .kt-inside-inner-col{flex-direction:column;justify-content:center;align-items:flex-start;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6200_916fb4-2e\"><div class=\"kt-inside-inner-col\"><p>\r\n    <style>\r\n    .k-page-nav { margin-bottom:20px; padding:10px 0; }\r\n    .k-page-nav a, .k-page-nav span {\r\n        display:block; padding:6px 10px; margin-bottom:6px;\r\n        background:#eee; border-radius:4px; text-decoration:none;\r\n        color:#333; font-weight:500;\r\n    }\r\n    .k-page-nav span { background:#333; color:#fff; }\r\n    <\/style>\r\n\r\n    <div class=\"k-page-nav\">\r\n                                    <span>Introduction to Center Alignment Index (CAI) as a Regression Metric \u2014 Page 1<\/span>\r\n                                                <a href=\"https:\/\/ykim.synology.me\/wordpress\/center-alignment-index-cai-a-novel-metric-for-evaluating-data-center-agreement-on-the-11-line-6200\/2\/\" class=\"post-page-numbers\">                    The Lorentzian Shape of CAI: Sensitivity Analysis and the Tolerance Parameter k \u2014 Page 2                <\/a>\r\n                        <\/div>\r\n\r\n    <\/p>\n<\/div><\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction to Center Alignment Index (CAI) as a Regression Metric<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. Mathematical Definition and Components<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-theme-palette-12-color\"><strong>The Center Alignment Index (CAI) is a bounded metric designed to quantify how closely the central tendency of paired observations aligns with the 1:1 identity line (y = x).<\/strong><\/mark> In many scientific and engineering domains, comparing two measurement systems or model predictions against observed values requires assessing whether the data center (i.e., the bivariate mean) falls on the line of perfect agreement. CAI addresses this need by providing a single, unitless score ranging from 0 to 1.<\/p>\n\n\n<style>.kadence-column6200_dd3549-f6 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-md, 2rem);}.kadence-column6200_dd3549-f6 > .kt-inside-inner-col,.kadence-column6200_dd3549-f6 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6200_dd3549-f6 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6200_dd3549-f6 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6200_dd3549-f6 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6200_dd3549-f6 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6200_dd3549-f6{position:relative;}@media all and (max-width: 1024px){.kadence-column6200_dd3549-f6 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6200_dd3549-f6 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6200_dd3549-f6\"><div class=\"kt-inside-inner-col\">\n<h4 class=\"wp-block-heading\">1.1 The Formula<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Given paired observations $(x_i, y_i)$ for $i = 1, 2, \\ldots, n$, define the following sample statistics:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\mu_x = \\frac{1}{n}\\sum_{i=1}^{n} x_i, \\quad \\mu_y = \\frac{1}{n}\\sum_{i=1}^{n} y_i$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\sigma_x = \\sqrt{\\frac{1}{n-1}\\sum_{i=1}^{n}(x_i &#8211; \\mu_x)^2}, \\quad \\sigma_y = \\sqrt{\\frac{1}{n-1}\\sum_{i=1}^{n}(y_i &#8211; \\mu_y)^2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>location shift parameter<\/strong> is defined as:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$u = \\frac{\\mu_x &#8211; \\mu_y}{\\sqrt{\\sigma_x \\cdot \\sigma_y}}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Center Alignment Index<\/strong> is then:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$CAI = \\frac{1}{1 + u^2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The CAI curve can be made steeper or more gradual by introducing the tolerance parameter $k$:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$CAI(u;\\,k) = \\frac{1}{1 + u^2 \/ k}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The parameter $k$ controls the half-power point: $CAI(u;\\,k) = 0.5$ occurs at $u = \\sqrt{k}$. A larger $k$ makes the metric more tolerant of bias; a smaller $k$ makes it stricter.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1.2 Decomposition<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The CAI formula can be decomposed into three interpretable components:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Numerator (Bias Term):<\/strong> The raw bias $\\mu_x &#8211; \\mu_y$ captures the absolute difference between the means of the two variables. When $\\mu_x = \\mu_y$, the<br>data center lies exactly on the 1:1 line, and the numerator of $u$ becomes zero.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Denominator (Scale Normalizer):<\/strong> The geometric mean standard deviation $\\sqrt{\\sigma_x \\cdot \\sigma_y}$ serves as a natural scaling factor. This normalization ensures that the location shift $u$ is dimensionless, making CAI invariant to the measurement unit. Whether the data are in millimeters or kilometers, the CAI value remains the same.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Transformation Function:<\/strong> The mapping $f(u) = 1\/(1 + u^2)$ is a Lorentzian (Cauchy kernel) function. This smooth, monotonically decreasing function of $|u|$ ensures that CAI transitions continuously from 1 (perfect alignment) toward 0 (complete misalignment) without any threshold discontinuities.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1.3 Physical Meaning<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Geometrically, the data center $(\\mu_x, \\mu_y)$ is a single point in the scatter plot. The 1:1 line is defined by $y = x$. The perpendicular distance from the data center to this line is:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$d = \\frac{|\\mu_y &#8211; \\mu_x|}{\\sqrt{2}}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAI translates this distance into a normalized agreement score. A CAI of 1.0 indicates that the bivariate mean sits exactly on the 1:1 line, implying zero systematic bias between the two variables. As the data center drifts away from the 1:1 line, CAI decreases toward zero. The rate of decrease depends on the intrinsic variability of the data: for highly variable data (large $\\sigma_x$ and $\\sigma_y$), the same absolute bias produces a smaller $u$ and thus a higher CAI, reflecting that the bias is relatively less important compared to the natural spread.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1.4 Relation to CCC<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Lin&#8217;s Concordance Correlation Coefficient (CCC) is widely used to evaluate agreement between two continuous variables. CCC is defined as:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\rho_c = \\frac{2\\sigma_{xy}}{\\sigma_x^2 + \\sigma_y^2 + (\\mu_x &#8211; \\mu_y)^2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lin demonstrated that CCC can be decomposed multiplicatively:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$\\rho_c = r \\times C_b$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">where $r$ is the Pearson correlation coefficient (precision) and $C_b$ is the bias correction factor (accuracy):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$C_b = \\frac{2}{v + \\frac{1}{v} + u^2}, \\quad v = \\frac{\\sigma_x}{\\sigma_y}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The bias correction factor $C_b$ contains two components: the scale shift $v$ (ratio of standard deviations) and the location shift $u$ (normalized mean difference). <strong>CAI isolates the location shift component<\/strong> by fixing $v = 1$ (assuming equal scales), yielding:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$C_b \\big|_{v=1} = \\frac{2}{2 + u^2} = \\frac{1}{1 + u^2\/2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAI adopts a slightly more aggressive penalization by using $1\/(1 + u^2)$ rather than $1\/(1 + u^2\/2)$. This design choice makes CAI more sensitive to location shifts while completely decoupling it from scale differences. In practice, CAI serves as a <strong>pure location bias diagnostic<\/strong> that complements CCC by isolating whether the disagreement is due to a shifted center or due to other factors such as differential scaling or imprecision.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">2. Interpretation of CAI Values<\/h3>\n\n\n<style>.kadence-column6200_4356f1-05 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-md, 2rem);}.kadence-column6200_4356f1-05 > .kt-inside-inner-col,.kadence-column6200_4356f1-05 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6200_4356f1-05 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6200_4356f1-05 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6200_4356f1-05 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6200_4356f1-05 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6200_4356f1-05{position:relative;}@media all and (max-width: 1024px){.kadence-column6200_4356f1-05 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6200_4356f1-05 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6200_4356f1-05\"><div class=\"kt-inside-inner-col\">\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--40)\" class=\"wp-block-table\"><table><thead><tr><th>CAI Range<\/th><th>Interpretation<\/th><th>Typical Scenario<\/th><\/tr><\/thead><tbody><tr><td>0.95 to 1.00<\/td><td>Excellent center alignment<\/td><td>Near-zero systematic bias<\/td><\/tr><tr><td>0.80 to 0.95<\/td><td>Good alignment<\/td><td>Minor calibration offset present<\/td><\/tr><tr><td>0.50 to 0.80<\/td><td>Moderate misalignment<\/td><td>Noticeable bias requiring correction<\/td><\/tr><tr><td>0.20 to 0.50<\/td><td>Poor alignment<\/td><td>Substantial systematic bias<\/td><\/tr><tr><td>0.00 to 0.20<\/td><td>Very poor alignment<\/td><td>Fundamental disagreement between variables<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A practical guideline: when CAI drops below 0.80, it suggests that the systematic bias between two measurement systems or between predictions and<br>observations is large enough relative to the data variability that a simple additive correction (bias adjustment) should be considered before further analysis or model deployment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">It is important to note that CAI evaluates only the <strong>location<\/strong> of the data center. A high CAI does not guarantee that individual data points agree well; it only confirms that there is no systematic shift. Conversely, a low CAI pinpoints the presence of a mean-level discrepancy, which is often the first and most correctable source of disagreement.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">3. Applications in AI\/ML<\/h3>\n\n\n<style>.kadence-column6200_29b21c-1a > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-md, 2rem);}.kadence-column6200_29b21c-1a > .kt-inside-inner-col,.kadence-column6200_29b21c-1a > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6200_29b21c-1a > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6200_29b21c-1a > .kt-inside-inner-col{flex-direction:column;}.kadence-column6200_29b21c-1a > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6200_29b21c-1a > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6200_29b21c-1a{position:relative;}@media all and (max-width: 1024px){.kadence-column6200_29b21c-1a > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6200_29b21c-1a > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6200_29b21c-1a\"><div class=\"kt-inside-inner-col\">\n<ul class=\"wp-block-list\">\n<li><strong>Model Validation:<\/strong> In machine learning, CAI can serve as a diagnostic tool during model evaluation. When comparing predicted values against ground truth, a CAI close to 1.0 confirms that the model does not exhibit systematic over- or under-prediction on average. This is especially useful for regression tasks in domains such as remote sensing, climate modeling, and medical imaging where systematic bias has practical consequences.<\/li>\n\n\n\n<li><strong>Transfer Learning Diagnostics:<\/strong> When a pre-trained model is fine-tuned on a new domain, CAI can detect domain shift effects at the prediction level. If the CAI between source-domain predictions and target-domain predictions drops significantly, it indicates that the model&#8217;s output distribution has shifted systematically, warranting recalibration.<\/li>\n\n\n\n<li><strong>Ensemble Model Assessment:<\/strong> For ensemble methods, CAI can evaluate whether individual ensemble members share consistent central tendencies. High CAI across all member pairs suggests that the ensemble components agree on the overall prediction level, even if they differ in variance or correlation structure.<\/li>\n\n\n\n<li><strong>Sensor Fusion and Multi-Modal Learning:<\/strong> In multi-sensor systems or multi-modal AI pipelines, CAI provides a quick check for inter-sensor or inter-modality bias. Before fusing data streams, verifying that CAI is near 1.0 ensures that no systematic offset contaminates the fused output.<\/li>\n\n\n\n<li><strong>Fairness Auditing:<\/strong> CAI can be applied to evaluate prediction bias across demographic subgroups. By computing CAI between predictions for different groups, practitioners can quantify whether the model&#8217;s central prediction tendency shifts systematically across populations.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">4. Comparison with Other Mean-Based Regression Metrics<\/h3>\n\n\n<style>.kadence-column6200_94e291-a5 > .kt-inside-inner-col{padding-right:var(--global-kb-spacing-xl, 4rem);padding-left:var(--global-kb-spacing-md, 2rem);}.kadence-column6200_94e291-a5 > .kt-inside-inner-col,.kadence-column6200_94e291-a5 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column6200_94e291-a5 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column6200_94e291-a5 > .kt-inside-inner-col{flex-direction:column;}.kadence-column6200_94e291-a5 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column6200_94e291-a5 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column6200_94e291-a5{position:relative;}@media all and (max-width: 1024px){.kadence-column6200_94e291-a5 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column6200_94e291-a5 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column6200_94e291-a5\"><div class=\"kt-inside-inner-col\">\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--40)\" class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Formula<\/th><th>Range<\/th><th class=\"has-text-align-center\" data-align=\"center\">Captures Location Bias<\/th><th class=\"has-text-align-center\" data-align=\"center\">Captures Scale Bias<\/th><th class=\"has-text-align-center\" data-align=\"center\">Unit-Free<\/th><\/tr><\/thead><tbody><tr><td>CAI<\/td><td>$1\/(1 + u^2 \/ k)$<\/td><td>(0, 1]<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td>MBE<\/td><td>$\\frac{1}{n}\\sum(y_i &#8211; x_i)$<\/td><td>(-inf, inf)<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><\/tr><tr><td>NMBE<\/td><td>$MBE \/ \\bar{x}$<\/td><td>(-inf, inf)<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td>CCC ($\\rho_c$)<\/td><td>$2\\sigma_{xy}\/[\\sigma_x^2+\\sigma_y^2+(\\Delta\\mu)^2]$<\/td><td>[-1, 1]<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td>$C_b$ (Lin)<\/td><td>$2\/[v + 1\/v + u^2]$<\/td><td>(0, 1]<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td>$R^2$<\/td><td>$1 &#8211; SS_{res}\/SS_{tot}$<\/td><td>(-inf, 1]<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CAI vs. MBE (Mean Bias Error):<\/strong> MBE reports the raw mean difference in original units. While informative, MBE is not bounded and its magnitude is difficult to interpret without context. CAI normalizes the bias by the data variability, producing a bounded score that facilitates cross-study comparisons.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CAI vs. CCC:<\/strong> CCC conflates precision (correlation), scale bias, and location bias into one number. CAI intentionally separates the location component, enabling targeted diagnostics. When CCC is low, computing CAI helps determine whether the problem is a shifted center or some other factor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CAI vs. $R^2$:<\/strong> The coefficient of determination $R^2$ is insensitive to systematic bias entirely. A model with perfect correlation but a large additive offset can still achieve $R^2 = 1.0$ while having CAI close to 0. This makes CAI a valuable complementary metric to $R^2$ in regression evaluation.<\/p>\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">5. Python Code Examples<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">CAI Function<\/h4>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:1rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#24292e;--cbp-line-number-width:calc(2 * 0.6 * 1rem);line-height:1.625rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span role=\"button\" tabindex=\"0\" style=\"color:#24292e;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>import numpy as np\n\ndef cai(x, y, k: float = 1) -> tuple&#091;float, dict&#093;:\n    x, y = np.asarray(x, float), np.asarray(y, float)\n    mu_x, mu_y = x.mean(), y.mean()\n    sigma_x, sigma_y = x.std(ddof=1), y.std(ddof=1)\n\n    bias = mu_x - mu_y\n    scale = np.sqrt(sigma_x * sigma_y)\n\n    if scale == 0:\n        return (1.0, {}) if bias == 0 else (0.0, {})\n\n    u = bias \/ scale\n    cai = 1.0 \/ (1.0 + u ** 2 \/ k)\n\n    details = {\n        \"mean_x\": mu_x, \"mean_y\": mu_y,\n        \"std_x\": sigma_x, \"std_y\": sigma_y,\n        \"bias\": bias, \"u\": u, \"CAI\": cai,\n    }\n    return cai, details<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-light\" style=\"background-color: #fff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D73A49\">import<\/span><span style=\"color: #24292E\"> numpy <\/span><span style=\"color: #D73A49\">as<\/span><span style=\"color: #24292E\"> np<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D73A49\">def<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #6F42C1\">cai<\/span><span style=\"color: #24292E\">(x, y, k: <\/span><span style=\"color: #005CC5\">float<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">) -&gt; tuple&#091;<\/span><span style=\"color: #005CC5\">float<\/span><span style=\"color: #24292E\">, <\/span><span style=\"color: #005CC5\">dict<\/span><span style=\"color: #24292E\">&#093;:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    x, y <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.asarray(x, <\/span><span style=\"color: #005CC5\">float<\/span><span style=\"color: #24292E\">), np.asarray(y, <\/span><span style=\"color: #005CC5\">float<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    mu_x, mu_y <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> x.mean(), y.mean()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    sigma_x, sigma_y <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> x.std(<\/span><span style=\"color: #E36209\">ddof<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">), y.std(<\/span><span style=\"color: #E36209\">ddof<\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #005CC5\">1<\/span><span style=\"color: #24292E\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    bias <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> mu_x <\/span><span style=\"color: #D73A49\">-<\/span><span style=\"color: #24292E\"> mu_y<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    scale <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> np.sqrt(sigma_x <\/span><span style=\"color: #D73A49\">*<\/span><span style=\"color: #24292E\"> sigma_y)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> scale <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">0<\/span><span style=\"color: #24292E\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> (<\/span><span style=\"color: #005CC5\">1.0<\/span><span style=\"color: #24292E\">, {}) <\/span><span style=\"color: #D73A49\">if<\/span><span style=\"color: #24292E\"> bias <\/span><span style=\"color: #D73A49\">==<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">0<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">else<\/span><span style=\"color: #24292E\"> (<\/span><span style=\"color: #005CC5\">0.0<\/span><span style=\"color: #24292E\">, {})<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    u <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> bias <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> scale<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    cai <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">1.0<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> (<\/span><span style=\"color: #005CC5\">1.0<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">+<\/span><span style=\"color: #24292E\"> u <\/span><span style=\"color: #D73A49\">**<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #005CC5\">2<\/span><span style=\"color: #24292E\"> <\/span><span style=\"color: #D73A49\">\/<\/span><span style=\"color: #24292E\"> k)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    details <\/span><span style=\"color: #D73A49\">=<\/span><span style=\"color: #24292E\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;mean_x&quot;<\/span><span style=\"color: #24292E\">: mu_x, <\/span><span style=\"color: #032F62\">&quot;mean_y&quot;<\/span><span style=\"color: #24292E\">: mu_y,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;std_x&quot;<\/span><span style=\"color: #24292E\">: sigma_x, <\/span><span style=\"color: #032F62\">&quot;std_y&quot;<\/span><span style=\"color: #24292E\">: sigma_y,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">        <\/span><span style=\"color: #032F62\">&quot;bias&quot;<\/span><span style=\"color: #24292E\">: bias, <\/span><span style=\"color: #032F62\">&quot;u&quot;<\/span><span style=\"color: #24292E\">: u, <\/span><span style=\"color: #032F62\">&quot;CAI&quot;<\/span><span style=\"color: #24292E\">: cai,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    }<\/span><\/span>\n<span class=\"line\"><span style=\"color: #24292E\">    <\/span><span style=\"color: #D73A49\">return<\/span><span style=\"color: #24292E\"> cai, details<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">CAI Across Different Sample Distributions<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\"><a href=\"https:\/\/github.com\/ykim2718\/AIML\/tree\/main\/CAI%20(Center%20Alignment%20Index)\" target=\"_blank\" rel=\"noreferrer noopener\">GitHub<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1167\" height=\"2262\" src=\"https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc.png\" alt=\"\" class=\"wp-image-6201\" style=\"width:900px\" srcset=\"https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc.png 1167w, https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc-155x300.png 155w, https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc-528x1024.png 528w, https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc-768x1489.png 768w, https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc-792x1536.png 792w, https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc-1057x2048.png 1057w\" sizes=\"auto, (max-width: 1167px) 100vw, 1167px\" \/><\/figure>\n\n\n\n<!--nextpage-->\n\n\n\n<h2 class=\"wp-block-heading\">The Lorentzian Shape of CAI: Sensitivity Analysis and the Tolerance Parameter k<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Why CAI Is a Lorentzian Function<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The functional form of CAI, $1\/(1 + u^2)$, is identical to the normalized Lorentzian (Cauchy kernel) peaked at the origin. This is not an arbitrary design choice but an algebraic consequence of CCC&#8217;s structure. The CCC denominator $\\sigma_x^2 + \\sigma_y^2 + (\\mu_x &#8211; \\mu_y)^2$ is quadratic in the mean difference. When we isolate the location component by fixing the scale ratio $v = 1$, the bias correction factor becomes:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$C_b\\big|_{v=1} = \\frac{2}{2 + u^2} = \\frac{1}{1 + u^2\/2}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">CAI adopts a sharper variant $1\/(1 + u^2)$, but the Lorentzian shape itself is inherited directly from the quadratic denominator of CCC. The reciprocal of any positive-definite quadratic in $u$ necessarily produces a Lorentzian profile. In other words, the Lorentzian form is not chosen for CAI; it is derived from CCC.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This functional form carries several practical advantages. First, the peak value is exactly 1 at $u = 0$ and the function decays monotonically toward 0 as $|u| \\to \\infty$, matching the semantic requirement of an agreement index. Second, compared to a Gaussian kernel $e^{-u^2}$, the Lorentzian exhibits heavier tails, maintaining discriminative power over a wider range of bias values:<\/p>\n\n\n\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--50)\" class=\"wp-block-table\"><table><thead><tr><th>$u$<\/th><th class=\"has-text-align-center\" data-align=\"center\">Lorentzian $1\/(1+u^2)$<\/th><th class=\"has-text-align-center\" data-align=\"center\">Gaussian $e^{-u^2}$<\/th><\/tr><\/thead><tbody><tr><td>0.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.000<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.000<\/td><\/tr><tr><td>1.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.500<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.368<\/td><\/tr><tr><td>2.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.200<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.018<\/td><\/tr><tr><td>3.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.100<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.0001<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">At $u = 2$, the Gaussian has essentially collapsed to zero (0.018), whereas the Lorentzian still returns 0.200, providing meaningful gradation. Third, the closed-form inverse $u = \\sqrt{1\/c &#8211; 1}$ for a given CAI value $c$ simplifies error propagation and analytical interpretation.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sensitivity Concern: Is CAI Too Aggressive?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Despite the heavier tails relative to the Gaussian, a closer inspection of CAI&#8217;s behavior reveals a potential problem. Since $u \\approx \\Delta\\mu \/ \\sigma$ when $\\sigma_x \\approx \\sigma_y$, the location shift $u$ can be interpreted as the bias measured in units of the geometric standard deviation. The resulting CAI values drop steeply:<\/p>\n\n\n\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--50)\" class=\"wp-block-table\"><table><thead><tr><th>Bias Magnitude<\/th><th>$u$<\/th><th class=\"has-text-align-center\" data-align=\"center\">CAI<\/th><th>Practical Judgment<\/th><\/tr><\/thead><tbody><tr><td>$0.5\\sigma$<\/td><td>0.5<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.800<\/td><td>Acceptable in most domains<\/td><\/tr><tr><td>$1.0\\sigma$<\/td><td>1.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.500<\/td><td>Half-power \u2014 already harsh<\/td><\/tr><tr><td>$1.5\\sigma$<\/td><td>1.5<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.308<\/td><td>Flagged as poor<\/td><\/tr><tr><td>$2.0\\sigma$<\/td><td>2.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.200<\/td><td>Nearly rejected<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A mean bias of $1\\sigma$ is not uncommon in remote sensing retrievals, climate model outputs, or cross-sensor comparisons. Yet CAI assigns it a score of 0.500, which reads as &#8220;50% disagreement.&#8221; This severity stems from the fact that CAI uses $u^2$ in the denominator, whereas the original $C_b$ uses $u^2\/2$, effectively doubling the penalization rate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Introducing the Tolerance Parameter k<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">To address this, we generalize CAI with a tunable tolerance parameter $k &gt; 0$:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$$CAI_k = \\frac{1}{1 + u^2 \/ k}$$<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The parameter $k$ controls the half-power point: CAI$_k = 0.5$ occurs at $u = \\sqrt{k}$. A larger $k$ makes the metric more tolerant of bias; a smaller $k$ makes it stricter. The following table illustrates the effect:<\/p>\n\n\n\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--50)\" class=\"wp-block-table\"><table><thead><tr><th>$u$<\/th><th class=\"has-text-align-center\" data-align=\"center\">$k=1$ (strict)<\/th><th class=\"has-text-align-center\" data-align=\"center\">$k=2$ (moderate)<\/th><th class=\"has-text-align-center\" data-align=\"center\">$k=4$ (tolerant)<\/th><\/tr><\/thead><tbody><tr><td>0.5<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.800<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.889<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.941<\/td><\/tr><tr><td>1.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.500<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.667<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.800<\/td><\/tr><tr><td>2.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.200<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.333<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.500<\/td><\/tr><tr><td>3.0<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.100<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.182<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.308<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Setting $k = 2$ exactly recovers the decay rate of Lin&#8217;s $C_b|_{v=1}$, providing a theoretically grounded default. Setting $k = 4$ shifts the half-power point to $2\\sigma$, which may be appropriate for domains where moderate systematic bias is operationally acceptable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The recommended notation is $CAI_k$ or $CAI(u;\\,k)$, with the following formal definition:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">$CAI_k = 1\/(1 + u^2\/k)$, where $k &gt; 0$ is the <strong>tolerance parameter<\/strong> governing sensitivity to location bias. The half-power point occurs at $u = \\sqrt{k}$.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Benchmarking: Tunable Parameters in AI\/ML Evaluation Metrics<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The introduction of a tolerance parameter into an evaluation metric is a well-established practice in AI\/ML. Several widely used metrics follow the same design principle: a core formula whose behavior is modulated by one or more parameters that encode domain-specific cost structures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>$F_\\beta$ Score<\/strong> is perhaps the most familiar example. The formula $F_\\beta = (1+\\beta^2) \\cdot PR \/ (\\beta^2 P + R)$ uses $\\beta^2$ to weight recall relative to precision. At $\\beta = 1$, precision and recall contribute equally ($F_1$). In medical screening, $\\beta = 2$ is standard because missing a true positive (false negative) is far more costly than a false alarm. In spam filtering, $\\beta = 0.5$ prioritizes precision because users strongly dislike legitimate emails being discarded.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Focal Loss<\/strong> addresses extreme class imbalance in object detection through $FL = -\\alpha_t (1 &#8211; p_t)^\\gamma \\log(p_t)$. The focusing parameter $\\gamma$ down-weights easy examples: at $\\gamma = 0$ the formula reduces to standard cross-entropy, while at $\\gamma = 2$ (the recommended default from the RetinaNet paper) a well-classified sample with $p_t = 0.9$ contributes only $(0.1)^2 = 1\\%$ of its original loss. This single parameter transforms the loss landscape from one dominated by easy negatives to one focused on hard examples.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tversky Index<\/strong> generalizes the Dice and Jaccard coefficients for image segmentation: $TI = TP \/ (TP + \\alpha \\cdot FP + \\beta \\cdot FN)$. Setting $\\alpha = \\beta = 0.5$ recovers Dice; $\\alpha = \\beta = 1$ recovers Jaccard. In medical image segmentation for small lesion detection, practitioners set $\\beta &gt; \\alpha$ to penalize false negatives more heavily, reducing the risk of missing pathological regions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Huber Loss<\/strong> smoothly interpolates between MSE and MAE via the threshold $\\delta$: quadratic for $|r| \\leq \\delta$, linear beyond. As $\\delta \\to \\infty$, Huber converges to MSE; as $\\delta \\to 0$, it converges to MAE. The parameter $\\delta$ encodes how much residual magnitude the practitioner considers &#8220;normal&#8221; versus &#8220;outlier.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Quantile Loss<\/strong> uses $\\tau \\in (0,1)$ to impose asymmetric penalties on over- and under-prediction. At $\\tau = 0.5$ it equals MAE; at $\\tau = 0.9$ it penalizes under-prediction nine times more than over-prediction. This is essential for constructing prediction intervals and risk-aware forecasts.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Common Design Pattern<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">These metrics share a structural template that CAI$_k$ follows precisely:<\/p>\n\n\n\n<figure style=\"padding-right:var(--wp--preset--spacing--80);padding-left:var(--wp--preset--spacing--50)\" class=\"wp-block-table\"><table><thead><tr><th>Metric<\/th><th>Parameter<\/th><th>Controls<\/th><th>Recovers At<\/th><\/tr><\/thead><tbody><tr><td>$CAI_k$<\/td><td>$k$<\/td><td>Bias tolerance<\/td><td>$C_b$<\/td><\/tr><tr><td>$F_\\beta$<\/td><td>$\\beta$<\/td><td>Recall vs. Precision weight<\/td><td>$F_1$ at $\\beta=1$<\/td><\/tr><tr><td>Focal Loss<\/td><td>$\\gamma$<\/td><td>Easy-sample suppression<\/td><td>CE at $\\gamma=0$<\/td><\/tr><tr><td>Tversky Index<\/td><td>$\\alpha,\\beta$<\/td><td>FP vs. FN cost<\/td><td>Dice at $\\alpha=\\beta=0.5$<\/td><\/tr><tr><td>Huber Loss<\/td><td>$\\delta$<\/td><td>Outlier tolerance<\/td><td>MSE at $\\delta\\to\\infty$<\/td><\/tr><tr><td>Quantile Loss<\/td><td>$\\tau$<\/td><td>Over\/under-prediction asymmetry<\/td><td>MAE at $\\tau=0.5$<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In every case, (1) a specific parameter value recovers a well-known existing metric, (2) the parameter encodes domain-specific cost or tolerance, and (3) the core mathematical structure remains unchanged across parameter values. CAI$_k$ inherits all three properties: $k=2$ recovers $C_b|_{v=1}$, $k$ reflects the domain&#8217;s acceptable bias level, and the Lorentzian form is preserved for all $k &gt; 0$.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<div style='text-align:center' class='yasr-auto-insert-overall'><\/div><div style='text-align:center' class='yasr-auto-insert-visitor'><\/div>","protected":false},"excerpt":{"rendered":"<p>Introduction to Center Alignment Index (CAI) as a Regression Metric 1. Mathematical Definition and Components The Center Alignment Index (CAI) is a bounded metric designed to quantify how closely the central tendency of paired observations aligns with the 1:1 identity line (y = x). In many scientific and engineering domains, comparing two measurement systems or&#8230;<\/p>\n","protected":false},"author":4,"featured_media":6201,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","yasr_overall_rating":0,"yasr_post_is_review":"","yasr_auto_insert_disabled":"","yasr_review_type":"","fifu_image_url":"","fifu_image_alt":"","iawp_total_views":0,"footnotes":""},"categories":[369,56],"tags":[],"class_list":["post-6200","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-evalutaion-metric-slug","category-data-science-slug"],"yasr_visitor_votes":{"stars_attributes":{"read_only":false,"span_bottom":false},"number_of_votes":0,"sum_votes":0},"jetpack_featured_media_url":"https:\/\/ykim.synology.me\/wordpress\/wp-content\/uploads\/2026\/04\/r2_cia_ccc.png","_links":{"self":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/6200","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/comments?post=6200"}],"version-history":[{"count":14,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/6200\/revisions"}],"predecessor-version":[{"id":6227,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/posts\/6200\/revisions\/6227"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/media\/6201"}],"wp:attachment":[{"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/media?parent=6200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/categories?post=6200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ykim.synology.me\/wordpress\/wp-json\/wp\/v2\/tags?post=6200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}