Blame view

offline_tasks/config/offline_config.py 4.19 KB
5ab1c29c   tangwang   first commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  """
  离线任务配置文件
  包含数据库连接、路径、参数等配置
  """
  import os
  from datetime import datetime, timedelta
  
  # 数据库配置
  DB_CONFIG = {
      'host': 'selectdb-cn-wuf3vsokg05-public.selectdbfe.rds.aliyuncs.com',
      'port': '9030',
      'database': 'datacenter',
      'username': 'readonly',
      'password': 'essa1234'
  }
  
  # 路径配置
  BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  OUTPUT_DIR = os.path.join(BASE_DIR, 'output')
  LOG_DIR = os.path.join(BASE_DIR, 'logs')
  
  # 确保目录存在
  os.makedirs(OUTPUT_DIR, exist_ok=True)
  os.makedirs(LOG_DIR, exist_ok=True)
  
  # ============================================================================
  # 默认参数配置(用于调试和生产)
  # ============================================================================
  
  # 时间配置(建议先用小数值调试,确认无误后再改为大数值)
  DEFAULT_LOOKBACK_DAYS = 30    # 默认回看天数(调试用30天,生产可改为730天)
  DEFAULT_RECENT_DAYS = 7       # 默认最近天数(调试用7天,生产可改为180天)
  
  # i2i算法默认参数
  DEFAULT_I2I_TOP_N = 50        # 默认返回Top N个相似商品
  
  # 兴趣聚合默认参数
  DEFAULT_INTEREST_TOP_N = 1000  # 默认每个key返回Top N个商品
  
  # 获取时间范围
  def get_time_range(days=DEFAULT_LOOKBACK_DAYS):
      """获取时间范围"""
      end_date = datetime.now()
      start_date = end_date - timedelta(days=days)
      return start_date.strftime('%Y-%m-%d'), end_date.strftime('%Y-%m-%d')
  
  # i2i 行为相似算法配置
  I2I_CONFIG = {
      # Swing 算法配置
      'swing': {
          'alpha': 0.5,           # swing算法的alpha参数
          'threshold1': 0.5,      # 交互强度阈值1
          'threshold2': 0.5,      # 交互强度阈值2
          'max_sim_list_len': 300,  # 最大相似列表长度
          'top_n': 50,            # 输出top N个相似商品
          'thread_num': 10,       # 线程数(如果使用C++版本)
      },
      
      # Session W2V 配置
      'session_w2v': {
          'max_sentence_length': 100,  # 最大句子长度
          'window_size': 5,            # 窗口大小
          'vector_size': 128,          # 向量维度
          'min_count': 2,              # 最小词频
          'workers': 10,               # 训练线程数
          'epochs': 10,                # 训练轮数
          'sg': 1,                     # 使用skip-gram
      },
      
      # DeepWalk 配置
      'deepwalk': {
          'num_walks': 10,         # 每个节点的游走次数
          'walk_length': 40,       # 游走长度
          'window_size': 5,        # 窗口大小
          'vector_size': 128,      # 向量维度
          'min_count': 2,          # 最小词频
          'workers': 10,           # 训练线程数
          'epochs': 10,            # 训练轮数
          'sg': 1,                 # 使用skip-gram
          'use_softmax': True,     # 使用softmax
          'temperature': 1.0,      # softmax温度
          'p_tag_walk': 0.2,       # 通过标签游走的概率
      }
  }
  
  # 兴趣点聚合配置
  INTEREST_AGGREGATION_CONFIG = {
      'top_n': 1000,              # 每个key生成前N个商品
      'time_decay_factor': 0.95,  # 时间衰减因子(每30天)
      'min_interaction_count': 2,  # 最小交互次数
      
      # 行为权重
      'behavior_weights': {
          'click': 1.0,
          'addToCart': 3.0,
          'addToPool': 2.0,
          'contactFactory': 5.0,
          'purchase': 10.0,
      },
      
      # 类型配置
      'list_types': ['hot', 'cart', 'new'],  # 热门、加购、新品
  }
  
  # Redis配置(用于存储索引)
  REDIS_CONFIG = {
      'host': 'localhost',
      'port': 6379,
      'db': 0,
      'password': None,
      'decode_responses': False
  }
  
  # 日志配置
  LOG_CONFIG = {
      'level': 'INFO',
      'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s',
      'date_format': '%Y-%m-%d %H:%M:%S'
  }
  
1721766b   tangwang   offline tasks
121
122
123
124
125
126
127
128
129
  # Debug配置
  DEBUG_CONFIG = {
      'enabled': False,           # 是否开启debug模式
      'log_level': 'DEBUG',       # debug日志级别
      'sample_size': 5,           # 数据采样大小
      'save_readable': True,      # 是否保存可读明文文件
      'log_dataframe_info': True, # 是否记录DataFrame详细信息
      'log_intermediate': True,   # 是否记录中间结果
  }