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 创作年代特征
创作年代这个特征,我习惯做周期编码。因为艺术市场有明显的周期性和风格演变。
具体做法:
- 把年代映射到艺术史分期(比如:当代、现代、近代)
- 计算距离当前年份的差值
- 做正弦/余弦编码,捕捉周期性(比如十年一个轮回)
# 年代特征工程
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