3、特征工程:艺术家声誉量化、作品属性与市场情绪

好,咱们进入第三章。这一章我称之为「从数据到特征的炼金术」。你想想看,原始数据就像一堆矿石,特征工程就是那个提炼过程。我做了这么多年量化模型,最深的体会就是:特征工程做得好,模型就成功了一半

艺术品估值这件事,说白了就是三个维度的博弈:人(艺术家)、物(作品)、势(市场)。咱们一个一个拆开讲。

3.1 艺术家声誉量化

艺术家声誉这东西,听起来很虚对吧?但咱们做量化的,就得把它变成数字。我个人习惯从两个角度切入:展览次数获奖记录

3.1.1 展览次数特征

展览次数不是简单的计数。我在项目中遇到过一个问题:一个艺术家一年参加50次群展,另一个艺术家三年只参加2次个展,哪个更值钱?

所以,我建议做以下分层处理:

  • 个展 vs 群展:个展权重至少是群展的3倍。个展说明市场认可度更高。
  • 展览级别:国际顶级画廊(高古轩、佩斯) vs 国内一线 vs 地方性画廊。我一般给权重系数是 5:3:1。
  • 时间衰减:5年前的展览和今年的展览,影响力完全不同。我习惯用指数衰减函数:weight = exp(-0.2 * years_ago)

核心公式

展览得分 = Σ(展览类型权重 × 级别权重 × 时间衰减因子)

3.1.2 获奖记录特征

获奖记录比展览更稀缺,也更值钱。但要注意,不是所有奖都有用。

我曾经踩过一个坑:把某个地方性艺术比赛的奖项权重设得太高,结果模型严重高估了那位艺术家的价值。后来我学乖了,按这个逻辑处理:

奖项级别 示例 建议权重
国际顶级 威尼斯双年展金狮奖、特纳奖 100
国家级 全国美展金奖 30
省级/行业 省级美展一等奖 10
入围/提名 各类展览提名 3

注意:获奖时间同样需要衰减。我个人建议5年以上的奖项权重直接砍半,10年以上的可以忽略不计。除非是终身成就奖那种级别的。

3.2 作品属性特征

作品本身的物理属性,是估值模型里最「硬」的部分。说白了,这些特征不太会骗人。

3.2.1 尺寸特征

尺寸和价格的关系,不是简单的线性关系。我做过回归分析,发现是对数线性关系。什么意思呢?

举个例子:一幅30×40cm的作品和一幅60×80cm的作品,面积差了4倍,但价格可能只差2倍。而到了超大尺寸(比如2米以上),价格反而可能下降,因为收藏门槛高了。

我建议这样处理:

# 尺寸特征工程示例
import numpy as np

def size_features(width, height):
    area = width * height
    log_area = np.log(area + 1)  # 加1防止0值
    aspect_ratio = width / height  # 长宽比也有意义
    
    # 尺寸分段
    if area < 0.5:  # 小于0.5平米
        size_category = 'small'
    elif area < 2.0:  # 0.5-2平米
        size_category = 'medium'
    elif area < 5.0:  # 2-5平米
        size_category = 'large'
    else:
        size_category = 'extra_large'
    
    return {
        'log_area': log_area,
        'aspect_ratio': aspect_ratio,
        'size_category': size_category
    }

3.2.2 材质特征

材质这个特征,我建议做one-hot编码或者embedding。为什么?因为不同材质的保存成本、稀缺性、市场偏好都不一样。

  • 油画:最主流,流动性好,但保存成本高
  • 丙烯:现代作品常用,价格相对亲民
  • 综合材料:估值难度大,但溢价空间也大
  • 雕塑/装置:运输和展示成本高,流动性差

我的经验:如果作品是「综合材料」,一定要看具体用了什么材料。我曾经见过一件用了金箔的作品,材质特征直接让估值翻倍。所以,材质特征最好能细分到二级类别。

3.2.3 创作年代特征

创作年代这个特征,我习惯做周期编码。因为艺术市场有明显的周期性和风格演变。

具体做法:

  1. 把年代映射到艺术史分期(比如:当代、现代、近代)
  2. 计算距离当前年份的差值
  3. 做正弦/余弦编码,捕捉周期性(比如十年一个轮回)
# 年代特征工程
def era_features(year):
    current_year = 2024
    years_ago = current_year - year
    
    # 艺术史分期
    if year >= 2000:
        era = 'contemporary'
    elif year >= 1950:
        era = 'modern'
    elif year >= 1900:
        era = 'early_modern'
    else:
        era = 'classic'
    
    # 周期性编码
    cycle = np.sin(2 * np.pi * years_ago / 10)  # 10年周期
    
    return {
        'years_ago': years_ago,
        'era': era,
        'cycle_feature': cycle
    }

3.3 市场情绪指标

这部分是最有意思的,也是我最近两年重点研究的领域。市场情绪,说白了就是「大家现在在聊什么」。

3.3.1 搜索热度

我用Google Trends和百度指数来量化搜索热度。但要注意,原始数据不能直接用。

我建议做相对热度处理:

  • 计算艺术家搜索热度 / 同期所有艺术家平均热度
  • 计算搜索热度的变化率(环比、同比)
  • 做移动平均平滑处理(7天、30天)

关键指标

相对热度 = 艺术家搜索量 / 市场基准搜索量
热度变化率 = (当前热度 - 7天前热度) / 7天前热度

3.3.2 社交媒体提及率

社交媒体数据,我主要抓取微博、小红书、Instagram。但这里有个坑:数据噪音特别大

我曾经做过一个实验:某位艺术家突然被一个网红博主吐槽,结果社交媒体提及率暴涨300%,但实际拍卖价格根本没动。所以,我建议做情感分析过滤:

# 社交媒体情绪得分
def social_sentiment_score(mentions):
    positive = 0
    negative = 0
    neutral = 0
    
    for mention in mentions:
        sentiment = analyze_sentiment(mention.text)
        if sentiment > 0.3:
            positive += 1
        elif sentiment < -0.3:
            negative += 1
        else:
            neutral += 1
    
    # 净情绪得分
    net_score = (positive - negative) / (positive + negative + neutral)
    
    # 加权提及率
    weighted_mentions = (positive * 1.5 + neutral * 1.0 + negative * 0.5) / total_mentions
    
    return {
        'net_sentiment': net_score,
        'weighted_mention_rate': weighted_mentions
    }

3.4 特征融合与知识体系

好,三个维度的特征都讲完了。但实际建模时,这些特征不是孤立的。我习惯做一个特征交叉

  • 艺术家声誉 × 作品尺寸:大尺寸作品 + 高声誉艺术家 = 超高溢价
  • 创作年代 × 市场情绪:某个年代的作品突然被市场热捧
  • 材质 × 获奖记录:获奖作品的材质偏好分析

下面这张图,是我自己总结的特征工程框架,你可以参考:

艺术品估值特征工程框架 艺术家声誉 作品属性 市场情绪 展览次数 获奖记录 时间衰减 尺寸 材质 年代 对数变换 搜索热度 社交媒体 情感分析 特征融合与交叉 估值模型输入

我的建议:特征工程不是一次性工作。我每次建模都会做特征重要性排序,看看哪些特征真正起作用。有时候你会发现,某个你花了很多心思构造的特征,其实对模型贡献很小。这时候,果断砍掉它。

嗯,这一章的内容就到这里。特征工程是个细活,急不来。你先把这三个维度的特征都构造出来,下一章咱们再聊怎么用这些特征去建模。


公众号:蓝海资料掘金营,微信deep3321