def exportADescDHontINF(selector: ADHondtSelector,
                         nImplFeedback: APenalization):
     aDescNegDHontFixed: AggregationDescription = AggregationDescription(
         AggrFuzzyDHondtINF, {
             AggrFuzzyDHondtINF.ARG_SELECTOR: selector,
             AggrFuzzyDHondtINF.ARG_PENALTY_TOOL: nImplFeedback
         })
     return aDescNegDHontFixed
 def exportADescDHontThompsonSamplingINF(selector: ADHondtSelector,
                                         nImplFeedback: APenalization):
     aDescDHontBanditVotesRoulette: AggregationDescription = AggregationDescription(
         AggrDHondtThompsonSamplingINF, {
             AggrDHondtThompsonSampling.ARG_SELECTOR: selector,
             AggrFuzzyDHondtINF.ARG_PENALTY_TOOL: nImplFeedback
         })
     return aDescDHontBanditVotesRoulette
 def exportADescDFuzzyHontDirectOptimizeINF(selector: ADHondtSelector,
                                            nImplFeedback: APenalization):
     aDescFuzzyDHondtDirectOptimizeINF: AggregationDescription = AggregationDescription(
         AggrFuzzyDHondtDirectOptimizeINF, {
             AggrFuzzyDHondtDirectOptimizeINF.ARG_SELECTOR: selector,
             AggrFuzzyDHondtDirectOptimizeINF.ARG_PENALTY_TOOL:
             nImplFeedback
         })
     return aDescFuzzyDHondtDirectOptimizeINF
示例#4
0
    def run(self, batchID: str, jobID: str):
        divisionDatasetPercentualSize: int
        uBehaviour: str
        repetition: int
        divisionDatasetPercentualSize, uBehaviour, repetition = \
            InputABatchDefinition().getBatchParameters(self.datasetID)[batchID]

        recommenderTheMPopID: str = "TheMostPopular"
        pRTheMPopDescr: RecommenderDescription = RecommenderDescription(
            RecommenderTheMostPopular, {})

        recommenderRPID: str = "RepeatedPurchase"
        pRecRPDescr: RecommenderDescription = RecommenderDescription(
            RecommenderRepeatedPurchase, {})

        selector: ADHondtSelector = self.getParameters()[jobID]
        aDescDHont: AggregationDescription = InputAggrDefinition.exportADescDHondtDirectOptimizeThompsonSampling(
            selector)
        aDescDHont: AggregationDescription = InputAggrDefinition.exportADescBanditTS(
            selector)
        #aDescDHont:AggregationDescription = InputAggrDefinition.exportADescFAI()

        rIDs: List[str]
        rDescs: List[AggregationDescription]
        rIDs, rDescs = InputRecomRRDefinition.exportPairOfRecomIdsAndRecomDescrs(
        )
        #rIDs = [recommenderTheMPopID]
        #rDescs = [pRTheMPopDescr]

        p1AggrDescrID: str = "p1AggrDescrID"
        p1AggrDescr: Portfolio1AggrDescription = Portfolio1AggrDescription(
            p1AggrDescrID, rIDs, rDescs, aDescDHont)

        #pProbTool:APenalization = PenalizationToolDefinition.exportProbPenaltyToolOLin0802HLin1002(
        #    InputSimulatorDefinition().numberOfAggrItems)
        pProbTool: APenalization = PenalizationToolDefinition.exportPenaltyToolOStat08HLin1002(
            InputSimulatorDefinition().numberOfAggrItems)

        aHierDescr: AggregationDescription = AggregationDescription(
            AggrD21, {AggrD21.ARG_RATING_THRESHOLD_FOR_NEG: 0.0})

        pHierDescr: PortfolioHierDescription = PortfolioHierDescription(
            "pHierDescr", recommenderRPID, pRecRPDescr, p1AggrDescrID,
            p1AggrDescr, aHierDescr, pProbTool)

        eTool: AEvalTool = EvalToolBanditTS({})
        #eTool:AEvalTool = EToolDoNothing({})
        #model:DataFrame = PModelDHont(p1AggrDescr.getRecommendersIDs())
        model: DataFrame = PModelBandit(p1AggrDescr.getRecommendersIDs())

        simulator: Simulator = InputSimulatorDefinition(
        ).exportSimulatorRetailRocket(batchID, divisionDatasetPercentualSize,
                                      uBehaviour, repetition)
        simulator.simulate([pHierDescr], [model], [eTool],
                           [HistoryHierDF(p1AggrDescr.getPortfolioID())])
 def exportADescDHontBanditVotesRoulette3():
     aDescDHontBanditVotesRoulette3:AggregationDescription = AggregationDescription(AggrDHondtBanditsVotes,
                             {AggrDHondtBanditsVotes.ARG_SELECTORFNC:(AggrDHondtBanditsVotes.selectorOfRouletteWheelExpRatedItem,[3])})
     return aDescDHontBanditVotesRoulette3
 def exportADescNegDHontFixed(aPenalization:APenalization):
     aDescNegDHontFixed:AggregationDescription = AggregationDescription(AggrDHontNegativeImplFeedback, {
                             AggrDHontNegativeImplFeedback.ARG_SELECTORFNC:(AggrDHont.selectorOfTheMostVotedItem,[]),
                             AggrDHontNegativeImplFeedback.ARG_PENALTY_TOOL:aPenalization})
     return aDescNegDHontFixed
示例#7
0
 def exportADescRandomKfromN(mainMethodID:str):
     return AggregationDescription(AggrRandomKfromN, {
         AggrRandomKfromN.ARG_MAIN_METHOD: mainMethodID,
         AggrRandomKfromN.ARG_MAX_REC_SIZE: 100})
 def exportADescDHontRoulette3():
     aDescDHontRoulette3:AggregationDescription = AggregationDescription(AggrDHont,
                             {AggrDHont.ARG_SELECTORFNC:(AggrDHont.selectorOfRouletteWheelExpRatedItem,[3])})
     return aDescDHontRoulette3
 def exportADescDHontThompsonSampling(nImplFeedback: APenalization):
     aDescDHontBanditVotesRoulette: AggregationDescription = AggregationDescription(
         AggrDHondtThompsonSampling,
         {AggrDHondtThompsonSampling.ARG_SELECTOR: nImplFeedback})
     return aDescDHontBanditVotesRoulette
 def exportADescDHontDirectOptimize(selector: ADHondtSelector):
     aDescFuzzyDHondtDirectOptimize: AggregationDescription = AggregationDescription(
         AggrFuzzyDHondtDirectOptimize,
         {AggrFuzzyDHondtDirectOptimize.ARG_SELECTOR: selector})
     return aDescFuzzyDHondtDirectOptimize
示例#11
0
 def exportADescDHondtDirectOptimize(selector:ADHondtSelector,
                         discountFactor=AggrDHondtDirectOptimizeThompsonSampling.DISCFACTOR_UNIFORM):
     return AggregationDescription(AggrFuzzyDHondtDirectOptimize, {
                         AggrFuzzyDHondtDirectOptimize.ARG_SELECTOR:selector,
                         AggrDHondtDirectOptimizeThompsonSampling.ARG_DISCOUNT_FACTOR:discountFactor})
 def exportADescDHont(selector: ADHondtSelector):
     aDescDHontFixed: AggregationDescription = AggregationDescription(
         AggrFuzzyDHondt, {AggrFuzzyDHondt.ARG_SELECTOR: selector})
     return aDescDHontFixed
示例#13
0
 def exportADescDHondt(selector:ADHondtSelector):
     return AggregationDescription(AggrFuzzyDHondt, {
                         AggrFuzzyDHondt.ARG_SELECTOR:selector})
示例#14
0
 def exportADescDHondtThompsonSampling(nImplFeedback:APenalization):
     return AggregationDescription(AggrDHondtThompsonSampling, {
                         AggrDHondtThompsonSampling.ARG_SELECTOR: nImplFeedback})
示例#15
0
 def exportADescFAI():
     return AggregationDescription(AggrFAI, {
                         })
示例#16
0
 def exportADescWeightedAVGMMR():
     return AggregationDescription(AggrMMRWeightedAVG, {
                         })
示例#17
0
 def exportADescRandomRecsSwitching(mainMethodID:str):
     return AggregationDescription(AggrRandomRecsSwitching, {
         AggrRandomRecsSwitching.ARG_MAIN_METHOD: mainMethodID})
 def exportADescNegDHontRoulette(aPenalization:APenalization):
     aDescNegDHontRoulette:AggregationDescription = AggregationDescription(AggrDHontNegativeImplFeedback, {
                             AggrDHontNegativeImplFeedback.ARG_SELECTORFNC:(AggrDHont.selectorOfRouletteWheelRatedItem,[]),
                             AggrDHontNegativeImplFeedback.ARG_PENALTY_TOOL:aPenalization})
     return aDescNegDHontRoulette
示例#19
0
 def exportADescDFuzzyHondtDirectOptimizeINF(selector:ADHondtSelector, nImplFeedback:APenalization,
                         discountFactor=AggrDHondtDirectOptimizeThompsonSampling.DISCFACTOR_UNIFORM):
     return AggregationDescription(AggrFuzzyDHondtDirectOptimizeINF, {
                         AggrFuzzyDHondtDirectOptimizeINF.ARG_SELECTOR:selector,
                         AggrFuzzyDHondtDirectOptimizeINF.ARG_PENALTY_TOOL: nImplFeedback,
                         AggrDHondtDirectOptimizeThompsonSampling.ARG_DISCOUNT_FACTOR:discountFactor})
 def exportADescBanditTS(selector: ADHondtSelector):
     aDescBanditTS: AggregationDescription = AggregationDescription(
         AggrBanditTS, {AggrBanditTS.ARG_SELECTOR: selector})
     return aDescBanditTS
