V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huzhikuizainali
V2EX  ›  机器学习

原始数据、和间接数据对模型训练效率有不同的影响么?

  •  
  •   huzhikuizainali · 2021-05-17 11:02:18 +08:00 · 1434 次点击
    这是一个创建于 1270 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设某电子商务网站希望“优质”商品排在搜索结果前面。人工选取了“好”“中”“差”三组商品各 1000 个。同时将他们的后台数据提取出来。
    原始数据,包括每个商品以下数据:
    1 、曝光量 2 、点击量 3 、访问独立用户数 4 、加购物车量 5 、收藏量 6 、订购量 7 、好评量 8 、中评量 9 、差评量…………

    间接数据,包括每个商品以下数据(假设上帝已经帮我选出了所有)
    1 、点击率=点击量 /曝光量 2 、加购率=加购物车量 /访问独立用户数 3 、收藏率=收藏量 /访问独立用户数 4 、好评率=好评量 /评价总数 5 、差评率=差评量 /评价总数 …………

    那么给模型喂训练数据时,原始数据、间接数据 哪个对模型训练最有效。有效性:可以这样评价、同样的训练数据量训练出的模型。哪个实际运行后对好坏商品的区分度最高。或者对好坏商品区分度一样的模型。哪个用的训练集最少,训练时间最短。

    以上比较,假设没有数据集的遗漏。因为原始数据集和间接数据集后面都有省略号。且排序都按照数据有效性排序。即对训练最有效的数据排在前面。例如原始数据集,假设曝光量时最有效的数据。间接数据认为点击率是最有效数据。

    直觉上觉得间接数据集应该更有效?如果这种直觉是正确的。请问有什么背后的理论依据么?比如数学层面的。或者机器学习理论或神经网络理论层面的。
    24 条回复    2021-07-02 16:29:19 +08:00
    liprais
        1
    liprais  
       2021-05-17 11:31:12 +08:00
    没看懂你想干啥
    longbye0
        2
    longbye0  
       2021-05-17 11:41:53 +08:00 via iPhone
    衍生特征会更好些,特征维度增加了,当然你可以两个都试。
    huzhikuizainali
        3
    huzhikuizainali  
    OP
       2021-05-17 12:48:31 +08:00
    @longbye0 不懂就问:衍生特征会更好些---------是什么意思?
    huzhikuizainali
        4
    huzhikuizainali  
    OP
       2021-05-17 12:48:54 +08:00
    @liprais 哪里没看懂,我进一步补充。
    longbye0
        5
    longbye0  
       2021-05-17 13:28:16 +08:00
    @huzhikuizainali 就你说的原始数据 x1,x2,构造出的衍生特征,比如 x1/x2
    huzhikuizainali
        6
    huzhikuizainali  
    OP
       2021-05-17 14:14:03 +08:00
    @longbye0 明白了。这属于数学理论或机器学习理论或数据挖掘理论的哪个分支? 或者在上述哪个理论中能找到支持的依据?
    princelai
        7
    princelai  
       2021-05-17 15:13:36 +08:00
    应该是你说的间接数据效果更好,通常特征都是原始特征+交叉特征,你的间接数据就属于人为选择的交叉特征。而且为什么不把原始数据和间接数据一起放入模型,让模型自己选择哪个有用哪个没用呢?
    greengreengo
        8
    greengreengo  
       2021-05-17 15:17:21 +08:00
    额,理论层面先不说,但是这两种数据同时用或者对比用几次,经验层面可以有结论。我直觉上觉得衍生特征不一定好用,这完全取决于你衍生的方式是否能更好的反应 标签 y 。但实际工作中衍生特征很多时候都是重要特征。理论没研究过
    FrancisQiu
        9
    FrancisQiu  
       2021-05-17 16:30:34 +08:00
    原始数据一般还是需要预处理的,保证尺度不变性
    CopenhagenCat
        10
    CopenhagenCat  
       2021-05-17 16:57:51 +08:00
    把所有特征全加进去训练一下不就好了,看看训练后的模型对每个特征重要性的排序,心里就有数了

    这个量级的数据,几分钟就能训练好吧,多测试几次比在这问有用多了

    原始特征和衍生特征,谁更重要得看具体数据场景,好像没有定论谁更重要
    huzhikuizainali
        11
    huzhikuizainali  
    OP
       2021-05-17 17:46:43 +08:00 via iPhone
    @princelai 谢谢回复。我对你说的“ 通常特征都是原始特征+交叉特征” 这个特征觉得既陌生又熟悉。看过一些视频。提取特征值什么的好像涉及到线性代数的知识(我记得不太准确)。而在这里“原始数据变成了原始特征。间接数据变成了交叉特征。怎么这么简单?那还用线性代数干什么呢?究竟应该怎么理解“特征”还请指教
    huzhikuizainali
        12
    huzhikuizainali  
    OP
       2021-05-17 17:49:49 +08:00 via iPhone
    @CopenhagenCat 谢谢你的回复。“没有定论”也是一个很重要的结论:)
    关于“ 原始特征和衍生特征,谁更重要得看具体数据场景”有没有涉及这个问题的书或者文章,视频推荐?对数学要求不高的更好。
    huzhikuizainali
        13
    huzhikuizainali  
    OP
       2021-05-17 17:52:21 +08:00 via iPhone
    @princelai 单纯以结果判断优劣会不会陷入过拟合的困境?不过也许过拟合跟这个没关系?
    我是不是不应该用人的逻辑去推测机器学习的逻辑?
    princelai
        14
    princelai  
       2021-05-17 17:53:03 +08:00
    @huzhikuizainali #11 我觉得是你记错了,如果是特征降维 /SVD 这些可能会用到矩阵特征值,你的这个特征和那个不是一个东西,原始数据处理要么是增加特征,可以是交叉 /衍生出来的,要么是标准化 /归一化,剩下线性和非线性的拟合部分交给模型去做。
    huzhikuizainali
        15
    huzhikuizainali  
    OP
       2021-05-17 17:58:38 +08:00 via iPhone
    @princelai 谢谢指教。多谢
    princelai
        16
    princelai  
       2021-05-17 17:59:38 +08:00
    @huzhikuizainali #13 当然不是单纯用结果去判断,你要根据你的训练误差,测试误差,去判断你的特征和模型的好坏,所以让你把所有特征都放进去,让模型自己 train 出来,误差也分为多种,回归和分类的,AUC,RMSE,MAPE,交叉熵。如果是做特征选择,那通常是方差算出来的,比如 chi2,一般会根据你选择的函数结果也不同。
    limitlessun
        17
    limitlessun  
       2021-05-18 12:29:52 +08:00
    在比较简单的机器学习模型中是肯定有影响的,Kaggle 的房价预测里有一个例子,原始数据包含了房屋面积和上次出售价格,如果人为地添加单位面积价格=出售价格 /面积这一特征,模型的准确率会提高很多。
    神经网络不太确定,对于 LZ 定义的纯数值计算得到的"间接数据"个人倾向于没有影响,因为神经网络理论上可以逼近任何函数,所以"间接数据"应该可以被学习到。
    神经网络一般用于图像、视频和文本,会采用数据增强的形式,例如随机裁剪或添加噪声,如果把这也看做一种形式的"间接数据",那么它们可以增强网络的泛化能力,减小过拟合的影响。
    huzhikuizainali
        18
    huzhikuizainali  
    OP
       2021-05-18 12:43:03 +08:00
    @limitlessun 谢谢回复。请问“因为神经网络理论上可以逼近任何函数,所以"间接数据"应该可以被学习到。”---------这会以大量增加训练数据量为代价么?比如获得同样质量的模型需要增加指数级的训练数据量。
    limitlessun
        19
    limitlessun  
       2021-05-18 14:47:10 +08:00 via iPhone
    @huzhikuizainali 我不太明白你的问题,你是指 dataset 中的样本数量还是说训练的迭代次数?神经网络有很多种不同的结构,没法一概而论
    huzhikuizainali
        20
    huzhikuizainali  
    OP
       2021-05-18 20:51:35 +08:00 via iPad
    @limitlessun 我的意思。A,全部用原始数据,B,全部用间接数据 C,原始数据+间接数据混用。会不会出现 A 方案需要 30000 条数据才能训练好模型。而 B 方案数据用 15000 条数据就可以训练好模型? C 方案用 10000 条数据就可以训练好模型。

    或者,并不存在以上必然结论。有可能 A 方案需要的数据量最少。要试了才知道?
    limitlessun
        21
    limitlessun  
       2021-05-18 22:29:43 +08:00 via iPhone
    @huzhikuizainali 这个问题太广泛了,机器学习+深度学习的方法和模型那么多种,肯定不能一概而论,另外所谓的“间接数据”也没有一个明确定义。
    你主楼中数值计算得到的“间接数据”,这方面我不太熟悉,我的看法是其中部分会起正作用,另外一部分可能没有作用或者起到负作用。同时要注意引入新的特征相当于增加了特征的维度,而高维度的输入可能导致学习难度加大。这一块你可以搜搜“kaggle magic feature”。
    如果是我举例的神经网络中对图像做的数据增强,那么绝大多数情况都是每个 epoch 对 sample 进行随机数据增强,相当于人为引入了一些噪音,从而提高了模型的泛化能力。
    个人理解是,假设你引入的间接数据都是有用的,并且假设你增加的数据量都是 clean 的,那么两者都会提高模型的泛化能力,一般做 ablation study 都是只改变一个条件,你同时改变两者去比较意义不大。
    我建议你针对具体问题去搜一些 paper,数据处理相关应该是偏机器学习领域的,我确实了解的不多。
    huzhikuizainali
        22
    huzhikuizainali  
    OP
       2021-05-18 22:53:11 +08:00
    @limitlessun 谢谢你的回复。很有帮助。
    heavenToothpaste
        23
    heavenToothpaste  
       2021-06-07 00:59:15 +08:00
    通过你的描述我认为,原始数据和间接数据其实是指的特征维度的不同的关系,可以通过分析数据的特征之间的关系来解答你的问题:
    1.当某个维度特征是其他维度特征的线性组合的时候,在特征空间上这个维度特征是和其他特征线性相关的,也就意味着他并没有扩展特征空间,这种特征对于数据来说是可以替代的,对于大多数学习算法来说,都是可以被很好地学习的,而其数据本身如果只是单纯由已知的数据进行计算得到的话,那么其对于一般不会提升模型性能。(意味着其是冗余的);但是如果该数据是并非来自已知的数据,那么就可以为模型提供新的信息,这个信息来自于已知特征维度之间的线性或者非线性组合关系。
    2.如果某个维度特征和其他维度特征是非线性的,甚至高度非线性的,又或者是独立于其他维度特征的,那么就会带来新的信息,这时候是对于模型来说是有好处的,有可能能够提升模型的性能。
    我认为可以参考像是核方法一类的理论,都是将数据投射到更高的维度上,使得线性可分的可能性更大,从而让模型更容易找到答案。
    huzhikuizainali
        24
    huzhikuizainali  
    OP
       2021-07-02 16:29:19 +08:00
    @heavenToothpaste
    谢谢你的回复。刚看了卷积神经网络的一个小视频。不知道理解的对不对:卷积层实际上就是一个“过滤器” ,即“当某个维度特征是其他维度特征的线性组合的时候,”卷积层就把这个维度“优化掉”。这样就大大减轻了后面的神经网络层处理这些“冗余”维度数据的“压力”。达到同样的识别准确率只需要比较少的神经网络层。或者是需要的训练集更少。
    -------------------不知道这样的理解是否恰当?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 13:39 · PVG 21:39 · LAX 05:39 · JFK 08:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.