技术领域
[0001] 本发明涉及问卷调研技术领域,尤其涉及一种基于回溯法与动态调整法的maxdiff题型生成方法。
相关背景技术
[0002] 在市场调研中,让众多受访者去评判一个产品的哪些属性的受欢迎程度,有很多种调研方法,比如在购买饮料时,哪个因素最重要,哪个因素最不重要,如果只有少量属性,比如更看重价格还是味道,或者更看重味道还是包装等,可以采用对比法,只需要让每一个受访者去两两对比回答哪个更喜欢,然后统计哪个属性喜欢的人最多即可,这是最简单最直接的方式,但是这个仅仅限于属性较少的情况下适用,如果属性较多,两两对比的次数就会很多,受访者回答的时间也就会更长,想要受访者在最少的回答次数情况下,现有技术采取maxdiff的方式。
[0003] maxdiff,又叫最大差异测量,是市场调研中一种常用的方法,是让受访者从一组对象中指出能表明最大差异偏好的对象。以购买饮料为例,如果有T个属性,包括价格、味道、包装、颜色、配料、代言人等等,maxdiff方案会将这些属性分为M*N组,每个属性可以出现多次,受访者只需要回答N次,每次从M中挑选最喜欢和最不喜欢的即可。
[0004] 然而,现有技术通过maxdiff进行市场调研时,需要通过服务器端整体调控去达到均衡的目的,与服务器交互会消耗很多的性能,管理数据也很麻烦,如果服务器有故障或受访者多并发大时,整体误差会更大;此外,在访问量多,并发量大的情况下,调研结果的准确率会大打折扣;还有在属性较多的情况下,无法快速的在浏览器中显示出来。
具体实施方式
[0044] 下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
[0045] 实施例一
[0046] 图1是本发明实施例一提供的一种基于回溯法与动态调整法的maxdiff题型生成方法的流程图,本实施例可适用于进行产品市场调研的场景。
[0047] 参照图1,在输入T、M、N后,问卷调研平台会确定算法策略,并生成均匀分布的分组结果,最终由问卷调研平台进行UI设计并产生题型。
[0048] 本发明实施例提供的一种基于回溯法与动态调整法的maxdiff题型生成方法,采用回溯法与动态调整法相结合的方式,对题型生成的分组结果进行干预,使得分组结果中各调研属性被均匀分布在分组中,且保障各属性均匀出现行内的不同位置以及列内的不同位置,该方法包括:
[0049] 获取调研产品的所有调研属性数T,每次从T中选取M个调研属性供用户进行选择,设置选取的次数为N次;
[0050] 根据T、M、N的数值,确定采用回溯法或动态调整法得到分组结果;
[0051] 将得到的结果数组,结合界面设计呈现给用户选择。
[0052] 例如:某产品具有八个属性:价格、品牌、口味、功能、配料、代言人、包装、健康,需要每次产生四个属性供用户选择最喜欢的与最不喜欢的属性,并进行六次选择。那么,对应T的数值为8,M的数值为4,N的数值为6。可以产生多种不同分组结果。在通过回溯法或动态调整法后,得到的一种分组结果可以是:
[0053] 第一行:代言人、包装、配料、口味;
[0054] 第二行:功能、健康、价格、品牌;
[0055] 第三行:包装、功能、代言人、价格;
[0056] 第四行:品牌、口味、健康、配料;
[0057] 第五行:健康、品牌、功能、代言人;
[0058] 第六行:价格、配料、口味、包装。
[0059] 需要说明的是,本实施例中的方案基于javascript的前端技术实现,并在问卷调研平台中的maxdiff题型中运用,无需与服务器交互,旨在生成一个maxdiff题型,让受访者填写进行回收。
[0060] Maxdiff用于受访者客户对产品属性的偏好程度,被广泛的应用在市场调研领域。其做法是让受访者从一组对象中指出能表明最大差异偏好的对象。例如受试者需要在几个对象中指出“最好的”和“最差的”)。
[0061] 评判一个Maxdiff题型优良性的标准在于:保证每个属性能被众多受访者尽可能均匀抽取,同时,每一个属性在被抽取后,能够均匀的在不同位置呈现。以产品包含价格、味道、包装等属性为例,如果价格属性出现次数远远大于味道属性就会有问题,如果价格属性总是被放在第一位,味道属性永远放在最后一位,也是对属性的不公平,还有就是每个受访者的作答尽量不一样,这样才能降低干扰性。
[0062] 进一步的,预先为T、M、N分别设置数值阈值,当T、M、N均未超出对应数值阈值时,采用回溯法;否则,采用动态调整法;
[0063] 其中,M代表分组结果的列数,N代表分组结果的行数。
[0064] T指所有调研属性数,例如产品中的价格、味道、包装等调研属性;M指每次呈现多少个供用户来选择,同时代表分组结果的列数,用户需要每次从M中挑选最喜欢和最不喜欢;N指每个用户选择多少次,即受访者需要回答N次,同时代表分组结果的行数。
[0065] 根据输入行数,列数,和属性数的情况,根据自身系统对数据和性能的要求选择是回溯算法还是动态调整算法,因为回溯法的特点是准确,但在行列属性较大的情况下存在较慢的可能,而动态调整法则生成快,但数据在出现位置上的要求有一定的牺牲,二者结合可以达到速度快,数据准的效果。
[0066] 回溯法的步骤包括:
[0067] 生成第一属性池,将所有调研属性进行编号,计算 得到每个调研属性在分组结果中出现的最低次数X;如果 有没有余数,则第一属性池饱和;如果 有余数Y,则在第一属性池将每个调研属性放入X次,并从T个调研属性中随机选出Y个调研属性放入第一属性池;
[0068] 依次从第一属性池中确定允许出现在当前位置的调研属性;
[0069] 在确定允许出现在当前位置的调研属性后,按照行与列的位置,将结果记录在二维数组中,且记录好执行路径;同时,从第一属性池中确定允许出现在下一位置的调研属性;
[0070] 设置最大回溯次数阈值,当回溯次数超出最大回溯次数阈值后,切换至动态调整法。
[0071] 回溯法的过程具体为:
[0072] S101:生成本次需要用到的第一属性池。先将调研属性从1‑t编号,然后根据列数M与行数N之积,除以所有调研属性数T,计算出本次用到的最低次数X,然后将每个调研属性的最低次数次存入第一属性池,此时,如果没有余数,则第一属性池饱和,如果此时有余数Y,则在T个调研属性中随机选出Y个调研属性放入第一属性池。
[0073] S102:依次从第一属性池中确定允许出现在分组结果中当前位置的调研属性。
[0074] 步骤S102具体包括:
[0075] S1021:从第一属性池中取一个调研属性。
[0076] S1022:判断当前调研属性,是否允许出现在当前行;如果当前行未出现过当前调研属性,则允许出现在当前行;否则,从第一属性池中取下一个调研属性;
[0077] 因为行内是不允许重复的,如果该行出现过,则该属性不满足,继续从属性池中取下一个。
[0078] S1023:判断当前调研属性,是否允许出现在当前列;如果当前调研属性在当前列出现的次数小于等于当前列中其他调研属性出现的最大次数,则允许出现在当前列;否则,从第一属性池中取下一个调研属性。
[0079] 因为maxdiff需要尽量保证一个属性不能总是出现在某个固定位置,所以需要校验该属性在这一列出现的次数是不是小于等于该列中其他元素出现的最大次数,比如当前属性a,如果该列中a属性出现过2次,但存在某属性出现过3次,则该属性通过校验,但如果其他任何属性在该列中都没有出现过2次,则该属性不能通过校验,继续从属性池中取下一个。
[0080] S1024:判断当前调研属性的加入,是否属于回溯路径;如果属于回溯路径,则从第一属性池中取下一个调研属性。
[0081] 程序走过的轨迹就是回溯路径,回溯路径被记录在一个数组中,并通过数组的hash值判断是否为重复路径。
[0082] S1025:如果没有一个符合当前位置的调研属性,则记录回溯路径,并回溯到上一位置,重新进行上一位置的调研属性确定。
[0083] 如果一个符合条件的属性都无法找到,则记录回溯路径,然后回溯到最近一次,有多个属性可选且还没有执行过的节点,继续以上操作,直到找到为止,因为这个是一定有解的。
[0084] 按照以上步骤,将所有符合该校验的属性选择出来,因为它们是同等权重,该算法会将同等权重的属性随机筛选一个,这样能保证每个受访者得到的选项不一样,更符合maxdiff调研的理念。
[0085] S103:在确定允许出现在当前位置的调研属性后,按照当前位置在分组结果中行与列的位置,将结果记录在二维数组中,且记录执行路径;同时,从第一属性池中确定允许出现在下一位置的调研属性。
[0086] 如果找到了符合条件的属性,按照当前位置在分组结果中行与列的位置,将结果记录在二维数组中,且记录好执行路径,按照S102进行下一个位置的属性选择。
[0087] S104:设置最大回溯次数阈值,当回溯次数超出最大回溯次数阈值后,切换至动态调整法。
[0088] 虽然回溯法一定有解,但由于中间存在随机的可能,在极低概率的时候,可能回溯次数过大,影响性能,在超过设置的最大回溯次数后,将算法切换成动态调整法。
[0089] 动态调整法的步骤包括:
[0090] 生成第二属性池与第一属性优先池,将所有调研属性进行编号,计算 得到每个调研属性在分组结果中出现的最低次数X;如果 有没有余数,则第二属性池饱和,无需第一属性优先池;如果 有余数Y,则在第二属性池将每个调研属性放入X次,并从T个调研属性中随机选出Y个调研属性放入第一属性优先池;
[0091] 完成每一行对调研属性的选择;
[0092] 进行各行内对调研属性的调整;
[0093] 进行全局范围内对调研属性的调整。
[0094] 动态调整法的过程具体为:
[0095] S201:生成本次需要用到的第二属性池以及第一属性优先池。先将调研属性从1‑t编号,然后根据列数M与行数N之积,除以所有调研属性数T,计算出本次用到的最低次数X,然后将每个调研属性的最低次数次存入第一属性池,此时,如果没有余数,则第二属性池饱和,无需属性优先池,如果此时有余数Y,则在T个调研属性中随机选出Y个属性放入属性池,因为这Y个属性出现的次数会比其他调研属性多一次,所以将其放入第一属性优先池。
[0096] S202:完成分组结果中每一行对调研属性的选择。
[0097] 步骤S202具体包括:
[0098] 先从第一属性优先池中随机选择调研属性作为当前行中的数据,如果Y≥M,则当前行已满,将选择的调研属性从第一属性优先池中移除;如果Y
[0099] 如果某一行没满,且第二属性池中剩下的调研属性均已出现在此行,则从之前已经分配的行中,在不能破坏行重复的原则下,采取行与行之间调研属性的交换。
[0100] 这样就能达到所有的属性都被基本分配完成,行不重复且属性出现次数均衡的目的。目前的数据结果已经达到了出现次数均衡和行不重复的目的,只有列的均衡还没有进行调整,在不破坏行已经均匀的情况下,因此可以优先行内调整,在不进行跨行调整的情况下,让列更均衡。
[0101] S203:进行各行内对调研属性的调整。
[0102] 第一行无需调整,从第二行开始进行调整,先将各行中所有调研属性,按照在当前列出现的次数进行由低到高排序,存入一个数组变量中;
[0103] 在同一行内,当前调研属性记为A,待交换位置的调研属性记为B,其中,A所在列记为第一属性列,B所在列记为第二属性列,当交换前第一属性列中A出现的次数大于B出现的次数、交换后第一属性列中A出现的次数大于或等于B出现的次数、交换后第二属性列中A出现的次数小于第一属性列中A出现的次数同时满足时,则将A、B进行位置交换。例如:A在第一属性列次数为5,在第二属性列次数为3,而B在第一属性列次数为7,在第二属性列次数为2,那么由于交换前第一属性列中A出现的次数小于B出现的次数,因此无法交换。若A在第一属性列次数为7,在第二属性列次数为3,而B在第一属性列次数为5,在第二属性列次数为2,交换后A在第一属性列次数为6,在第二属性列次数为4,B在第一属性列次数为6,在第二属性列次数为1,那么交换前第一属性列中A出现的次数大于B出现的次数、交换后第一属性列中A出现的次数大于或等于B出现的次数、交换后第二属性列中A出现的次数小于第一属性列中A出现的次数,可以进行交换位置。
[0104] 按照所述A、B进行位置交换的方式,依次对所有行进行调整。
[0105] 在经过S203动态调整后,已经能很好的实现了列均衡,但因为每次执行后,都有一定的随机性,因此,最后再进行一次全局范围内的补充调整,由于补充调整是全局范围内的,因此可以根据自己的误差率,限定调整次数。
[0106] S204:进行全局范围内对调研属性的调整。
[0107] 查看整个结果集,统计每个调研属性在每列的出现次数,并记录在变量中[0108] 计算每列允许出现的最大值n,n为行数N与所有调研属性数T的商向上取整;例如:行数24,所有调研属性数为5,则取结果为5。
[0109] 当某一调研属性在某一列的出现次数大于n时,则在全局范围内查找位置进行交换。
[0110] 需要说明的是,首先,对所述某一调研属性的查找过程需要保证不会死循环,即当前列不是已经在这一次调整中寻找过的列;其次,所述某一调研属性在列中出现的数量必须大于最大次数,否则没有必要调整;最后,所述某一调研属性在列中出现的次数在所有列中最大。
[0111] 如果存在这样的某一调研属性A,则在全局范围内查找目标调研属性B进行位置交换,如果找不到这样的某一调研属性,则认为分组结果能通过,成功生成。
[0112] 在全局范围内查找位置时,如果找到了合适的目标调研属性B,则进行位置交换,要求:首先、调整后不能破坏行唯一;其次、调整后A、B在每列的出现次数小于等于n。
[0113] 按照以上步骤,如果能一直找到这样的值,根据自身要求的误差,设定固定的最大调整次数,允许超出调整次数。
[0114] 本发明实施例的技术方案,通过结合回溯与动态调整法保证每个属性能被众多受访者尽可能均匀抽取,而且每一个属性在被抽取后,能够均匀的在不同位置呈现。在没有余数或者余数相对较少,且需要呈现的行列数不是很多的情况下采用回溯法,使得准确误差极低,而剩下的情况则采用动态调整算法,兼容小众需求以及异常情况的处理。同时,本实施例技术方案基于javascript的前端技术实现的算法,无需与服务器交互的前提下,即可达到目的,而其他实现方案,均是由服务器端整体调控去达到均衡的目的,这类方案与服务器交互会消耗很多的性能,管理数据也很麻烦,如果服务器有故障或受访者多并发大时,整体误差会更大;本实施例技术方案在保证各类均衡的前提下,在访问量多,并发量大的情况下,依然能保持结果准确误差率小的性质;本实施例技术方案执行性能优异,在属性较多的情况下,依然能保证快速的在浏览器中显示出来。
[0115] 注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。