Commit a892d9e7 authored by 高雅喆's avatar 高雅喆

增加分数指数衰减的函数

parent 04f0591c
This diff is collapsed.
...@@ -174,33 +174,53 @@ def get_tag2_from_tag3(tag3, all_3tag_2tag, user_log_df_tag2_list): ...@@ -174,33 +174,53 @@ def get_tag2_from_tag3(tag3, all_3tag_2tag, user_log_df_tag2_list):
print(e) print(e)
def compute_henqiang(x): def compute_henqiang(x, decay_days=180, normalization_size=7, exponential=1):
score = 15-x*((15-0.5)/180) if exponential:
if score>0.5: alpha = exponential_decay(x, decay_days, normalization_size)
score = 15 - 2**alpha * ((15-0.5)/decay_days)
else:
score = 15 - x * ((15-0.5)/decay_days)
if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_jiaoqiang(x): def compute_jiaoqiang(x, decay_days=180, normalization_size=7, exponential=1):
score = 12-x*(12/180) if exponential:
if score>0.5: alpha = exponential_decay(x, decay_days, normalization_size)
score = 12 - 2**alpha * ((12-0.5)/decay_days)
else:
score = 12 - x * ((12-0.5)/decay_days)
if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_ruoyixiang(x): def compute_ruoyixiang(x, decay_days=180, normalization_size=7, exponential=1):
score = 5-x*((5-0.5)/180) if exponential:
if score>0.5: alpha = exponential_decay(x, decay_days, normalization_size)
score = 5 - 2**alpha * ((5-0.5)/decay_days)
else:
score = 5 - x * ((5-0.5)/decay_days)
if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_validate(x): def compute_validate(x, decay_days=180, normalization_size=7, exponential=1):
score = 10-x*((10-0.5)/180) if exponential:
if score>0.5: alpha = exponential_decay(x, decay_days, normalization_size)
score = 10 - 2**alpha * ((10-0.5)/decay_days)
else:
score = 10 - x * ((10-0.5)/decay_days)
if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
def compute_ai_scan(x): def compute_ai_scan(x, decay_days=180, normalization_size=7, exponential=1):
score = 2 - x * ((2 - 0.5) / 180) if exponential:
if score>0.5: alpha = exponential_decay(x, decay_days, normalization_size)
score = 2 - 2**alpha * ((2-0.5)/decay_days)
else:
score = 2 - x * ((2-0.5)/decay_days)
if score > 0.5:
return score return score
else: else:
return 0.5 return 0.5
...@@ -212,3 +232,10 @@ def get_action_tag_count(df, action_time): ...@@ -212,3 +232,10 @@ def get_action_tag_count(df, action_time):
return 1 return 1
except Exception as e: except Exception as e:
print(e) print(e)
def exponential_decay(days_diff, decay_days=180, normalization_size=7):
x = np.arange(1, decay_days+1, 1)
# 天数差归一化到[0, normalization_size]
a = (normalization_size - 0) * (days_diff - min(x)) / (max(x) - min(x))
return a
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