2

这是参考发表在建模信用卡盈利能力上的一篇论文,由处理的马尔可夫决策。我正在尝试使用 Mdptoolbox 在 python 中实现相同的功能,但没有获得预期格式的输出。

我的状态是客户当前风险评分和当前信用额度的组合。我的行动是增加客户的限额。

我已经为每个状态准备了我的转换概率。

在使用 Python MDPtoolbox 运行 MDP 代码时,我得到了一个不足以满足我使用的策略向量,因为我需要为每个风险评分和信用额度的组合制定最佳策略。我当前的输出告诉我将特定风险范围的限制增加到一个新的限制,这太通用了。

import mdptoolbox
import numpy as np
transitions = np.array([
#Limit1
    [
            [0.2, 0.798, 0.001, 0.001], #s1
            [0.001, 0.1, 0.2, 0.699], #s2
            [0.099, 0.001, 0.8, 0.1], #s3
            [0.001, 0.001, 0.898, 0.1] #s4
    ],
#Limit2
    [
            [0.2, 0.001, 0.001, 0.798], #s1
            [0.001, 0.2, 0.798, 0.001], #s2
            [0.001, 0.4, 0.1, 0.499], #s3
            [0.1, 0.2, 0.001, 0.699] #s4
    ],
#Limit3
    [
            [0.001, 0.1, 0.001, 0.898], #s1
            [0.798, 0.2, 0.001, 0.001], #s2
            [0.001, 0.001, 0.001, 0.997], #s3
            [0.001, 0.2, 0.5, 0.299] #s4
    ],
#Limit4
        [
                [0.2, 0.001, 0.001, 0.798], #s1
                [0.1, 0.001, 0.299, 0.6], #s2
                [0.001, 0.1, 0.001, 0.898], #s3
                [0.001, 0.001, 0.1, 0.898] #s4
        ]
])
rewards = np.array([
        [0, 0, 0.9, 0.1],
        [0, 0.8, 0, 0.2],
        [0.1, 0, 0.7, 0.2],
        [0, 0, 0, 1.0]
        ])
vi = mdptoolbox.mdp.ValueIteration(transitions, rewards,0.995)
vi.run();
vi.policy
vi.V

我得到的最终政策是:

vi.policy
Out[86]: (2, 1, 2, 3)

这只表示将风险评分为 S1 的客户的限制增加到限制 2,依此类推。这太笼统了。我期待的是矩阵策略,它告诉我应该为信用风险评分和限制的每种组合增加多少限制。

4

0 回答 0