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
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
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
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
def exportADescDHondt(selector:ADHondtSelector): return AggregationDescription(AggrFuzzyDHondt, { AggrFuzzyDHondt.ARG_SELECTOR:selector})
def exportADescDHondtThompsonSampling(nImplFeedback:APenalization): return AggregationDescription(AggrDHondtThompsonSampling, { AggrDHondtThompsonSampling.ARG_SELECTOR: nImplFeedback})
def exportADescFAI(): return AggregationDescription(AggrFAI, { })
def exportADescWeightedAVGMMR(): return AggregationDescription(AggrMMRWeightedAVG, { })
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
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
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})
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
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)
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})