示例#21
0
 def exportADescDHondtDirectOptimizeThompsonSamplingMMR(selector:ADHondtSelector,
                         discountFactor=AggrDHondtDirectOptimizeThompsonSampling.DISCFACTOR_UNIFORM):
     return AggregationDescription(AggrMMRDHondtDirectOptimizeThompsonSampling, {
                         AggrDHondtDirectOptimizeThompsonSampling.ARG_SELECTOR:selector,
                         AggrDHondtDirectOptimizeThompsonSampling.ARG_DISCOUNT_FACTOR:discountFactor,
                         AggrMMRDHondtDirectOptimizeThompsonSampling.ARG_MMR_LAMBDA:0.5})
示例#22
0
 def exportADescContextFuzzyDHondtDirectOptimize(selector:ADHondtSelector, eTool:AEvalTool):
     return AggregationDescription(AggrContextFuzzyDHondtDirectOptimize, {
                         AggrContextFuzzyDHondtDirectOptimize.ARG_SELECTOR:selector,
                         AggrContextFuzzyDHondtDirectOptimize.ARG_EVAL_TOOL:eTool})
 def exportADescBanditTS():
     aDescBanditTS:AggregationDescription = AggregationDescription(AggrBanditTS,
                             {AggrBanditTS.ARG_SELECTORFNC:(AggrBanditTS.selectorOfRouletteWheelRatedItem,[])})
     return aDescBanditTS
示例#24
0
 def exportADescDContextHondt(selector:ADHondtSelector, eTool:AEvalTool):
     return AggregationDescription(AggrContextFuzzyDHondt, {
                         AggrContextFuzzyDHondt.ARG_SELECTOR:selector,
                         AggrContextFuzzyDHondt.ARG_EVAL_TOOL:eTool})
 def exportADescDHontFixed():
     aDescDHontFixed:AggregationDescription = AggregationDescription(AggrDHont,
                             {AggrDHont.ARG_SELECTORFNC:(AggrDHont.selectorOfTheMostVotedItem,[])})
     return aDescDHontFixed
def test01():
    print("Test 01")

    recommenderID: str = "TheMostPopular"
    pRDescr: RecommenderDescription = RecommenderDescription(
        RecommenderTheMostPopular, {})

    selectorFixed: ADHondtSelector = TheMostVotedItemSelector({})
    aDescDHont: AggregationDescription = InputAggrDefinition.exportADescDHondtDirectOptimizeThompsonSampling(
        selectorFixed)

    rIDs: List[str]
    rDescs: List[AggregationDescription]
    rIDs, rDescs = InputRecomRRDefinition.exportPairOfRecomIdsAndRecomDescrs()
    rIDs = [recommenderID]
    rDescs = [pRDescr]

    p1AggrDescrID: str = "p1AggrDescrID"
    p1AggrDescr: Portfolio1AggrDescription = Portfolio1AggrDescription(
        p1AggrDescrID, rIDs, rDescs, aDescDHont)

    pProbTool: APenalization = PenalizationToolDefinition.exportProbPenaltyToolOLin0802HLin1002(
        InputSimulatorDefinition.numberOfAggrItems)
    pProbTool: APenalization = PenalizationToolDefinition.exportPenaltyToolOStat08HLin1002(
        InputSimulatorDefinition.numberOfAggrItems)

    aHierDescr: AggregationDescription = AggregationDescription(
        AggrD21, {AggrD21.ARG_RATING_THRESHOLD_FOR_NEG: 2.0})

    pHierDescr: PortfolioHierDescription = PortfolioHierDescription(
        "pHierDescr", recommenderID, pRDescr, p1AggrDescrID, p1AggrDescr,
        aHierDescr, pProbTool)

    userID: int = 1

    dataset: ADataset = DatasetRetailRocket.readDatasetsWithFilter(
        minEventCount=50)

    history: AHistory = HistoryDF("test")
    history.insertRecommendation(userID, 45, 1, False)
    history.insertRecommendation(userID, 45, 2, False)
    history.insertRecommendation(userID, 78, 3, False)

    p: APortfolio = pHierDescr.exportPortfolio("test", history)

    portFolioModel: DataFrame = PModelDHondtBanditsVotes(
        p1AggrDescr.getRecommendersIDs())

    p.train(history, dataset)

    #df:DataFrame = DataFrame([[1, 555]], columns=[Events.COL_USER_ID, Events.COL_OBJECT_ID])
    #p.update(ARecommender.UPDT_CLICK, df)

    args = {
        APortfolio.ARG_NUMBER_OF_AGGR_ITEMS: 20,
        APortfolio.ARG_ITEM_ID: 1,
        APortfolio.ARG_NUMBER_OF_RECOMM_ITEMS: 100,
        AggrD21.ARG_RATING_THRESHOLD_FOR_NEG: 0.5
    }

    r, rp = p.recommend(userID, portFolioModel, args)
    print(r)
示例#27
0
 def exportADescContextFuzzyDHondtDirectOptimizeINF(selector:ADHondtSelector, nImplFeedback:APenalization, eTool:AEvalTool):
     return AggregationDescription(AggrContextFuzzyDHondtDirectOptimizeINF, {
                         AggrContextFuzzyDHondtINF.ARG_SELECTOR:selector,
                         AggrContextFuzzyDHondtINF.ARG_EVAL_TOOL:eTool,
                         AggrFuzzyDHondtDirectOptimizeINF.ARG_PENALTY_TOOL: nImplFeedback})