cod*_*eak 1 python statistics recommendation-engine ranking mcdm
我正在构建一个推荐系统,它可以对汽车替代品进行基于多标准的排名。我只需要以有意义的方式对替代方案进行排名。我有办法通过表格询问用户问题。
每辆车将根据以下标准进行评判:价格、尺寸、电动/非电动、距离等。正如您所看到的,它混合了各种数据类型,包括序数、基数(计数)和定量数据。
我的问题如下:
我应该使用哪种技术将所有模型合并到一个可以排名的分数中。我查看了标准化加权和模型,但我很难将权重分配给序数(排名)数据。我尝试使用更智能的方法为序数数据分配数值权重,但我不确定它是否合适。请帮忙!
在有人帮助我找到最佳排名方法的答案之后,如果最佳排名替代方案在绝对范围内不够好怎么办?我如何检查以进一步扩大替代集?
3.由于上面提到的标准(价格等)都在不同的单位上,是否有一个好的方法来标准化属于不同尺度的混合数据类型?鉴于数据属于许多不同的类型,这样做是否有意义?
对这些问题的任何帮助将不胜感激!谢谢你!
好问题。
\n\n我建议您应用 AHP 来分配每个标准的权重,并应用 TOPSIS 来对标准进行评分和排名。
\n\n事实上,MCDC(多标准决策)的大多数算法都具有标准化方法。
\n\n让我们分析一下您的案例:
\n\n您的标准是:价格、尺寸、电动/非电动、距离。
\n\n价格、尺寸和距离可以计算为整数/浮点数,而对于定性数据点,您有一些选择......
\n\n如果您的决策空间由全电动或完全非电动汽车组成,但中间没有任何内容,则应使用布尔逻辑。如果您的汽车的电动程度不同(例如,如果您有混合动力汽车),则模糊逻辑。如果您还想考虑某辆车非电动的程度,您应该使用直觉模糊逻辑。如果你的信息不完整,你应该使用中智逻辑,所以假设有一些汽车你无法分辨它们是什么。
\n\n为了简化起见,由于您只有两个类别,因此在您的特定情况下我会坚持布尔逻辑,并且我假设电动类别比非电动类别更受欢迎。
\n\n让我们看一下 TOPSIS 算法4 ...
\n\n从你的例子来看,决策矩阵看起来像这样:
\n\n//DECISION MATRIX \n\n Price Size Type Distance\nCar1 = [250] , [300] , [1] , [30] \nCar2 = [650] , [200] , [0] , [50] \nCar3 = [100] , [600] , [0] , [10]\nRun Code Online (Sandbox Code Playgroud)\n\n现在,您必须计算归一化决策矩阵。为此,您首先必须计算性能值。
\n\n公式为:
\n\n\n\n这意味着对于每个标准,您必须将每个案例乘以 2,对所有案例求和,然后计算总和的平方根。
\n\n所以...
\n\n//DECISION MATRIX + Performance Score\n\n Price Size Type Distance\nCar1 = [250] , [300] , [1] , [30] \nCar2 = [650] , [200] , [0] , [50] \nCar3 = [100] , [600] , [0] , [10]\n\npScore = [703] , [700] , [1] , [60]\nRun Code Online (Sandbox Code Playgroud)\n\n一旦获得绩效分数,您就可以标准化。为此,您只需计算标准的每个值与相应绩效分数之间的除法即可。
\n\n//NORMALISED DECISION MATRIX \n\n Price Size Type Distance\nCar1 = [0.36] , [0.43] , [1] , [0.51] \nCar2 = [0.92] , [0.29] , [0] , [0.85] \nCar3 = [0.14] , [0.86] , [0] , [0.17]\nRun Code Online (Sandbox Code Playgroud)\n\n现在您必须计算加权归一化决策矩阵。(我假设你已经分配了权重,如果没有,你可以检查 AHP 算法[5])。
\n\n// WEIGHTED NORMALISED DECISION MATRIX \n\n Price Size Type Distance\nCar1 = [0.07] , [0.04] , [0.3] , [0.20] \nCar2 = [0.18] , [0.03] , [0] , [0.34] \nCar3 = [0.03] , [0.09] , [0] , [0.07]\n\nWeight = [0.20] , [0.10] , [0.30], [0.40]\nRun Code Online (Sandbox Code Playgroud)\n\nTOPSIS 算法基于这样的思想:最理想的替代方案是与理想解的几何距离最近且与反理想解的几何距离最大的替代方案。
\n\n\n\n我们需要明白,有些标准是收益,有些标准是成本。例如,我们可能希望最大化尺寸和类型,但最小化价格和距离。
\n\n基于此,我们来计算理想解和反理想解:
\n\n Price Size Type Distance\nCar1 = [0.07] , [0.04] , [0.3] , [0.20] \nCar2 = [0.18] , [0.03] , [0] , [0.34] \nCar3 = [0.03] , [0.09] , [0] , [0.07]\n\nIdeal = [0.03] , [0.09] , [0.3], [0.07]\n-Ideal = [0.18] , [0.03] , [0] , [0.34]\nRun Code Online (Sandbox Code Playgroud)\n\n之后,对于每辆车,您必须使用理想和反理想解决方案计算欧几里德距离:
\n\n公式是...
\n\n\n\n例如,对于 car1 和理想解决方案之间的距离为((0.07-0.03)**2 + (0.04-0.09)**2 + (0.3-0.3)**2 + (0.20-0.07)**2) ** 0.5
在 python 中,你可以使用 Spicy Library 来做到这一点。[6]
\n\n一旦计算出每种汽车替代方案到理想和反理想解决方案的距离,您就必须计算性能得分,这基本上是一个比率。
\n\n\n\n因此,对于每个汽车替代方案,到 i- 的距离 /(到 i- 的距离 + 到 i+ 的距离)。
\n\n一旦你获得了每种汽车替代品的性能分数,按降序对它们进行排序,你就得到了它们各自的排名。
\n\n资源:
\n\n参考:
\n\n