= CAP 曲线及 AR 值
CAP 曲线，也称作为累积准确曲线，AR 值，也称作为准确性比率

== CAP 曲线及 AR 值解读
image::chapter-sc/cap/cap.png[]
		
=== CAP 曲线坐标轴

. X轴（客户个数百分比）: 评分小于等于某个分数的客户个数占整个客户个数的百分比
. Y轴（违约个数百分比）: 评分小于等于某个分数的实事违约客户个数占整个实事违约客户个数百分比
. Z轴（截断点）: 按评分进行分段

在实际绘制 CAP 曲线时，只包含 X 和 Y 轴，没有 Z 轴，这里为了便于理解，引入 Z 轴。那么 ROC 曲线是如何绘制的呢？

同样需要引入截断点，截断点是将模型预测的得分进行等分，评级得分是一个整数，其取值范围可以是从 0 到 100，或者其他。假如我们将从 0 到 100 的得分等分为 100 个段，那么组成这些截断点的数列为（共101个）: 1,2,3,...,99,100。这些截断点就构成了 Z 轴。

[%autowidth]
|===
|截断点序号 | 截断点得分（小于等于）
| 1       |	0
| 2       |	1
| 3       |	2
| ...     |		 
| 100     |	99
| 101     |	100
|===

那么这些截断点在 CAP 曲线上所代表的含义是什么呢？在 CAP 曲线的 Z 轴（虚拟的）代表客户评分小于等于截断点的值。
			
. 截断点 0: 评分小于等于 0 分
. 截断点 1: 评分小于等于 1 分
. 截断点 100: 评分小于等于 100 分
. 依次类推

=== CAP 曲线绘制
在有了上述截断点的概念的情况下，我们就可以分别计算出在某个截断点（小于等于某个得分）的 X 轴和 Y 轴的坐标值，
这样就能根据截断点的个数绘制出多个坐标点，将这些坐标点通过平滑曲线连接，
便绘制出 CAP 曲线。

=== 随机模型（完全没有预测能力的模型）的表现
==== 完美模型（理想模型）的表现
==== 现实中较好模型的表现
现实中较好的模型表现为介于完美模型和随机模型之间的曲线，曲线越接近于完美曲线越好。

==== AR 值
直观的讲，AR 值就是下面面 CAP 曲线中两块面积的比值。

image::chapter-sc/cap/cap2.png[]

image::chapter-sc/cap/ar.png[]

其中 aR 为褐色部分的面积，aP 为褐色部分和黄色部分面积之和

. 完美模型 AR 值: 1
. 随机模型 AR 值: 0
. 现实中较好模型 AR 值: 介于完美模型和随机模型 AR 值之间，越接近 1 越好。

== CAP 曲线及 AR 值系统实现
[#CAP_KPI]
=== CAP 指标表
对每个需要验证的模型根据截断点分别对 <<MV_GENERAL_SAMPLE>> 进行样本个数统计。

|===
|模型标识	| 模型名称 | 截断点      | 评分小于等于截断点的客户个数 | 客户总数 | 评分小于等于截断点的事实违约客户个数 | 事实违约的总客户数 | 违约个数百分比(Y) | 客户个数百分比(X)
|       |         |评分小于等于  | TS                      | TT      | TDS                            | TDT             | TDS/TDT        | TS/TT
|M1     | 模型1    | 0          | 1                       | 100     | 1                              | 10              | 0.1            | 0.01
|M1     | 模型1    | 1          | 1                       | 100     | 1                              | 10              | 0.1            | 0.01
|...	| ...     | ...         | ...                    | ...      | ...                            | ...             | ...            | ...
|M1	    | 模型1    | 100        | 100                     | 100     | 10                             | 10              | 1               | 1
|===

上表中每一行代表某个模型的一个截断点下的违约客户个数百分比和客户个数百分比。其字段意义说明如下：

|===
| 字段中文名称	                     | 字段名称	                | 字段类型	       | 字段约束	    | 备注

| 模型标识	                     | FD_MODEL_ID              | varchar(32)	   | 不能为空	    | 
| 模型名称                         | FD_MODEL_NAME            | varchar(100)	   | 不能为空	    | 
| 平分率截断点                      | FD_SCORE_CUT_OFF_POINT  | 整数	           | 不能为空	    | 对平分进行平分,代表在小于等于截断点时的数据
| 评分小于等于截断点的客户个数        | FD_TS                    | 整数	           | 不能为空	    |
| 客户总数                         | FD_TT                    | 整数	           | 不能为空	    | 
| 评分小于等于截断点的事实违约客户个数	  | FD_TDS                  | 整数	           | 不能为空	    | 
| 事实违约的总客户数                 | FD_TDT                  | 整数	           | 不能为空	    | 
| 违约个数百分比(Y)                 | FD_Y                    | 小数（精度 6）	   | 不能为空	    | FD_Y=FD_TDS/FD_TDT
| 客户个数百分比(X)                 | FD_X                    | 小数（精度 6）	   | 不能为空	    | FD_X=FD_TS/FD_TT
|===
			
=== CAP 曲线绘制
通过 <<CAP_KPI>> 中的 X 和 Y 值 绘制并连接各个点

=== AR 值计算
在具体的实现时，可以采用分割成多个梯形进行面积相加。

计算公式：

image::chapter-sc/cap/ar2.png[]
