在日益丰富的音乐应用场景下,实现基于音乐情感的音乐检索、音乐分类和精准推送愈发重
要,而一曲音乐在不同片段的情感多变性却使得音乐情感分析任务变得十分复杂。传统的以
人工方式对音乐进行情感分析费时费力,简单地使用单标记分类技术也无法准确地分析出音
乐所蕴含的复杂而多样的情感,然而,其复杂性与多变性却十分契合多标记分类技术。
针对此问题,**基于多标记分类技术,在依据音乐的物理信息提取的带有情感标记的数
据集上,先利用信息熵的思想筛选原始音乐特征空间中关键的数值型向量特征,再利用聚类
方法进行特征转换,并完成数据的标准化,从而获得一组原始数据空间对应的映射空间,实
现音乐元数据的降维操作,最后再以此导入基本分类器进行音乐情感分析。**该方法有着完
备的理论支持,且实验结果表明,基本分类器在映射空间上的多标记分类表现整体上优于原
始数据空间。
Usage
GUI.py 是控制台界面实现程序。
main.py 是主函数。
musicLoad.py 是导入音乐数据集以及包含所有运算的实现的程序。
使用时只需要利用 IDE 运行 main.py 即可。
Algorithm
Feature Selection
先借助聚类算法对每一个特征进行特征内部的分类,将数值型的特征转换为类别型的特
征,然后据此计算每一个特征与标记集的信息增益,并在归一化和正态分布化后设定阈值,
若最终某一特征对于标记集的信息增益小于阈值则将其判定为不相关并将其剔除,否则将该
特征保留。
Feature Transform
实行特征转换的目的是,将元数据集在完成上面介绍的特征选择的基础之上进一步优化
特征和标记之间相关性的表现,获得更好的多标记分析结果。算法的核心思想是:首先根据
每个实例所属的标记情况,分别为每个标记划分正例集合 Pk 和负例集合 Nk,然后对每个标
记的正例集合 Pk 和负例集合 Nk 利用 K-Means 聚类分别求出 m 个聚类中心,接着将实例与
这 2m 个聚类中心的欧式距离作为新的特征,完成特征转换,为了适应线性二分类器的工作
还需要将标记的取值进行标准化,最后将特征转换后的新特征与标准化后的标记拼接起来,
得到最终的输出数据集 Dk*。
Practice
Dataset
Emotions:https://mulan.sourceforge.net/datasets-mlc.html
Basic Classifiers
为了完成了音乐情感分析的多标记分类任务,需要对 emotions 数据集完成上述特征选
择和特征转换,然后使用一些基本分类器实现最终的分类。在这里采用了多标记学习中常见
的几种分类器:
KNN:初始 k 近邻设置为 10,距离度量采用欧式距离,临近点的权重根据距离变化,距离
当前对象较近的点权重比距离较远的点大,k 的值可由用户在 GUI 中自定义。
朴素贝叶斯分类器:由于样本特征大部分是连续值,故在此采用高斯核。