Commit 6514a1e5 authored by 高雅喆's avatar 高雅喆

画像更新逻辑线均分,后衰减

parent 79a464dd
...@@ -41,11 +41,11 @@ def get_user_service_portrait(cl_id, all_word_tags, all_tag_tag_type, all_3tag_2 ...@@ -41,11 +41,11 @@ def get_user_service_portrait(cl_id, all_word_tags, all_tag_tag_type, all_3tag_2
user_df_service["tag2_type"] = user_df_service.apply(lambda x: all_tag_tag_type.get(x["tag2"]), axis=1) user_df_service["tag2_type"] = user_df_service.apply(lambda x: all_tag_tag_type.get(x["tag2"]), axis=1)
# 算分及比例 # 算分及比例
user_df_service["tag_score"] = user_df_service.apply( user_df_service["tag_score"] = user_df_service.apply(
lambda x: compute_henqiang(x.days_diff_now, exponential=1)/get_action_tag_count(user_df_service, x.time) if x.score_type == "henqiang" else ( lambda x: compute_henqiang(x.days_diff_now, exponential=1, action_tag_count=get_action_tag_count(user_df_service, x.time)) if x.score_type == "henqiang" else (
compute_jiaoqiang(x.days_diff_now, exponential=1)/get_action_tag_count(user_df_service, x.time) if x.score_type == "jiaoqiang" else ( compute_jiaoqiang(x.days_diff_now, exponential=1, action_tag_count=get_action_tag_count(user_df_service, x.time)) if x.score_type == "jiaoqiang" else (
compute_ai_scan(x.days_diff_now, exponential=1)/get_action_tag_count(user_df_service, x.time) if x.score_type == "ai_scan" else ( compute_ai_scan(x.days_diff_now, exponential=1, action_tag_count=get_action_tag_count(user_df_service, x.time)) if x.score_type == "ai_scan" else (
compute_ruoyixiang(x.days_diff_now, exponential=1)/get_action_tag_count(user_df_service, x.time) if x.score_type == "ruoyixiang" else compute_ruoyixiang(x.days_diff_now, exponential=1, action_tag_count=get_action_tag_count(user_df_service, x.time)) if x.score_type == "ruoyixiang" else
compute_validate(x.days_diff_now, exponential=1)/get_action_tag_count(user_df_service, x.time)))), axis=1) compute_validate(x.days_diff_now, exponential=1, action_tag_count=get_action_tag_count(user_df_service, x.time))))), axis=1)
tag_score_sum = user_df_service.groupby(by=["tag2", "tag2_type"]).agg( tag_score_sum = user_df_service.groupby(by=["tag2", "tag2_type"]).agg(
{'tag_score': 'sum', 'cl_id': 'first', 'action': 'first'}).reset_index().sort_values(by=["tag_score"], {'tag_score': 'sum', 'cl_id': 'first', 'action': 'first'}).reset_index().sort_values(by=["tag_score"],
ascending=False) ascending=False)
......
...@@ -236,52 +236,52 @@ def get_tag2_from_tag3(tag3, all_3tag_2tag, user_log_df_tag2_list): ...@@ -236,52 +236,52 @@ def get_tag2_from_tag3(tag3, all_3tag_2tag, user_log_df_tag2_list):
print(e) print(e)
def compute_henqiang(x, decay_days=30, exponential=0): def compute_henqiang(x, decay_days=30, exponential=0, action_tag_count=1):
if exponential: if exponential:
alpha = exponential_decay(x, decay_days) alpha = exponential_decay(x, decay_days)
score = 15 - 1.1**alpha * ((15-0.5)/decay_days) score = 15/action_tag_count - 1.1**alpha * ((15-0.5)/decay_days)
else: else:
score = 15 - x * ((15-0.5)/decay_days) score = 15/action_tag_count - x * ((15-0.5)/decay_days)
if score > 0.5: if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_jiaoqiang(x, decay_days=30, exponential=0): def compute_jiaoqiang(x, decay_days=30, exponential=0, action_tag_count=1):
if exponential: if exponential:
alpha = exponential_decay(x, decay_days) alpha = exponential_decay(x, decay_days)
score = 12 - 1.1**alpha * ((12-0.5)/decay_days) score = 12/action_tag_count - 1.1**alpha * ((12-0.5)/decay_days)
else: else:
score = 12 - x * ((12-0.5)/decay_days) score = 12/action_tag_count - x * ((12-0.5)/decay_days)
if score > 0.5: if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_ruoyixiang(x, decay_days=30, exponential=0): def compute_ruoyixiang(x, decay_days=30, exponential=0, action_tag_count=1):
if exponential: if exponential:
alpha = exponential_decay(x, decay_days) alpha = exponential_decay(x, decay_days)
score = 5 - 1.1**alpha * ((5-0.5)/decay_days) score = 5/action_tag_count - 1.1**alpha * ((5-0.5)/decay_days)
else: else:
score = 5 - x * ((5-0.5)/decay_days) score = 5/action_tag_count - x * ((5-0.5)/decay_days)
if score > 0.5: if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_validate(x, decay_days=30, exponential=0): def compute_validate(x, decay_days=30, exponential=0, action_tag_count=1):
if exponential: if exponential:
alpha = exponential_decay(x, decay_days) alpha = exponential_decay(x, decay_days)
score = 10 - 1.1**alpha * ((10-0.5)/decay_days) score = 10/action_tag_count - 1.1**alpha * ((10-0.5)/decay_days)
else: else:
score = 10 - x * ((10-0.5)/decay_days) score = 10/action_tag_count - x * ((10-0.5)/decay_days)
if score > 0.5: if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_ai_scan(x, decay_days=30, exponential=0): def compute_ai_scan(x, decay_days=30, exponential=0, action_tag_count=1):
if exponential: if exponential:
alpha = exponential_decay(x, decay_days) alpha = exponential_decay(x, decay_days)
score = 2 - 1.1**alpha * ((2-0.5)/decay_days) score = 2/action_tag_count - 1.1**alpha * ((2-0.5)/decay_days)
else: else:
score = 2 - x * ((2-0.5)/decay_days) score = 2/action_tag_count - x * ((2-0.5)/decay_days)
if score > 0.5: if score > 0.5:
return score return score
else: else:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment