Question 1000282: K-means怎么选K?
统计/机器学习 无监督学习 开放问题我们都知道K-means的主要缺点就是在做聚类前,必须要先确定K,也就是样本里聚类的个数。一般有哪些方法呢?我知道手肘法,但是也没有明白这个手肘到底怎么用。
Answer
对于K-means中K的选择,通常有四种方法。
- 按需选择
- 观察法
- 手肘法
- Gap Statistics方法
一、按需选择
简单地说就是按照建模的需求和目的来选择聚类的个数。比如说,一个游戏公司想把所有玩家做聚类分析,分成顶级、高级、中级、菜鸟四类,那么K=4;如果房地产公司想把当地的商品房分成高中低三档,那么K=3。按需选择虽然合理,但是未必能保证在做K-Means时能够得到清晰的分界线。
二、观察法
就是用肉眼看,看这些点大概聚成几堆。这个方法虽然简单,但是同时也模棱两可。
左上角是原始点。右上角分成了两类。左下角是三类,左下角是四类。至于K到底是选3还是选4,可能每个人都有不同的选择。
观察法的另一个缺陷就是:原始数据维数要低,一般是两维(平面散点)或者三维(立体散点),否则人类肉眼则无法观察。对于高维数据,我们通常利用PCA降维,然后再进行肉眼观察。
三、手肘法
手肘法本质上也是一种间接的观察法。这里需要一点K-Means的背景知识。当K-Means算法完成后,我们将得到K个聚类的中心点$M_i$, $i=1,2,\cdots,K$。以及每个原始点所对应的聚类$C_i$,$i=1,2,\cdots,K$。我们通常采用所有样本点到它所在的聚类的中心点的距离的和作为模型的度量,记为$D_K$。
$$D_K=\sum_{i=1}^K\sum_{X\in C_i}\|X-M_i\|$$
这里距离可以采用欧式距离。
对于不同的K,最后我们会得到不同的中心点和聚类,所有会有不同的度量。
我们把上面的例子用不同的K去计算,会得到不同的结果。把K作为横坐标,$D_K$作为纵坐标,我们可以得到下面的折线。
很显然K越大,距离和越小。但是我们注意到K=3是一个拐点,就像是我们的肘部一样,K=1到3下降很快,K=3之后趋于平稳。手肘法认为这个拐点就是最佳的K。
手肘法是一个经验方法,而且肉眼观察也因人而异,特别是遇到模棱两可的时候。相比于直接观察法,手肘法的一个优点是,适用于高维的样本数据。有时候人们也会把手肘法用于不同的度量上,如组内方差组间方差比。
四、Gap Statistic方法
这个方法是源自斯坦福几个machine learning大牛的paper Estimating the number of clusters in a data set via the gap statistic 。
这里我们要继续使用上面的$D_K$。Gap Statistic的定义为
$$Gap(K)=\text{E}(\log D_k)-\log D_k$$
这里$\text{E}(\log D_k)$指的是$\log D_k$的期望。这个数值通常通过蒙特卡洛模拟产生,我们在样本里所在的矩形区域中(高维的话就是立方体区域)按照均匀分布随机地产生和原始样本数一样多的随机样本,并对这个随机样本做K-Means,从而得到一个$D_K$。如此往复多次,通常20次,我们可以得到20个$\log D_K$。对这20个数值求平均值,就得到了$\text{E}(\log D_K)$的近似值。最终可以计算Gap Statisitc。而Gap statistic取得最大值所对应的K就是最佳的K。
用上图的例子,我们计算了K=1,2,..9对应的Gap Statisitc.
Gap Statistic的优点是,我们不再需要肉眼了。我们只需要找到最大gap statistic所对应的K即可。所以这种方法也适用于“批量化作业”。如果我们要做1000次聚类分析,不需要肉眼去看1000次了。所以我个人也倾向于这种方法。
类似于回归里的AIC,K Means里的AIC也可以用来选K。
$$AIC=\text{argmin}_K RSS_K + 2pK$$
其中$RSS_K$是在聚类个数为$K$的时候,root of sum of squares,$p$是特征的个数。
我们选$AIC$最小的那个$K$
可以用MeanShift,它不需要预设cluster的个数,而是自己学习cluster的个数。
相反的,可以先利用MeanShift得到cluster个数,再用K Means。
定K一直是聚类算法的一个研究方向,k-means作为经典算法, 也是解决不了这个问题,如上面那位大神的讲解,之外,还可以根据adjust-R²,CCC值和伪F值判断,都是越大越好,画图来分析寻找合理的聚类个数,如图,进行了6次分群,类数为:3,4,5,6,7,8,最终选择6类,因为在这个值的时候,各项指标已经很好了,后面增加的不是很大,按照奥卡姆剃刀原理,另外,还可以看业务,假如聚类过多,每多一类,那造成的商业成本是很高的,要为每一类做营销方案,每增加一类,成本上升,综合来选,其实这个定k就是结合算法结果和业务,算法只能给我们准确的模型,但是给不出正确的模型。
RPCL算法可以了解一下,可以认为某种程度上不需要设定K,而是自动选择合适的K。
Lei Xu, Adam Krzy˙zak, and Erkki Oja. Rival penalized competitive learning for clustering analysis, rbf net, and curve detection. Neural Networks, IEEE Transactions on, 4(4):636–649, 1993.
在这篇论文中有用到RPCL算法:
Automatic False Positive Canceling for Indoor Human Detection, ICIA2017
以及,我比较naive的重现这篇论文的代码(部分涉及RPCL算法):https://github.com/zchrissirhcz/dfp
补充一个方法,silhouette score
具体可以参考这篇文章以及sklearn里的例子
有一种叫X-mean的方法可以从2个Cluster开始自动develop新的cluster,直到总体的BIC不能改善。Paper link
Question 1000301: 推荐开放数据库
统计/机器学习 开放问题最近在自学machine learning,想找点真实数据练练手,大家能推荐几个免费的开放的数据库吗?
最好是比较全的那种,想练练回归、分类、聚类的那些模型。
谢谢了!
Answer
加州大学尔湾分校的公开数据库(这个是最全的!) UCI Machine Learning DataBase
加州大学河滨分校的时间序列数据库 UCR Time Series Classification Archive
国家数据(咱们自己的) 国家数据
Kaggle数据竞赛 Kaggle数据集
上海数据库也不错
1 -Kaggle数据集
每个数据集都有对应的一个小型社区,你可以在其中讨论数据、查找公共代码或在内核中创建自己的项目。该网站包含大量形状、大小、格式各异的真实数据集。你还可以看到与每个数据集相关的“内核”,其中许多不同的数据科学家提供了笔记来分析数据集。有时在某些特定的数据集中,你可以从笔记中找到相应的算法,解决预测问题。
2 -亚马逊数据集
该数据源包含多个不同领域的数据集,如:公共交通、生态资源、卫星图像等。它也有一个搜索框来帮助你找到你正在寻找的数据集,另外它还有数据集描述和使用示例,这是非常简单、实用的!
3- UCI机器学习库:
网址:archive.ics.uci.edu/ml/datasets.html
这是加州大学信息与计算机科学学院的一个数据库,包含了100多个数据集。它根据机器学习问题的类型对数据集进行分类。你可以找到单变量、多变量、分类、回归或者是推荐系统的数据集。UCI的某些数据集已经更新完毕并准备使用。
4-谷歌的数据集搜索引擎:
网址:toolbox.google.com/datasetsearch
在2018年末,谷歌做了他们最擅长的事情,推出了另一项伟大的服务。它是一个可以按名称搜索数据集的工具箱。谷歌的目标是统一成千上万个不同的数据集存储库,使这些数据能够被发现。
5 -微软数据集:
2018年7月,微软与外部研究社区共同宣布推出“微软研究开放数据”。
它在公共云中包含一个数据存储库,用于促进全球研究社区之间的协作。另外它还提供了一组在已发表的研究中使用的、经过整理的数据集。
6-Awesome公共数据集:
网址:github.com/awesomedata/awesome-public-datasets
这是一个按照主题分类的,由社区公开维护的一系列数据集清单,比如生物学、经济学、教育学等。这里列出的大多数数据集都是免费的,但是在使用任何数据集之前,你应该检查相应的许可要求。
7-计算机视觉数据集:
如果你从事图像处理、计算机视觉或者是深度学习,那么这应该是你的实验获取数据的重要来源之一。
该数据集包含一些可以用来构建计算机视觉(CV)模型的大型数据集。你可以通过特定的CV主题查找特定的数据集,如语义分割、图像标题、图像生成,甚至可以通过解决方案(自动驾驶汽车数据集)查找特定的数据集。
8-SofaSofa数据集:
SofaSofa上的朋友都知道吧
综上所述,从我所观察到的情况来看,越来越多的用于研究机器学习的各种数据集变得更容易获取,维护这些新数据集的社区,也将不断地发展,使计算机科学社区能够继续快速创新,为生活带来更多创造性的解决方案。
Question 1000306: 机器学习中的奥卡姆剃刀原理是什么意思
统计/机器学习 开放问题在机器学习,奥卡姆剃刀原理是什么意思?怎么理解?有哪些具体的例子?
Answer
这个本来是一个哲学原理,大概意思是“差不多的话就别搞太复杂了”。
对于机器学习来说,如果两个模型的预测能力差不多,就选那个简单的吧,不要搞事情。其中原因有二,简单的模型往往解释性更好;复杂的模型更有可能过拟合。
Occam's razor的意思是对于两个模型,在其他条件等同的情况,哪个模型能够更简洁地解释数据,哪个就更好。
由Occam's razor引申出一种叫做Occam Learning模型。它被数学抽象化,这种模型既能有预测性,另外它的简洁性(数学公式定义)小于一个关于数据真实分布本身的简洁性的式子。那么我们就说这个真实数据本身是Occam learnable的。具体可以参考维基。
花书Deep Learning里是这么说奥卡姆剃刀的
This principle states that among competing hypotheses that explain known observations equally well, we should choose the “simplest” one.
意思是说,两个模型如果在训练集上的表现一样,那么我们就选择结构更简单的那个模型
- 奥卡姆剃刀:如无必要,勿增实体。
- 剃刀机器学习:在两个模型效用相似的情况下选择简单的那个,过拟合概率小。
- 理论1:VC Dimension,即不同模型的分类能力是不同的,比如一条直线一定能分清二维平面的三个非共线的点,但矩形能分清4个点。
- 实践1:有些模型能喂很多数据,即数据量不断增加的时候,效果依然会编好,但有限模型再喂数据,效果会不明显,这和理论1有关。
- 理论2:数学大神证明了分离能力越强的模型,最后的偏差越大。
- 实践2:理论2就是机器学习奥卡姆剃刀的证明。
奥卡姆剃刀就是一个正则化的大刀!
例子,比如LASSO,Ridge,还有决策树里的剪枝,等等。
奥卡姆剃刀原理的形式化的表达是最小描述长度(MDL)。最小描述长度最小的模型就是最佳的模型。
Question 1000347: 建立一个预测模型的流程是什么
统计/机器学习 开放问题建立一个预测模型,或者更广来说,一个机器学习模型的一般流程是什么?分哪几个关键步骤?
Answer
在建立模型之前,首先要知道模型的目的是什么,我需要的数据是哪些,我能够得到的数据又是哪些。假设这些问题都已经解决了。下面我们就可以开始建模了。
1、载入数据并了解数据
2、清洗数据
3、选择模型评价标准
4、选择模型
5、特征工程
6、验证模型,如果不满意模型的话,重新从第5步或者第4步开始
7、完成建模,进行预测
机器学习的建模并没有固定的套路,但是基本上上面几个步骤都会进行,也许顺序会不同
Question 1000359: 人类的第一个机器学习算法是什么?
统计/机器学习 开放问题人类第一个机器学习算法是什么?是哪一年诞生的?
Answer
@KingBug 和 @MrMath 说的其实就是朴素贝叶斯。我也觉得朴素贝叶斯很可能是人类真正意识到的第一个机器学习算法(虽然那时没有机器,也没有算法这个概念,也没有任何理论依据)。
根据维基百科机器学习的发展时间线,
- 1763年贝叶斯的论文出现了贝叶斯定理的雏形。这算是机器学习的开端。
- 1805年,勒让德描述了最小二乘法,为日后的线性回归奠定了基础。
- 1812年,拉普拉斯在1763年贝叶斯工作的基础之上完成了贝叶斯定理。贝叶斯定理为朴素贝叶斯,乃至贝叶斯网络提供了理论依据。
- 1913年,马尔科夫为了分析诗歌的词句,使用了一种日后被称为马尔科夫链的工具。
- 此后的机器学习进入了快车道,1951年第一个神经网络模型,1960年第一个决策树模型,1967年第一个k近邻模型,等等等。
古人观天象,看动物,判断地震?
Question 1000442: 除了PCA,还有什么降维的方法?
统计/机器学习 数据降维 特征选择 开放问题才疏学浅,平时只用过PCA降维,大家还有什么其他的降维方法吗?
Answer
1. High Correlation
如果两个feature的correlation大于某个阈值(自己设定的,比如0.3),就删掉其中一个。
2. Low variance
如果一个feature的数据方差小于某个阈值(自己设定),就把它删掉。
3. Missing
如果这一列有很多missing,就把它删掉。
4. Random Forests
Random Forests训练之后,可以返回所有特征的重要性,我们可以选择重要性最高的一部分特征,比如20%。
5. Stepwise selection
逐步选择特征,可以向前选择,也可以向后消去。
6. Random Projection
类似于PCA,但是这个投影是随机的,而非像PCA那样是正交的。
7. AutoEncoder
类似于word2vec,我们只提取神经网络的中间层的结果作为降维的结果,当激活函数都是线性时,效果与PCA相似。
如果你有response的话,还可以用partial least square. https://en.wikipedia.org/wiki/Partial_least_squares_regression
然后其他的降维算法可以参考scikit-learn的roadmap : http://scikit-learn.org/stable/tutorial/machine_learning_map/
还有t-SNE
补充一下,还有feature hashing
自编码器
流形学习里有一些降维方法,比如PCA和Multidimensional scaling (MDS,多为尺度)。
线性判别分析:
PCA(主成分分析)和LDA(线性判别分析)有很多的相似点,其本质是要将初始样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。
推荐学习链接:https://www.zhihu.com/people/wang-he-13-93/posts
卷积算吗
- PCA
- LDA
- SVD
autoencoder,其实pca也算是autoencoder的一种特殊情况吧
Question 1000447: 在线算法(online algorithm)是什么意思?
统计/机器学习 开放问题经常看到在线算法(online algorithm)这个词,比如说“XXX的另一个优点是它是在线算法”,但是我理解得比较模糊,在线是不是就是计算比较快的意思?有准确一点、具体一点的定义吗?
Answer
离线算法是需要输入全部数据之后再开始训练模型。比如说一开始你有1万行数据,你用这个数据训练出了一个模型,当你又有了1千行新数据后,你需要把这1千行和原来的1万行数据合并起来,再重新训练模型。
在线算法则不需要重新训练,在线算法可以按批次接收数据、改进模型。比如说一开始你有1万行数据,你用这个数据训练出了一个模型,当你又有了1百行新数据,你不需要把这些新数据与原数据合并,你可以只利用这100行数据对原先的模型进行调整(不是从头重新训练),再来1百行数据,又可以利用新的数据对模型进行调整。
在线算法的一个巨大优势是节约空间。当数据量特别大的时候,我们可以一部分一部分的训练,而不是直接在整个数据集上训练。
从机器学习的角度来说,offline(或者说batch)learning就是用所有的数据进行训练模型,当有新训练数据进来的,需要把新数据和旧数据合并起来,重新训练模型,原来的模型就没有用了。
online learning就是当新训练数据进来,我们不需要放弃原来的模型,也不需要把新数据和旧数据合并成训练集,我们可以在原来的模型的基础之上,用新的数据集对老模型进行一些修改更新。
总体来说,online learning更省事,更符合有流数据需求的场景。
附上一张网图,供大家欣赏。
Question 1000488: 如何理解VC dimension?
统计/机器学习 开放问题怎么理解VC dimension?看了一些资料,依然不是很明白
Answer
楼上的回答有一点不太正确,并不需要随意给出n个样本都可以正确分类。实际上,只要能找出某一种n样本,hypothesis class H 可以正确分类这个样本,那么我们就说VC 维度至少是n。直到我们确定任意的n+1样本都无法被正确归类,我们就得出结论VC维度是n。
实际上,如果hypothesis class H 是有限的,那么不用VC维度也可以得到一个对于generalization error的上界。但是对于无限的hypothesis class,我们用VC 维度来描述这个class的分类能力。可以想象,如果两个不一样的hypotheses,他们在某个样本空间上是无法被区分开,那么即使这两个hypotheses是不一样的,我们也并不需要去考虑他们的区别。换句话说,VC维度是一种更加精确的描述H能力的维度 (比起简单的数H有多少的hypotheses)。
VC维度是以Vapnik和Chervonenkis的名字缩写命名的。
VC维度描述的是一个模型的复杂程度。
对于一个二元分类器F,F的VC维度等于F能够以0误差训练的训练集样本的数量。换句说说,如果F的VC维数是n,那么随意给出n个样本点以及它们的标签,F总能以100%的正确率去学习这个训练集,也就是训练误差为0。
比如1-近邻算法的VC维度是无穷大,因为对于任何n,1-NN的训练误差总是0。
Question 1000512: 机器学习如何快速入门?
统计/机器学习 开放问题有什么推荐的教材吗?
Answer
如果只是作为兴趣爱好、想了解个大概
可以看看维基百科
如果想只是学习一些基本原理,想利用现成的模块实现一些算法
可以上一遍Andrew Ng的网易公开课
在python sklearn的模块中,所有的算法都有现成的实现方法。
如果想再深入一些,就必须看看教材了
比如机器学习系统设计(Richert,Coelho 中译版)
An Introduction to Statistical Learning with Applications in R(英文)
Elements of statistical learning(英文)
如果想更深的学习并且跟上潮流,除了钻研机器学习算法教材,还要涉及到数值计算、矩阵计算、凸优化、概率论、统计推断,并且经常阅读新论文。
Question 1000655: 机器学习+计算机网络
统计/机器学习 开放问题Answer
我仅仅略知一二,但愿对你有帮助。
现在机器学习在计算机网络中比较多是在流量和安全方面的应用。
流量上包括流量的预测、异常流量的检测、异常流量的预测、异常流量的分类、等等。
安全包括系统的监视、系统入侵的判断、系统入侵的预测、等等。
下面是一些论文,供你参考
A method for classification of network traffic based on C5.0 Machine Learning Algorithm
Machine Learning Approaches to Network Anomaly Detection
A hybrid machine learning approach to network anomaly detection
Automated Traffic Classification and Application Identification using Machine Learning
Intrusion detection by machine learning: A review
Outside the Closed World: On Using Machine Learning For Network Intrusion Detection
Question 1000676: 机器学习算法的鲁棒性是什么意思?
统计/机器学习 开放问题机器学习算法的鲁棒性是什么意思?是指预测性好还是稳定?
关于鲁棒性有定义吗?
Answer
机器学习算法鲁棒性并没有严格的量化的定义。鲁棒性,robustness,顾名思义,就是健壮的意思。
一个人健壮,就是小毛小病,不碍事;不健壮,就是病来如山倒。一个人健壮,就是晴天好,雨天好,冬天好,夏天好,不会突然莫名其妙地不舒服了。
机器学习模型的健壮也是类似的意思。主要是两个方面。
1. 小毛小病可以看作是数据中的错误点、或者误差。难免的,训练集中常常有些数据是有错位的,类似的,预测样本中也有可能有一些错误。一个具有鲁棒性的机器学习模型能够不被这些训练集中的错误数据影响,依然能绕过浮云看本质。
2. 常常训练样本和预测样本的分布不大相同,一个具有鲁棒性的模型就是即使当测试集的数据分布与训练集数据分布比较不同的时候,模型也能给出较好的预测结果。鲁棒性模型不光是“夏天”好,“冬天”也要好。
Question 1000707: Bagging是什么意思?
统计/机器学习 开放问题在机器学习算法中,经常看到Bagging,比如Tree Bagging。根据Bagging的字面直接翻译应该就是包裹的意思。
在机器学习的领域中,Bagging到底是什么意思呢?
Answer
Bagging并不是Bag的动名词形式。Bagging是Bootstrap aggregating的缩写。中文意思是自助聚合。
Bagging是机器学习中一种常用的降低预测方差、提高稳定性的方法。
具体步骤是:
1、从训练样集中有放回的选取n个样本,然后把这n个样本作为训练集并训练模型。(bootstrap的过程)
2、把第1步重复m次,从而得到m个不同的预测模型。
3、利用这m个模型对测试集进行预测,将m个预测结果取平均值。(aggregating的过程)
常见的Tree Bagging就是将多个决策树的结果平均后的模型。
就是随机抽样 ---> 训练 --->平均或投票的方式得到最终结果
集成学习大致可以分为两类
- 个体学习器间存在强依赖关系,必须串行生成序列化方法
代表:Boosting
- 个体学习器间不存在强以来关系,可以并行化的方法
代表:Bagging和随机森林
步骤:
1.通过bootstrap方法又放回的抽取n个样本
2.将第一步骤进行m次,得到m个不同的训练集进行训练
3.对m个训练集进行求平均
从偏差-方差角度来看:Bagging关注的是降低方差
Question 1000708: 为什么过拟合不好?
统计/机器学习 开放问题很多时候,我们用各种方法来防止过拟合。我的疑惑是过拟合为什么不好?有哪些缺陷?
Answer
我理解的过拟合就是因为模型太复杂,太精细了,不仅学习了训练集的真实分布,还学习训练集中的随机噪音。而这个噪音就是机器学习过程中的干扰项。避免学习这些噪音就是防止过拟合。
通常来说,过拟合的模型的训练误差相对很小,测试误差相对很大;而好的模型的训练误差和测试误差都适中。
贴几个过拟合的例子。
这是个二元分类的问题。黑色是合理的分界线,绿色就是过拟合的分界线。
下面是一个回归的例子。黑色的线是看起来比较合理的回归线,而蓝色的线看起来过拟合。
过拟合是在用训练集进行模型训练的时候,为了在训练集上取得很好地效果,调整各种参数使得模型在训练集上能达到特别好的效果,此时模型会根据训练集的特点得出各种规则去拟合训练集来提高模型的效果。而训练集其实只是整个数据集中的一部分,其包含两部分特征,一部分是整个数据集共有的特征,一部分是训练集自身共有的特征,当过拟合时,模型学到的是这两部分的特征,此时拿模型去在测试集上测试时,因为测试集不包含训练集自身共有的特征,所以测试集在模型上就不会取得很好的效果。因此需要防止过拟合。
转一个网上的段子:
“不知道大家在学车的时候教练教倒库和侧方停车的时候有没有教一串口诀:类似于在车窗的XX框切XX杆的时候打满,切XX的时候回正等等,这个口诀可以顺利让你通过科目二,然而换个车或者换个场地,你就发现并没有卵用... 我们说这只是overfit了某个车和某个场地(训练数据),在新的测试集(新车新场地)上的泛化性能为0。”
一个“培养出马路杀手的”过拟合的教练,怎么能好呢!
我们做机器学习的一个目的就是预测
对训练集所做的拟合都是在已知目标变量的基础上进行的,拟合的再好,这些都是已经知道的
最终的目的就是为了预测,就是能够对未知的事情进行预测
而 过拟合恰恰最大的缺陷在这里,已知的拟合的好,未知的却不能很好预测
所以当然要解决这个问题
通俗的讲,过拟合的话你训练处理的模型很难适用你训练集以外的数据,因为这个模型已经成为了为你使用的训练集量身打造的模型了,其他数据就不适用了。
一个过拟合的模型,它的泛化程度通常不好。也就是在一个数据集上表现的抢眼,在其他数据集上表现就不好了,尽管这些数据集都可能是来自同一个总体分布。
这个问题也不能一概而论。
举个网上之前的例子“打个比方,如果期末考试题就是平时的作业,那我们把平时的作业都背一遍就是最好的方式,而这就是过拟合。如果期末考试不考平时作业,全是新题,那么这个时候就不能只背平时的作业,还要充分理解这门课的知识,掌握如何推理解题的技巧。”
所以过拟合好坏与否,完全取决于场景。如果应用场景依靠死记硬背就能搞定,那过拟合反倒是好的。
在拿过去预测未来的应用场景下,有的时候过拟合不一定不好,要根据实际情况来看。
比如你要训练一个帅哥识别模型。你的训练集里的帅哥都是吴彦祖。如果模型过拟合,预测其他人都不是帅哥。。
Question 1000751: bias-variance tradeoff是什么意思?
统计/机器学习 开放问题很多模型都提到bias-variance tradeoff,这个到底怎么理解?
Answer
bias(偏差)一般都是由于模型中错误的前提假设导致的。高bias通常意味着模型欠拟合。
variance(方差)一般是由于模型对数据集中的噪音的敏感导致的。高variance通常意味着模型过拟合。
bias–variance decomposition(偏差-方差分解)是将模型中的误差(error)分解成bias和variance两部分
$$\text{Error}=\text{Error}_\text{bias}+\text{Error}_\text{var}$$
很明显,如果在Error不变的情况下,如果降低$\text{Error}_\text{bias}$,必然会导致$\text{Error}_\text{var}$变大;反之亦然。这就是所谓的bias-variance tradeoff。
我们在建立模型的时候,希望这个模型又要精度高,又要方差小,但是通常很难两全其美。所以我们要在这两者之间权衡。
比如说一个人找两个大师去算命。大师A说,你在20岁到80岁之间会发一次大财,这是你这辈子最大的一次财运;大师B说,你在41、2岁的时候会发一次大财,这是你这辈子最大的一次财运。过了几十年之后,你在45岁的时候发了人生一笔横财。那么回过头想,哪个大师说得准呢?
回到机器学习上面,举个例子。对于kNN来说,k选的小,可以让bias变小,但是variance会变大;k选大了,bias会大,但是variance会变小。所以k过大,k过小都不好,就像上面的大师A和B。让bias和variance达到平衡,这样的模型才比较好。
这个英文博客有兴趣的话可以看看bias variance tradeoff。
Question 1000754: 自然语言处理中的分词是什么意思?
统计/机器学习 自然语言处理 开放问题自然语言处理中的分词是什么意思?能否请大神举几个简单的例子。抱拳!
Answer
分词就是把一句话里的词按照意义或者词性分开。
今天我吃肯德基 》》今天 / 我 / 吃 / 肯德基
机器学习是一门高深的学问 》》 机器学习 / 是 / 一门 / 高深 / 的 / 学问
jieba是比较常用的中文分词包,支持各种语言。
Question 1000848: 维数大于样本数的问题
统计/机器学习 数据预处理 数据降维 开放问题一般说来数据的维数太大,会有所谓的维数灾难。
如果数据集的维数(列数)远远大于样本数(行数),有什么好的解决办法吗?
Answer
是的,dimensionality curse就是说的这类问题,特征比样本多,p >> n。
这个问题是统计机器学习中的经典问题,也就是降维问题。
你可以使用AIC或BIC来筛选特征。
也可以使用一些正则化模型,比如LASSO来进行降维。
如果使用随机森林或者gbdt的话,即使维数多于样本数,也不会是大问题,而且你可以利用模型返回特征的importance来进行特征选择,起到降维的作用。
试试lasso以及group lasso
另外naive bayes和cart也很用,虽然没有直接降维,但是模型本身不会太被高维度所影响
如果使用决策树或者随机森林的话,维数即使很大,影响也不会太大吧
Question 1000854: 二分法K Means的算法是什么?和普通的K Means有什么区别?
统计/机器学习 无监督学习 开放问题二分法K Means的算法是什么?和普通的K Means有什么区别?
谢谢!
Answer
二分法K Means(bisecting K Means)其实可以看作是一种阶层聚类(hierarchical clustering)方法。
- 第一步、确定K的大小
- 所有点都被在一个cluster当中
- 对所有点进行2 Means,得到两个聚类,比如说C1,C2
- 对C1或者C2进行2 Means,从而又一个聚类被一分为二,此时,我们就有三个cluster,C1,C2,C3
- 对C1,C2或者C3其中一个clustering再进行2 Means,此时我们就有4个cluster。
- 反复进行,直到我们产生出K个cluster为止。
二分法K Means可以保证收敛到最优,而普通的K Means却不能。
二分法K Mwans,其实就是逐步2 Means.,每进行一次,增加一个聚类,直到达到k为止
Question 1000865: 一维的数据可以做聚类吗?
统计/机器学习 无监督学习 开放问题一维的数据可以做聚类吗?有什么常用的方法?
谢谢!
Answer
比较常用的是Jenks Natural Breaks。它的作用是找到分组方差尽量小,组间方差尽量大。如果感兴趣的话,可以参考jenkspy(这是个python的包)。
多维的方法都可以用在一维上,比如K Means,比如Hierarchical clustering。另外还一个只能在一维上用的叫Jenks Breaks。
k均值聚类
Question 1000918: 如何理解PAC Learning?
统计/机器学习 开放问题我努力看了PAC Learning的维基百科,但是依然没有搞得太明白。
还请熟悉的人多多指教了!
Answer
这个概念算是机器学习理论的一个部分。
PAC learning是Probably approximately correct Learning的缩写,可翻译为“大概近似正确”学习。它是用来描述学习框架的。
“近似正确”的意思是说一个分类器的泛化误差是有上、下界的;换句话说,这个分类器的泛化误差是可以被控制的,所以说“近似正确”。
“大概”的意思是一个学习框架生成一个“近似正确”的分类器的概率至少为$1-\delta$,$0<\delta<0.5$。
我觉得我的理解应该是“大概近似正确”的吧,嘿嘿嘿
Question 1001038: 为什么PCA被称作非监督式学习?
统计/机器学习 无监督学习 数据降维 开放问题明明PCA不能直接用在聚类上,为什么PCA还是会被称为非监督式学习(unsupervised learning)?
在监督式学习中,PCA可以用来降维,为什么不称它为监督式学习(supervised learning)?
Answer
非监督式学习是个很大的范畴,并不只是聚类。
贴一段维基百科对非监督式学习的解释。
Unsupervised machine learning is the machine learning task of inferring a function to describe hidden structure from "unlabeled" data.
大意是说对没有标签的数据进行发掘探索就是非监督式学习。
我们知道,用PCA对数据进行降维时,我们是不需要数据的标签的(也就是在做PCA时,我们会剔除y那列),所以这也符合了非监督学习的定义。
PCA并没有用到label的信息,所以是unsupervised。
Question 1001106: 怎么对时间序列进行交叉验证?
统计/机器学习 模型验证 时间序列 开放问题对于时间序列类型的预测模型,应该怎么进行交叉验证呢?
如果用普通的交叉验证,会有数据泄露,那么该怎么办呢?
Answer
你说的对,不能用普通的交叉验证,这样会有数据泄漏。
有个方案是保证时间顺序,永远用后面的数据作为测试集。
比如说你的数据是从1月份到12月。
那么你可以:
1到6月训练,在7月上验证
2到7月训练,在8月上验证
3到8月训练,在9月上验证
4到9月训练,在10月上验证
5到10月训练,在11月上验证
这样的缺点是,1到6月的数据从来不会被用作验证集,所以你最后根据上面交叉验证的结果,是有些偏差性的。
如果各位有其他的好方法,欢迎指正~
Question 1001165: hyperparameter与parameter的区别?
统计/机器学习 开放问题hyperparameter与parameter的区别是什么?
那我们平时说的调参,到底调的是什么参?超参数hyperparameter还是参数parameter?
Answer
模型参数是模型在训练的过程自己学习获得的。
模型超参是在训练模型前,我们人为设定的参数。
比如说神经网络中,每个节点的权重就是参数;神经网络的层数和每层中节点的个数,就是超参。
至于调参,我们大部分时候都是指的调“超参”。
由你事先决定的参量都可以认为是超参数。
以random forest来说,树的个数、树的最大深度,这个是超参。以kNN来说,k的大小、距离的权重,这个是超参。
Question 1001185: 如何对大型线性回归进行并行计算?
统计/机器学习 回归分析 开放问题当数据量很大(上亿条数据、每条数据上万个特征),如何对线性回归进行并行计算?
Answer
1. 如果是用投影矩阵来求线性回归,那么这个问题就等同于如何对矩阵进行并行计算(网上这方面资料非常多)。
2.如果是用数值方法来求线性回归,可以考虑mini-batch,也就是abuu说的。
3. 如果考虑分布式计算(也就是把数据切成好N块),可以每个机器或者cpu分配到N分之一的数据,分别进行计算,最后对N组回归系数取平均值。这个方法在大数据公司很常用,比如linkedin,google。
提供一个思路:
用mini-batch梯度下降。比如batch-size是40,你有4个cpu,那么就是每个cpu计算10个点,然后合在一起。
如果用梯度下降法来实现的话,梯度中每个元素的计算都是独立的,以及每个权重的更新也是独立的,这两个部分也可以用并行计算。
实际工作中就是直接用spark MLlib或者H2O解决
Question 1001247: 线性回归是机器学习算法吗?
统计/机器学习 回归分析 开放问题线性回归到底算不算是机器学习算法?
Answer
比如用线性回归拟合工资$y$
$$y=200身高+100体重+500$$
如果模型中的回归系数200和100以及常数项500是根据最用平方误差对10000条数据拟合出来的,那么这就是机器学习。
如果模型中的系数是人为主观设定的,而不是通过优化算法从数据中学习到的,那就不是机器学习。
机器学习有时候更多体现在机器学习数据的过程,而非最终结果。
当然算啊。
机器学习就是给定一个目标函数,可以从数据中训练出模型的参数。
线性回归符合上面的要求,所以当然是啊!
这个问题倒是挺有意思的。
如果一个机器学习工程师说他的日常工作就是搞各种线性回归,总感觉有点怪怪的,似乎不完全像个机器学习工程师或者算法工程师。
但是如果他又告诉你,他的线性回归都是上亿的数据量,上万的特征,为了提高计算性能,自己用scala实现了各种流行的优化算法。这么一听,感觉的确又算是机器学习。
那要看怎么用,机器学习的本质在于学习、训练与预测,通过对样本数据的模拟,更好地预测未知数据集
因此在机器学习中,线性回归算是一种算法,但是更多的是怎么求出更好的参数,来使得预测效果或者误差率更小;
在统计学、计量经济学中,线性回归更多的是来寻找变量x、y之间的关系,当然预测也是一个方面
应该是吧。每个机器学习的教材里都会讲线性回归逻辑回归。
是 线性回归正规矩阵解在train set特征与样本很大时求逆计算量很大,所以一般都用梯度下降 一步步将损失函数减小,这符合大部分ML算法的本质,值得一提的是深度学习这种超复杂模型原理也是梯度下降。
机器学习要素是:人为设定数学模型(表示输入到输出的关系),目标函数(如何衡量模型输出的质量),学习策略(如何把目标函数的梯度负反馈到模型参数上)。其余学习过程由机器完成。对于线性回归,数学模型是线性模型,目标函数是MSE,学习策略可以是一步到位的最小二乘法,也可以是逐渐学习的梯度下降。深度学习中也是用反向传播(back propagation)把目标函数梯度反传到每个参数。
类比一下人学习过程:对一个英语单词大概有个初始映像(模型参数初值),对比词典知道错误(与目标的差),加强记忆错误的部分(反向学习)。
Question 1001268: 既然xgboost那么好,线性回归还有存在的价值吗?
统计/机器学习 回归分析 开放问题这个问题是我接着上次的问题(xgboost可以做回归预测吗?)问的。
在之前那个问题的回答中,xgboost比线性回归好非常非常多,而且xgboost也不需要做什么特征工程。既然xgboost那么好,线性回归还有存在的价值吗?
再次谢谢!
Answer
1)线性回归模型的解释性是决策树、随机森林、xgboost无法比拟的,也无法取代。
2)线性回归可以建立线性模型,而xgboost是不可以的。举个例子,即使是简单的y=x+1的线性关系,xgboost也无法做到。
3)线性模型计算简单,适用于快速部署。
更新一下,回复一下ladychili的“xgboost可以做linear model的…… booster = 'gblinear'了解一下”
我觉得如果booster='gblinear'的话,本质上就不是xgboost,其实还是线性回归,只是用sgd的方式去求解了。
也可以参考一下,xgb中booster='gblinear'是什么意思
1.决策树/森林回归是把数据空间非线性地分成N份(N为叶节点数),相当于做N 聚类。然后再每个叶节点上求平均,其实是一种条件期望(conditional mean),$\hat{y}=E(y|c)$,$c$是聚类标签,可以看做是内插(interpolation)。所以预测点周围需要被训练点包围,这样才会有好的效果。
2.线性模型回归是用线/平面去拟合所有训练数据。当引入$x^2$等高维变量后,在原有$x$空间是非线性曲线/曲面。线性模型回归可以作内插(interpolation,预测点曾经见过),也可以做外插(extrapolation,预测点从没见过,比如$y=x+1$)。
3..决策树优点:决策树用垂直线段去拟合曲线,不用显示的写出曲线的表达式。而线性模型会尝试写出曲线的表达式。所以线性模型更难去拟合复杂的曲线。
4..决策树缺点:决策树是基于数据,而线性模型是基于模型。决策树需要大量数据去尽量覆盖所有可能的输入,适合于大数据。所谓的“大”是指训练样本的覆盖面要大。线性模型可以处理训练样本小的情况。
5..决策树和线性模型的组合。在每个叶节点上,单纯的决策树回归是用一个点代表所有值。此时可以再用线性模型,用一条线去拟合子空间的数据。
6.线性模型默认全部数据有相同的分布,而决策树可以处理mixture这样混合了不同分布的数据。所以要对复杂的混合数据聚类,提纯后再对相对单纯的一类数据用线性模型。
------------------------------------------
两者更深层的区别是parametric和nonparametric:用固定/非固定的参数去学习数据。
No Free Lunch Theorem告诉我们总会有一些情况,线性模型是比xgboost好的。所以不要过分迷信xgboost。
感谢楼上各位的回答!我发现的真相就是就算你懂xgboost,面试官还是比较爱问线性回归和逻辑回归。
既然面试官爱问线性模型,估计是线性模型更常用到吧
扎心了
1. xgboost的计算代价还是挺高的,毕竟模型复杂
2. 模型复杂,在业界中维护的代价肯定也更高了
3. 另外还有xgb对于extrapolation算是继承了tree-model的缺点(不知大什么是extrapolation的可以看机器学习里extrapolation是什么意思?)
当然有价值啊,而且学校里都是教线性回归。既然教了,那就要考,既然要考了,你说有没有价值呗。
如果xgboost和线性回归的表现差不多,或者好不了多少的时候,我都是无脑选择线性回归,一是简单,不容易过拟合,二是解释性强
线性回归是机器学习的基石,也是开创机器学习算法一个流派的基石
Question 1001391: 特征归一化对K Means有影响吗?
统计/机器学习 无监督学习 数据预处理 开放问题特征归一化对K Means有影响吗?是好的影响还是不好的影响?
Answer
K均值中计算距离的方法应该可以有很多,如果以常用的欧氏距离作为计算距离的方法的话,归一化是好的。这样每个特性的重要性就会得到统一。
比如你想用K均值给动物分类,假如把重量(单位:克)作为一个特征,由于其数值和方差非常大(比如大象和松鼠),在计算距离的时候其它特征影响就显得就无关紧要。变成了主要按照重量来分类了。
有的距离计算方法可以忽略量纲的问题,比如余弦距离。这时候归一化应该没什么影响。
简单来说,特征是否缩放须谨慎,最好在缩放前理解每个特征的含义(正如s3040608090所讲的体重的例子)。
至于影响可好可坏,要视整个上下文而定。
补充一句,基于距离的模型都会有“该不该缩放/标准化”的问题,比如说kNN。
对特征归一化当然会对聚类结果产生影响
比如下图中,如果我们进行2-Means,A,B,C是一个聚类,D和E一个聚类
下图中,我们对x轴进行了归一化,然后2-Means,A和B是一个聚类,C,D和E是一个聚类。
所以归一化对聚类的结果是有影响的。
Question 1001398: 无监督学习(比如K Means)里怎么加正则项来防止过拟合
统计/机器学习 无监督学习 模型验证 开放问题有监督学习里,一般都是通过加正则项来防止过拟合。
那么无监督学习,比如K Means可以添加正则项防止过拟合吗?
Answer
对于K Means,比较常见的两种带正则项的目标函数就是AIC和BIC
正常的K Means的目标函数是
$$\sum_{i=1}^n\|X_i - C_i\|^2$$
其中$C_i$是点$X_i$所归属的中心点。
AIC是带正则项的目标函数
$$AIC=\sum_{i=1}^n\|X_i - C_i\|^2 + 2kd$$
其中$k$聚类的个数,$d$是数据的维数(特征的个数)
BIC是另一种带正则项的目标函数
$$BIC=\sum_{i=1}^n\|X_i - C_i\|^2 + \frac{1}{2}kd\log{n}$$
其中$n$是样本点的个数
http://datamining.rutgers.edu/publication/internalmeasures.pdf
这篇论文里有很多评价clustering的标准,很多是加了对cluster数目的惩罚项。思想和前面提到的AIC差不多,不过更复杂。
Question 1001477: 数据泄漏(data leakage)是什么意思?
统计/机器学习 开放问题什么时候会产生数据泄漏?能举几个具体的例子吗?谢谢!
Answer
数据泄露就是说用了不该用的数据,比如
- 在训练模型时,利用了测试集的数据、信息
- 在当前使用了未来的数据
- 在交叉验证进行调参时,使用了验证集的信息参与模型建立
具体说下第三点,比如对特征进行标准化,正确的方法应该是在训练集上标准化,然后应用到验证集上,而非先标准化,再划分验证集。再比如说,要对数据进行pca降维,应该是在训练集上pca,然后作用到验证集上,而非对整个数据集进行pca。通常都忽略了这一点。
楼上的第三点不太理解,标准化的时候,只对训练集标准化,验证集不用标准化?应用到验证集是什么意思呢?
Question 1001591: ensemble模型时,bagging和stacking有什么区别?
统计/机器学习 开放问题在提到ensemble的时候,经常会有bagging或者stacking这两种合成方法?
严格上来,它们有什么区别?
Answer
关于bagging,可以看看这个,bagging是什么意思
说说区别
1. bagging每次是用部分随机数据,然后训练出一个模型。以此反复训练同类型模型(比如多个决策树)。就会多个同类型模型,然后把这些模型的预测结果取均值,就得到了bagging后模型的预测结果。
2. stacking是指训练了多个不同类型模型,比如一个knn,一个svm,一个decision tree,最后把三个预测结果取均值,得到最后的预测结果。
感觉这两个词也经常混用的。没什么大的讲究吧。
bagging主要强调的是bootstrap的aggregation,一般是指用整个数据集中部分随机样本训练出多个同类型的模型,然后将这些模型叠加在一起(一般简单的处理就是取均值)。常见的比如tree bagging,random forest,bagging of LR。
stacking一般是指用数据集训练出多个不同类似的模型,然后将这些模型的结果组合在一起(对它们的结果取均值,或者加权平均)。
Question 1001609: 非参模型是什么意思?有哪些模型算是非参的?
统计/机器学习 开放问题经常看到诸如“非参”模型、算法、统计之类的。
那么非参模型是什么意思?有哪些模型算是非参的?
问题比较大,谢谢各位解答!
Answer
如果一个机器学习模型只由数量有限的参数来决定,那么这个模型就是参数(parametric)模型。这里“数量有限”是指个数少,不随着样本数量而变化,在知道数据量之前,就已经知道了有多少个参数需要被估计。
参数模型一般结构比较简单,只需要估计少量的参数。这通常是因为在对参数进行估计前,参数模型就已经对概率分布有了很强的假设。
比如线性回归就假设了线性关系和残差的正态性。
比如高斯混合模型就假设了每簇聚类都是一个高斯分布。
比如逻辑回归等等。
如果一个机器学习模型无法由数量有限的参数来决定,那么这个模型就是非参数(non-parametric)模型。这里“数量有限”是指个数少,不随着样本数量而变化。
比如k最近邻模型,就是非参的,模型的参数是由每个数据点决定的。
比如k Means,也是非参的,模型的参数是由每个数据点决定的。
比如决策树、随机森林、SVM等等。
简单来说就是不对样本的总体分布做假设,直接分析样本的一类统计分析方法。通常对样本进行统计分析的时候,首先要假设他们来自某个分布,然后用样本中的数据去estimate这个分布对应的参数,之后再做一些test之类。比如你假设某个样本来自同一个正态分布,然后用样本数据估算和,再用估算出来的这两个值做test。non-pararmetric则不然,不对总体分布做假设,自然也就不必estimate相应的参数。一个比较简单的例子是Sign test,可以用来检验两个分布X和Y的中位数是否相等。在这里不必介意X和Y分别是什么分布,只在意样本中每对x, y的相对大小。如果中位数相等(),那么 P(X>Y) = 0.5,所以去除刚好相等的情况之后,x > y 的样本数量应该是符合二项分布的。像这样就可以在在不对X和Y的分布做任何假设的情况下检验X和Y的中位数是否相等。
作者:Glenn Qian
链接:https://www.zhihu.com/question/22855599/answer/23556224
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Question 1001616: 有没有对聚类成员个数有限制的聚类算法?
统计/机器学习 无监督学习 开放问题我现在有个聚类问题,把数据点聚成5类,可是常常有一两簇,特别小,数据点很少,只占到了0.1%和0.5%。
有没有对聚类成员个数有限制的聚类算法?
就是说聚类之后,每簇的大小差不多,成员个数差不多?
谢谢!
Answer
有个“同大小K Means”算法, equai-szie K-Means或者same size K Means。这个聚类算法出来的结果是K个聚类,每个聚类的成员个数是一样多的。
它的基本思想还是K Means,只不过有个聚类修正:
一个数据点$A$,如果距离聚类$C$的中心点$M_C$最近,并且聚类$C$目前的成员个数还没有满,那么$A$就会被归到$C$中;
如果$C$满了(也就是成员个数达到了$N/K$),那么$A$就会被分配到离$A$第二近的那个聚类;
如果第二近的聚类也满了,就分配到第三近的,以此类推。
自己对loss function加个正则项试试?
比如cluster size的方差作为正则项?
Question 1001666: 模型调参时常用到的Grid Search是什么意思?
统计/机器学习 模型验证 开放问题模型调参时常用到的Grid Search是什么意思?最好能有直白一点的解释,谢谢!
Answer
正如mosthated说的,Grid Search就是穷举,穷举所有的超参组合。
当你对决策树调参,如果只对一个超参优化,比如树的最大深度,尝试[3, 5, 7]。那么可以表示为
如果你还想对分裂标准进行调参,分别试试gini和entropy,那么就相当要对$2\times 3 = 6$组参数进行尝试。如下图
所以这就是为什么叫做gird search,网格搜索。grid search是对网格中每个交点进行遍历,从而找到最好的一个组合。
网格的维度就是超参的个数。如果有$k$个超参,每个超参有$m$个候选,那么我们就要遍历$k^m$个组合。所以说尽管效果不错,但是计算代价是非常非常大的。
官网介绍http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
如下给出GridSearchCV的一个例子
# 随机森林分类模型
RFC = RandomForestClassifier()
##设置备选属性用于grid search
rf_param_grid = {"max_depth": [None],
"max_features": [1, 3, 10],
"min_samples_split": [2, 3, 10],
"min_samples_leaf": [1, 3, 10],
"bootstrap": [False],
"n_estimators" :[100,300],
"criterion": ["gini"]}
#用于系统地遍历多种参数组合,通过交叉验证确定最佳效果参数
gsRFC = GridSearchCV(RFC,param_grid = rf_param_grid, cv=kfold, scoring="accuracy", n_jobs= 4, verbose = 1)
gsRFC.fit(X_train,Y_train)
#得到最佳参数组合
RFC_best = gsRFC.best_estimator_
# Best score
gsRFC.best_score_
就是穷举法,你把想测试的参数的数值以字典形式搞进去,这个东西能给你列出来对应的预测精度
Question 1001676: 用高斯混合模型(GMM)做聚类时,怎么确定component的个数?
统计/机器学习 概率分布 无监督学习 开放问题用高斯混合模型(GMM)做聚类时,怎么确定component的个数?可以用和K Means一样的方法吗?
Answer
正如nobodyoo1说的,一个方法是用BIC
$$BIC=−2\log(L)+k\log(n)$$
$L$是likelihood,$k$是component的个数,$n$是样本的个数。
另一个方法是根据split test的结果(或者说cross validation的结果),先用训练集得到GMM的参数,然后再在测试集上计算log-likelihood。两者明显分叉的地方就是component个数的最佳候选。
可以用BIC(Bayesian information-theoretic criteria)来选择。
Question 1001746: 95%置信区间的正确理解
统计/机器学习 假设检验 贝叶斯 开放问题大家好,我想讨论一下如何正确理解置信区间。
以前我理解的是,比如$[a, b]$是一个统计量$s$的95%置信区间,那么真实的$s$应该是有0.95的概率落在区间$[a,b]$内的。
上午和一个同学讨论,他说这个理解是错的,至于正确的理解,他自己也说不清,只是指出我的理解是错误的。
请问该如何正确理解置信区间的概念呢?
谢谢!
Answer
正确的说法应该是有95%的概率这个置信区间包含了正确的参数值。因为在传统统计学派中,待估参数是一个确定的值而不是随机变量。因此不能说有95%的概率落在某个置信区间。
对于贝叶斯学派,这种说法是完全ok的。
s3040608090 说得很好。我再稍微补充一点
在贝叶斯学派中,待观测参数$p$落在一个给定的区间$[a, b]$的概率为0.95,那么$[a, b]$就是这个参数$p$的0.95置信区间。按照贝叶斯学派,题主的说法是正确的。贝叶斯学派下的置信区间有时候不是叫做confidence interval,而是称作credible interval,以示区别。
在频率学派中,参数$p$是固定的,而区间$[a, b]$是变量。区间$[a, b]$是根据样本得到的,而非根据总体。总体中不同的样本,根据某种方法会得到不同的区间$[a, b]$。所有的这样的区间会组成一个总体,从总体中抽随机抽样,有95%的概率抽到一个区间,使得$p$在这个区间内。
频率学派的confidence interval和贝叶斯学派的credible interval是完全不同的概念(飞翔钉子说的那样)。只是在特定条件下这两个interval重合。比如求均值,且均值的先验概率是均匀分布时(相当于对均值没有约束,uninformative),这两个interval相同。但是遇到复杂情况,比如这个blog的example2,求出的confidence interval有错,而credible interval能得出正确结论。
根据blog的结论,应该停止使用频率学派的confidence interval。即使在不考虑prior情况下求均值时,confidence interval能给出合理的结果,其实是在计算贝叶斯学派的credible interval。
Question 1002021: 机器学习算法中有哪些用到了贪婪算法的思想?
统计/机器学习 开放问题机器学习算法中有哪些用到了贪婪算法的思想?
Answer
- 感知器,感知器口袋算法
- 决策树模型
- 一部分特征选择算法
- 还有一些没想好
决策树寻找分裂点的时候,用到了贪婪算法的思想。因为无法做到全局最优(这一层的最佳分裂,可能对下一层是负向的),所以会采用后剪枝来处理掉负向的分裂。
我觉得k-NN和k-Means都算greedy的吧
用aic或者bic进行stepwise选特征的时候,这个是贪婪思想
最速下降法应该也是贪婪算法(不过这个不完全是机器学习,应该属于优化算法)
最近接触了增强学习还有Q Learning什么的,感觉这个也完全是贪婪思想。
Question 1002255: 数据批量分析提取,求指点迷津
统计/机器学习 自然语言处理 数据预处理 开放问题苦逼的数据工作,在里面沉陷,
试着做了一个小小的雏形工具:
1、导入杂乱信息的文档
2、把线头理出来
3、批量提取:
企业机关事业单位
地址
联系方式
。。。。。。
以后我们还可以延伸到提取标准,规范的名称,编号等。
但是,做着做着,就不知道怎么往下走了,
我们经验不够,所以希望高手能提点一下:
1.这个产品,应该朝哪个方向走?
2.哪些地方,会用的到这个产品?
3.做大数据助手,要增加些什么?
Answer
导入的文档是文本还是图片?
我也看不出你这个有什么用,因为如果是我的话,需要查事业单位的地址,我都是用百度的。这个产品是独立的,还是服务于公司内部其他产品的?
之前有个app是把别人的名片(图片)导入手机里,变成姓名、电话、邮箱、单位,等文本信息的。
一般不是先有应用场景和需求,再有产品么?感觉题主是先有产品,再找场景。
大数据助手嘛,感觉可以提供每个单位的开门时间(忙或者闲的时段)、停车信息什么的
产品定位是什么,用户群体是什么,功能是是什么,数据助手,那么数据来源是什么,获利手段是什么‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’‘’
你这还只是数据录入的阶段,还没到数据处理和分析。流程应该是
1.preprocessing(比如降维,normalization),
2. data mining,有目标时做(regression,classification),没目标时可以尝试clustering。先看下各个输入的histogram,大概能分几类,在做clustering,最后调参。
3.postprocessing,做结果的可视化,cluster evaluation(这也是个大话题,分为有/无target label)。
4.重复1-3
有目标的任务会简单点,如果没有目标,而且对数据理解又不深,那结果就很难说了。
Question 1002350: baseline模型和benchmark模型的差别?
统计/机器学习 开放问题在论文或者一些博客里,被用来比较的模型,有的称为baseline模型、有的称为benchmark模型
这两者的差别是什么?还是仅仅是语言习惯?
Answer
baseline是基线(底线?)
benchmark是标杆
最差的标杆就是baseline吧,就是说用最简单的模型在这个数据集上能够达到的程度。
比如你自己有一个模型,其他一些成熟的模型,比如random forest,gdbt,这些就是benchmark。baseline可能就是用一些非模型的方法得到的预测结果,比如用平均值,中位数等等。
但是基本上就是DuckU的意思,baseline要比benchmark差。baseline是模型的下限,benchmark是其他标准模型。
Question 1002436: Sigmoid核函数是不是对新输入的需要预测的点的测量误差不敏感?
统计/机器学习 回归分析 开放问题在SVM中,Sigmoid核函数的表达式为:
K(X_1,X_2)=tanh[a(X_1•X_2)+b]
由这个函数的特点可以发现,当b取一个较小值(比如-3),a取一个接近于0的值(比如0.1),那么需要X_1,X_2的乘积比较大才会有变化,如果把X_1作为训练点,而X_2作为需要预测的点,这是不是意味着,预测结果对X_2上微小的波动(误差引起)将不敏感,因此Sigmoid核函数具有良好的抗待预测点误差的能力?
Answer
应该说是因为参数a,b的设置让输出对输入的变化不敏感,并不是Sigmoid本身。b控制x_1*x_2在中间或外面,中间更敏感。a在整体上控制输出是否对输入敏感。比如a很小就让所有输出变化很小。
你可以把x_1*x_2的直方图,通过tanh函数转换,得到输出的直方图,就知道输出是否对输入敏感。
Question 1002450: 在SVM中获知一个分类机/回归机需要有多训练点?
统计/机器学习 回归分析 开放问题 损失函数RT.请问:
在SVM中,有没有一种理论可以指导我们为了训练得到一个较好的分类机/回归机,需要给多少个训练点,这个训练点的个数与哪些量有关呢?
Answer
有个One_in_ten_rule,意思是1个可变参数需要10个数据。也有"1 in 20"和"1 in 50"。这和置信区间的计算有关。结论是一个参数要5-50个相关数据。“相关”是指这些数据在loss相对于参数的导数不能为0。对于SVM,support vectors才是用于参数估计的点。
Question 1002456: 如何理解神经网络的Universal approximation theorem?
统计/机器学习 开放问题 人工神经网络如何理解神经网络的Universal approximation theorem?有什么实际指导意义吗?
Answer
Universal approximation theorem的意思说,对于一个前馈神经网络,哪怕只有一个隐藏层,它也能无限逼近任何有界连续函数。
换句话说,理论上说,用前馈网络做回归任务,一个隐藏层足够了。
类似的还有另外一个结论,对于一个前馈神经网络,哪怕只有一个隐藏层,它也能完全拟合任何0-1函数。
换句话说,理论上说,用前馈网络做二元分类任务,一个隐藏层足够了。
其实定理还包含了一个隐藏信息:如果是做多元分类任务,一个隐藏层是远远不够的。
Question 1002459: LS-SVM的核函数选取问题
统计/机器学习 回归分析 开放问题编写了一个最小二乘支持向量机的程序,然后想先试一下有没有bug
于是选用了
X=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]
Y=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20]T
其中X每一个数就是一个样本点,样本点在一维空间内,Y是值,这样其实就是一个y=x的函数,给了20个训练点
我首先使用了Gauss核函数进行LS-SVM拟合,
K=exp(-||X_i-X_j||^2/(2*σ^2)),σ=0.1,
结果Gauss核函数表现出了良好的局部特性,在训练点点的附近有很好的精度,但是当我要做预测时,比如输入一个X_i=25,得出来的结果完全不着边;
然后又试着使用混合核函数:采用Gauss核函数与多项式核函数相结合:
K=λ*exp(-||X_i-X_j||^2/(2*σ^2))+(1-λ)*(X_i•X_j+1)^d,σ=0.1,d=2,
我更改了好几个λ的值,但是加了多项式核函数之后,不仅没有使得预测性变好,甚至连训练点附近也变得不对了。
所以,以上我的使用有错误么?我检查了好像没有,为什么表现出这么差的预测性呢?是因为我的训练点取得太少了?针对这个简单的 y=x 的回归问题,应该怎么选取核函数?
Answer
1.Guassian核函数是做interpolation,也就是预测点周围要有训练点去支撑。你可以去掉Gaussian试试。
2.对于x=25,其实是利用线性模型做extrapolation。所以你不需要核。
3.核方法是针对高纬线性不可分问题的。
-------------------------------------------------------------------------
引用论文里公式
我写的Matlab代码。
clear,clc,close all;
x=[1:20]';
y=[1:20]'+rand(20,1)*0;
omega_train=omega(x);
gamma=10^10;
n=20;
I=ones(n,1);
% As=t
A=[0 I'
I omega_train+1/gamma*eye(n)];
t=[0;y];
rank_A=rank(A)
s=inv(A)*t;
b=s(1)
lambda=s(2:end)
w=lambda'*x; % for linear kernel
figure;plot(lambda)
%% test
n_test=10;
x_test=100+[1:n_test]';
y_test=x_test;
y_test_hat=zeros(n_test,1);
for i=1:n_test
xi=x_test(i);
y_test_hat(i)=f1(xi,x,lambda,b);
end
figure;hold on
plot(x_test,y_test,'*')
plot(x_test,y_test_hat,'ro')
legend('ytest','ytest hat')
xlabel('x')
ylabel('y')
function K_out=K1(xi,xj)
% Gausssian kernel
% sigma_sqr=10^10;
% K_out=exp(-norm(xi-xj)^2/sigma_sqr);
% Linear Kernel
K_out=xi'*xj;
end
function omega_out=omega(x)
n=size(x,1);% number of data point
omega_out=zeros(n,n);
for i=1:n
for j=1:n
omega_out(i,j)=K1(x(i,:)',x(j,:)');
end
end
end
function f_out=f1(xi,x,lambda,b)
n=size(x,1);
f_out=b;
ttemp=zeros(n,1);
for i=1:n
ttemp(i,1)=K1(xi,x(i));
f_out=f_out+lambda(i)*ttemp(i);
end
end
在你的数据,y中的error都很小,接近(等于)0。根据公式7第3行,当$\xi$很小时$\gamma$需要很大,比如10^10.
如果用Gaussian核时,如果预测很远的值,比如x=100,需要$\sigma^2$=10^10,也就是Gaussian的方差很大。每一个训练点都可以影响很远的点。
对于你的数据,以下参数可以有较好的结果:当linear核时,$\xi$>=1; 当Gaussian 核时,$\xi$>=10^10,$\sigma^2$=10^10。
Question 1002471: 什么是“维数灾难”,为什么说引入核函数就避免“维数灾难”
统计/机器学习 回归分析 开放问题在文献中看到说如果要构造一个显式的映射将样本空间中的点映射到高维特征空间中,有可能会面临“维数灾难”的危险,所以想请问一下,机器学习当中所谓的“维数灾难”指的具体是什么呢?怎么样去理解这个概念呢?为什么说SVM通过构造核函数而无需显式地知道这个映射关系就避开了“维数灾难”呢?
Answer
Soft margin SVM的dual problem是(参考wiki):
其中$y_i$是分类标签1/-1,$c_i$是数据$x_i$重要性,如果$x_i$在分割平面的边缘(margin)外,$c_i=0$,也就是此点离分割平面太远,不参与测试时的计算。
SVM要计算数据点之间的内积inner product matrix $\phi(X) \cdot \phi(X')$。内积
有两种办法计算两个点$X,X'$在高维空间的内积:
第一种是 先把数据显性的升维,$p\rightarrow p_1$,再计算内积。$\phi(X) \cdot \phi(X')$,
$\phi(X)$是升维操作。比如X是2维数据$X=[x_1,x_2]$,$\phi(X)=[\sqrt{\lambda_1}x_1,\sqrt{\lambda_2}x_2,\sqrt{\lambda_3}x_1^2,\sqrt{\lambda_4}x_2^2,\sqrt{\lambda_5}x_1x_2,\sqrt{\lambda_6}x_1^3,...]$
数据显性升维后,每一维都有个权重需要学习。升维后SVM训练计算量$\mathcal{O}(n^2p_1)$,但我觉得还称不上“维数灾难”。一般“维数灾难”要计算量正比于维度平方$p_1^2$。比如线性回归中要计算covariance matrix,它元素个数是维度平方。这才是“维数灾难”。应该说SVM有“数据点灾难”,应为完整的kernel matrix 是$n\times n$,$n$为数据点个数。
第二种是直接用非线性kernel代替高维的点击$K(X,X')=\phi(X) \cdot \phi(X')$,直接计算了两点的高维相似性。计算量$\mathcal{O}(n^2p)$。
----------------------------------------------------------------------
我先前错误地把“维数灾难”理解为计算量的提升,你说的应该是curse of dimensionality,也就是增加数据维数,有限的数据在高维空间更稀疏,反而分类的准确性下降。
我觉得不能简单看数据密度,应该看数据影响力的密度。
线性kernel的内积$X\cdot X'=|X||X'|cos(\theta)$,
可以看到在线性kernel中X'对X内积的等高线是一个过原点的斜面。而RBF kernel中离训练数据X'越近,X'的影响力越大,在原始的低维空间中成以数据点为中心高斯分布。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
delta=1
x = y = np.arange(-30.0, 30.01, delta)
X, Y = np.meshgrid(x, y)
v1=np.array([10,10])
Z=X*v1[0]+Y*v1[1]
# Z=X*v1[0]*1+Y*v1[1]*100+np.power(X,2)*np.power(v1[0],2)*-1+np.power(Y,2)*np.power(v1[1],2)*-1+np.multiply(X,Y)*v1[0]*v1[1]*0
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z,zdir='z', cmap=cm.coolwarm)
plt.axis('equal')
plt.title('dot product contour')
plt.show()
Z_RBF=np.exp(-(np.power(X-v1[0],2)+np.power(Y-v1[1],2))/200)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z_RBF, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z_RBF,zdir='z', cmap=cm.coolwarm)
plt.axis('equal')
plt.title('RBF kernel contour')
plt.show()
kernel的维数越低,数据的影响力(inner product)越均匀,所有数据综合后的影响力密度越均匀。而RBF kernel可看做是无限维的kernel,数据影响力更集中在训练数据周围,对于局部数据集中区域,“维数灾难”更不容易发生。
Question 1002678: 高维数据应该用什么聚类模型?
统计/机器学习 无监督学习 数据降维 开放问题我现在要做一个聚类,问题是维数特别大,因为有很多数值变量(200多个),还有很多分类变量(40多个),如果再对分类变量做独热处理的话,特征的个数就好几千了。这种高维数据应该用什么聚类模型?
K Means、阶层聚类或者GMM明显都不大合适。大家有这方面的经验吗?谢谢!
Answer
对于分类变量,可以先做one-hot encoding,然后单独对这部分用PCA降维,再和数值型变量组起来,用于聚类。仅仅是个人建议。
可以用AutoEncoder进行降维,然后再做传统聚类
参考一下维基百科高维数据聚类
有一个算法叫做subspace clustering可以处理高维数据的聚类
Question 1002695: word2vec和GBDT模型能结合吗
统计/机器学习 自然语言处理 推荐系统 开放问题ctr预估,把用户的点击行为序列训练出词向量,能扔给 GBDT 跑吗?这样做是否有可解释性
Answer
“点击行为序列训练出词向量”?
这个我不是很理解。是指点击的链接的文字内容吗?
题主可以试试,我觉得应该会对模型精度有帮助的,不过需要好好调参了可能。
@sasa
做电商ctr预测,把用户点击过的商品gid按照时间排序,作为word2vec输入,输出每个商品的词向量,然后把用户点过商品的词向量平局,得到用户的词向量,输入给GBDT
现在训练完后,词向量的特征importance还是排在前面的,只是不知道改怎么解释
Question 1002792: 如何学习机器学习?有没有好的经验。
统计/机器学习 开放问题最近感觉自己对机器学习总是浅尝辄止,不够深入,对于其算法原理也是不求甚解,请问各位大神有没有好的学习方法?谢谢大家。
Answer
看看吴恩达的视频,他讲得挺不错的,适合入门b站链接
看理论的同时最好也要做做项目或者竞赛什么的,比较简单的可以考虑SofaSofa上的,如果硬件比较好的话,以后可以考虑做Kaggle的
Question 1002857: transfer learning的应用和实例?
统计/机器学习 深度学习 开放问题 人工神经网络请问transfer learning的有什么具体的应用和实例?
谢谢!
Answer
我觉得现在大部分视觉类竞赛的baseline模型都是基于迁移学习的概念,基于Imagenet数据集的pretrained模型,然后再调整权重,最后根据实际数据集的特点修改网络架构。
迁移学习方面可以参考知乎大神写的入门手册:https://zhuanlan.zhihu.com/p/35352154
Question 1002879: 加性模型是什么意思?
统计/机器学习 开放问题加性模型是什么意思?有哪些具体的例子吗?
Answer
只要是符合$$Y_i=\sum_{j=1}^mf_j(X_i)$$的模型,都是加性模型。上面的$f_j$是表示一个模型,一共有$m$个模型,模型最终的结果是它们相加的结果。典型的加性模型包括随机森林。
adaboost、gbdt和xgboost都是加性模型。
$f_t=M_1+M_2+····+M_t$,$M_i$是基学习器
加性模型使用基于贪心思想的前向分步算法求解,每次只在$f_{t-1}$基础上找一个局部最优的$M_t$。
Question 1002910: 如何确定LDA主题模型中的主题个数?
统计/机器学习 无监督学习 自然语言处理 开放问题LDA主题模型需要预先设定好主题的个数,那么该如何确定?有什么通用的方法吗?
Answer
Question 1002923: 如何向没有统计知识背景的人解释“什么是标准差”?
统计/机器学习 描述性统计 开放问题如何向没有统计知识背景的人解释“什么是标准差”?
如何说得清楚又明白呢?
感觉最近很流行这种面试题,向没有统计知识背景的人解释什么是XXX(比如置信区间,p-value,假设检验,等等等)。
Answer
标准差描述了这组数值的分散程度。标准差越大说明每个数值距离总体均值的平均距离越大,数据约分散,数据跨度越大;标准差越小,说明数据约聚拢。
从波动性的角度来说,标准差越大,说明波动越大。
Question 1002938: K Means算法有哪些缺陷、劣势?
统计/机器学习 无监督学习 开放问题K Means算法的一个明显缺陷就是慢,那么还有哪些缺陷和劣势呢?
Answer
- K-Means计算量大,速度慢
- K -Means对迭代初始点的选择比较敏感,容易陷入局部最小值
- K-Means对高维数据表现不佳(慢,高维数据容易稀疏)
- K-Means对categorical feature不能直接处理
补充一下
- K-means只能聚球状数据点
- K-means对离群点/异常点敏感,需要先做异常点检测
- K-Means的K有时候很难确定(K-means中如何选K)
- 不能返回概率值,只能返回每个样本的标签
- K means对样本的输入顺序比较敏感
- K means对数值特征的缩放也非常敏感
K means和Knn在模型上有一些共性,所以缺点也类型。可以额外阅读以下:kNN算法有哪些缺点?
-----------补充一下------------
我上面说的第二点不是很准确,因为对于batch K Means,顺序是不影响结果的。
感谢各位的讨论,为什么K Means算法对样本的输入顺序比较敏感?
我也是感觉k均值算法在数据大的时候特别慢,而且每次跑下来的结果可能也不大一样。
初学者,如果有说错的还请包涵指教~
Question 1003156: EDA一般包括哪些步骤?
统计/机器学习 描述性统计 开放问题拿到数据集之后,一般第一件就是做EDA,请问大家一般自己做EDA都包括哪些步骤?
大家都用了什么样的方法?
Answer
我一般是这样
第一步
看数据整体信息:有多少行,有多少特征,其中有多少特征是数值的,多少是分类的
对于监督式学习
第二步
看y的分布:如果是回归,看看均值、方差,画画直方图;如果是分类,看看各类的比例,是否平衡
第三步
看特征(x):看看各个特征的含义是什么,每个特征的分布情况如何,有没有missing,有没有outlier,看看有没有信息冗余(两个特征几乎一样)
第四步
看y与x的关系:y和每一个特征的相关系数;如果分类,可以做一元逻辑回归;对于分类变量,可以看看每个分类下y的均值
对于聚类问题,就忽略第二步和第四步
接着 @木子周 的步骤写一些我自己的经验和方法:
第三步,还可以看一下有没有单一变量或者接近单一变量的特征,然后删掉这种特征;
第四步,如果是分类模型的话,还可以看一看数据集中每个特征对应不同y值的分布是否相似,如果非常相似的话,根据这种特征可能无法很好的区分y值,也可以考虑删掉;
然后还可以看一下每个特征在训练集和测试集中的分布,如果分布差异很大,很有可能导致在训练集上得到的模型无法很好的预测测试集中的样例,这样的干扰特征应该也要删掉;
最后可以用一些基于树的不同模型,初步跑一些baseline,然后得到特征重要性,对一些重要性高的特征再做一些特征工程。
数据探索:数据对象和属性类型
基本统计数据描述的典型度量:数据可视化方法,各种数据相似性,相异性的方法。
认识数据:
标称属性:标称属性的值是一些符号或事物的名称。每个值代表某种类别、编码、或状态。
二元属性:是一种标称属性;0或1
序列属性:其可能的值之间具有有意义的序或秩评定,但相继值之间的差是未知的。
数值属性:可度量的定量。区间标度,比率标度。
数据的统计描述
中心趋势度量:均值、中位数、众数、中列数(最大最小值的均值)
数据的散布:极差、四分位数等
图形化显示:分位数图、直方图、散点图—–>数据可视化
度量数据的相似性和相异性
数据矩阵:对象-属性结构 用 ( n * p )形式的矩阵来表示n个对象,每个对象p个属性。
相异性矩阵:对象-对象结构 存放两两对象的邻近度 n * n
欧几里得距离、曼哈顿距离:满足非负性、同一性、对称性、三角不等式
闵可夫斯基距离:h–>∞时的上确界距离
余弦相似性:相当于向量的cos
数据质量分析
脏数据:缺失值、异常值、不一致的值、重复数据及含有特殊符号(如#¥*)的值。
缺失值分析
因为无法获取或遗漏等原因造成某属性值不存在,会导致在建模时丢失有用信息,空值数据也会使建模过程造成不可靠的输出。
通过使用简单的统计分析,可以得到含有缺失值的属性的个数,以及每个属性的未缺失数、缺失数与缺失率。缺失值处理分为删除、对可能的值插补和不处理
异常值分析
重视异常值,分析其产生的原因,常常会成为发现问题进而改进决策的契机。
1. 简单统计量分析:最大值最小值判断,是否超出合理范围。
2. 3σ原则:异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。距离平均值3σ之外的值概率为P(|x-u|>3σ)<=0.003 时属于极个别的小概率事件。
3. 箱形图分析:此时异常值被定义为不在此范围 [Ql-1.5IQR ~ Qu+1.5IQR]的值。
1. Ql为下四分位数:表示全部观察值中有四分之一的数据取值比它小;
2. Qu为上四分位数,表示全部观察值中有四分之一的数据取值比它大;
3. IQR称为四分位数间距,是上四分位数Qu和下四分卫数Ql之差,之间包含了全部观察值的一半。
4. 四分位数具有一定的鲁棒性:25%的数据可以变得任意远而不会很大的扰动四分位数,所以异常值不能对这个标准施加影响。箱形图识别异常值的结果比较客观。识别异常值有优越性
4. 一致性分析:不一致数据的产生主要发生在数据集成过程中,这可能由于被挖掘数据是来自于从不同的数据源、对于重复存放的数据未能进行一致性更新造成的。
数据特征分析
分布分析
分布分析揭示数据分布特征和分布类型。绘制频率分布表、绘制频率分布直方图、绘制茎叶图进行直观分析;对于定性分类数据,可用饼图和条形图直观的显示分布情况。
统计量分析
集中趋势度量:均值、中位数、众数
离中趋势度量:极差、标准差、变异系数、四分位数间距
相关性分析
散点图、散点图矩阵、计算相关系数
其他分析
周期性分析
Question 1003157: 如果不去除stop words,word2vec的结果会受到影响吗?
统计/机器学习 自然语言处理 数据预处理 开放问题正常情况下,做word2vec的时候是需要去剔除掉stop words。如果不去除stop words,word2vec的结果会受到影响吗?会影响到模型准确性,还是说结果就完全无效不能用了?
Answer
我觉得影响不大,更加不至于模型完全无效,模型应该是可以用的。
stopwords一般都是没有明确的意义,而且出现频率很高,比如英文中的of,a,the。
word2vec的原理是根据上下文共同出现的词来归纳词意,得到词向量的。而stopwords的上下文非常广泛,没有什么特定意义,上下文的内容很随机,所以对其他词汇的词向量的影响不大。
在Google的word2vec的原文也提到subsampling of frequent words,stopwords基本上都被欠采样了,所以影响就更小了。
Question 1003182: 最小二乘法与最小二乘支持向量回归的优劣
统计/机器学习 回归分析 开放问题以一个一维的的回归为例子,使用二阶最小二乘回归,最终需要得到公式: $y=aX^2+bX+C$,在最小二乘的计算方法下,要通过已知点拟合得到函数关系,需要做的计算是求解一个三个未知数,三个方程的方程组,此时其实不用管数据N量有多少,数据量的大小体现在那三个方程的各项相加当中。
而如果要使用最小二乘支持向量回归的方法,最终求解的方程组是一个有N+1个未知数,N+1个方程组成的方程组,一般俩说,数量都是巨大的,其实最小二乘回归也可以体现出每个数据的作用,那么在这个意义上,是不是说,最小二乘法回归会比最小二乘支持向量回归更加高效而简洁呢?而且更进一步地,最小二乘回归不存在核函数的问题,解释性会更好一些。
Answer
这是两种解线性模型$X^Tw=y$的回归方法,其中$X$是 $d$x$n$的$d$维$n$个列向量输入数据,$w$是$d$x$1$参数,$y$是输出。最小二乘LS是以随机变量($X$中的行)为计算相关性的单位;最小二乘支持向量回归LS_SVR是以数据点($X$中的列)为计算相似性的单位,类似kNN,以数据点间的距离的估计为基础。回归都是求条件期望(conditional mean),LS是以输入随机变量为条件,并学习输入随机变量到输出随机变量的模型;LS_SVR是以测试点离训练点的距离矩阵为条件,并学习这个距离矩阵到输出的映射。
1.公式:
LS:$\hat{y}=X_{new}^Tw=X_{new}^T(XX^T)^{-1}XY$, 这里$\text{Cov}(X,X)=XX^T$衡量的是输入随机变量的相关性,$\text{Cov}(X,Y)=XY^T$衡量的是输入与输出随机变量的相关性。
LS_SVR: $\hat{y}=X_{new}^Tw=X_{new}^TX\alpha=X_{new}^TX(X^TX+1/\gamma I)^{-1}Y$, 其中$w=X\alpha$认为参数$w$是输出数据$X$的加权平均,$\alpha$是每个点的重要性,$\alpha$大的点为support vector。应用kernel后变为$\hat{y}=K(X_{new},X)(\Omega +1/\gamma I)^{-1}Y$。$K(X_{new},X)$ 衡量测试与训练数据点的距离,$\Omega $是训练数据点的距离矩阵,$1/\gamma I$是正则项,让$\Omega +1/\gamma I$可逆。
2.优缺点:
LS优点是在$n>d$时,$(XX^T)^{-1}$计算量要远小于$(\Omega +1/\gamma I)^{-1}$;可直接得到$w$,解释性好;在测试点周围没有训练点时,做extrapolation。
LS缺点是要求所有训练数据点的随机变量要服从相同分布,而且要求测试和训练的随机变量要同分布。也就是说数据要分布一致,不能是mixture之类的数据。所以LS只能处理简单的数据。LS也不容易过拟合。
LS_SVR优点是可以用kernel代替计算高维上的距离;可处理mixture类的复杂数据。
LS_SVR缺点是训练计算量大;距离矩阵不稀疏;要求测试点周围有训练点,只能做interpolation;当使用kernel后不能显性求$w$,可解释性差;较容易过拟合(比如用RBF且半径设的很小)。
可看到除了计算量外,它们优缺点是互补的。如果问题简单,测试和训练数据的随机变量分布一致,用LS。如果测试点周围能找到很多训练点,可用LS_SVR。具体用哪个,主要看对模型估计有信心,还是对距离矩阵向输出的映射的估计有信心。
-----------------------------------
补充一下, 我觉得LS_SVR也有很好的解释性。LS中$w$是输入变量到输出变量的线性映射关系。类同,LS_SVR$\hat{y}=K(X_{new},X)\alpha$,其中$\alpha$是把一个$n$维距离向量到1维输出的线性映射关系。再次反映了LS是基于随机变量,LS_SVR是基于距离。
这几天看了些资料,特别是[Saunders C, Gammerman A, Vovk V. Ridge Regression Learning Algorithm in Dual Variables[C]// International Conference on Machine Learning, Madison, Wi, July. 1998:515-521.]这个文献。其实LSSVR就是一种岭回归的Kernel化,即正则化的最小二乘回归的Kernel化,其求解步骤较最小二乘而言是采用有约束条件下的Lagrange乘数法,其实最小二乘直接使误差函数做偏导的缘由是可以看做一个开口向上的二次函数,偏导为0则在谷点,用Lagrange法去求解最小二乘问题结果也是一样的。于是LSSVR和最小二乘法由此便同意起来了,当正则化参数为零(即表征高维空间中平面距离的项——惩罚项为零)且核函数就取XTX时,LSSVR退化成为一个最小二乘回归的形式。
关于LSSVR的优势在于,第一是通过正则化的运用,避免了最小二乘回归中稀疏矩阵A为奇异矩阵的情况;第二是通过Kernel化,将问题在一个对数据点而言的高维线性可拟合空间中进行拟合操作,这样可以比较方便地获得一个好的结果,而至于计算量,其实当采用Lagrange乘数法来对最小二乘问题进行求解时,也是需要求解一个和LSSVR等大的方程组。
SVM的解释性并不好,线性回归完全没有这个问题
线性回归计算特性好,可以求矩阵,也可以在线小批量计算,非常灵活,现在都是大数据了,这点SVM比不了
我唯一能想到的LSVR一个相对优势就是,最小二乘法使用时必须先假定阶数,也就是说必须先验or猜测地知道回归函数的阶数,而采用LSVR则省去了这一限制,但是完全可以把最小二乘的阶数取高一些就ok了呀,那也还是相对于LSVR会更具有计算上的优势
Question 1003199: 为什么K Means算法对样本的输入顺序比较敏感?
统计/机器学习 无监督学习 开放问题我看到K Means算法有哪些缺陷、劣势?这个里面的回答说:
- K means对样本的输入顺序比较敏感
- K means对数值特征的缩放也非常敏感
我想知道为什么K均值算法对样本的输入顺序比较敏感?这个敏感体现在什么方面?
Answer
对正常的K-means,或者说batch K-means,样本的顺序肯定是不会对结果有影响的,甚至中间步骤的结果也是没有影响的。
Question 1003221: Generic/Heuristic Algorithm是什么意思?有什么区别?
统计/机器学习 开放问题Generic/Heuristic Algorithm是什么意思?中文对应的是什么意思?
两者有什么区别?
Answer
Generic algorithm是通用算法。
Heuristic algorithm是和Generic 相对应的,所以就是非通用的,字面意思是“启发性算法”、“探索性算法”。启发性算法一般是根据经验或者问题本身、数据本身,采取的一种比较容易实现的方法。它可能不是最优解,也不是通用性的。但是简单易行,性价比高。
Question 1003257: meta learning是什么意思?
统计/机器学习 开放问题meta learning是什么意思?
有什么具体的例子?
Answer
meta learning,也称作,元学习,另一个更简单直观的说法叫让机器 “学会学习(learning to learn)”,目标是让机器可以从过往的任务中学习出某些知识、模式、或者算法的性质,可以灵活快速的指导新任务的学习,类似像人一样学会根据历史经验“举一反三”。授人以鱼,不如授之以渔。
machine learning是根据已有的数据进行学习,来完成一个task,比如分类任务、时间序列分析任务等等。通常,task和task之间,我们认为是完全独立的,相互是没有借鉴意义的。可实际上未必如此。
meta learning的核心就是让机器学会学习(learn to learn)举个例子就是,机器之前学习了100个task,之后机器学习第101个task的时候,会因为之前学习的100个task所具有的学习能力,而让第101个task表现得更好。比如说第一个任务是语音识别,第二个任务是图像识别,第一百个任务是文本分类,机器会因为之前所学到得任务,所以在后面得任务学习得更好。
Question 1003324: 训练样本中每个维度是否独立对回归结果的影响
统计/机器学习 回归分析 特征选择 开放问题对于一个回归问题,使用最小二乘/岭回归/支持向量回归等回归方式,有一个样本的群用于训练,其中一个样本为$X_m=(Z_1,Z_2,\cdots,Z_n,Y_m)$, 其中$(Z_1,Z_2,\cdots,Z_n)$为$X_m$的输入,$Y_m$为输出。问题是,如果输入$Z_1,Z_2,\cdots,Z_n$之间不是相互独立的,即输入向量的各维度之间有线性或非线性相关关系,这样训练得到的结果可信么?或者说,训练样本中各维度之间的独立性对回归结果的会有怎样的影响呢?
Answer
最小二乘回归已经考虑了输入随机变量间相关的问题。令所有都为列向量,训练输入$X$是$d\times n$矩阵,训练输出$y$是$1\times n$,测试输入$X_{test}$是$d\times m$矩阵。对$X$做SVD有$X=USV^T$。
$$\hat{y_{test}}^T=X_{test}^T(XX^T)^{-1}Xy^T$$
$$=X_{test}^T(USV^TVSU^T)^{-1}Xy^T$$
$$=X_{test}^TUS^{-1} (X^TUS^{-1})^Ty^T$$
令$Z=S^{-1}U^TX=\Phi X$,则
$$\hat{y_{test}}^T=Z_{test}^TZy^T$$
$$=Z_{test}^T\Sigma_{Zy}$$
$Z$是$X$在新特征空间($X$ 的clomun space)的坐标,$U$是去相关性,$S^{-1}$是做$Z$的标准化。因为基向量$U_{i*}$与$U_{j*}$相互垂直,所以新特征$Z$相互独立,$corr(Z_i,Z_j)=0$。$\Sigma_{Zy}$是最小二乘模型真正学习到的$Z$和$y$之间的相似矩阵,也就是$Z$和$y$之间的线性转化矩阵。
思路是:自变量相关,很难研究自变量$X$和因变量$y$间独立线性关系。把自变量$X$转换为独立变量$Z$,并学习$Z$和$y$的线性转换关系$\Sigma_{Zy}$。有点像输入图像->FFT->Filtering>IFFT->输出图像的套路。(其实$X_i$和$y$的独立的相关性可以用partial correlation表示。)
Question 1003355: Q-learning里的Q是什么意思?
统计/机器学习 开放问题 强化学习刚刚接触强化学习不久,不是太了解Q-learning里的Q是什么意思
Answer
Q-learning里的Q是Quality的意思,每次action之后的Quality,评价每次行动的质量(得分)。
对应的,Q-learning里还有Q-table,就是记录每个state不同action对应的quality。
Question 1003377: 现实生活中有哪些例子是服从帕累托分布的?
统计/机器学习 概率分布 开放问题现实生活中有哪些例子是服从帕累托分布的?
Answer
Pareto分布就是尾部很长的分布,“二八定律”,也就是20%成员贡献了80%的总量
有很多这样的例子:
所有餐馆的等待时间(全世界绝大多数的餐馆是几乎不需要等待的,有些则要等几十分钟,个别要提前几个月排队预约)
每个人的淘宝订单数
世界上每个人拥有的财富(大部分财富被小部分人拥有)
每个企业的营业额
世界上每件衣服的价格
Question 1003379: 为什么岭回归和最小二乘支持向量回归有一样二次规划形式却有不同解
统计/机器学习 回归分析 开放问题岭回归(RS)和最小二乘支持向量回归(LS_SVR)的凸二次回归问题其实是一样的,就是岭回归的正则化参数是乘在惩罚项(权重向量/斜率 的内积)上,而最小二乘支持向量机的正则化参数是乘在误差项上的,在这样的情况下为什么会出现当训练点数大于维度数时岭回归的计算量小于最小二乘支持向量回归呢?
希望知道关系:Y=XTω,其中X是一个N*M矩阵,由M个N维列向量组成
RS: ω=(XXT+αI)-1XY
LS_SVR: 当映射函数φ(X)=X时,公式为,ω=X(XTX+γ-1I)-1Y
可以发现RS需要对一个N*N矩阵求逆,LS_SVR需要对一个M*M矩阵求逆,一般而言M大于N,所以LS_SVR的计算量将显著大于RS的计算量。但是他们的二次规划问题的形式是一样的,只是正则化参数(可以看成一个常系数)乘的位置不一样,怎么会造成最后的求解公式结果不一样呢?难道只是因为求解方法不一样?因为LS_SVR是拉格朗日乘数法而RS是直接对待求权重求偏导?
Answer
你提到的
Ridge
$$(XX^T+\alpha I)^{-1}X$$
和最小二乘SVM回归的
$$X(X^TX+\gamma^{-1}I)^{-1}$$
当$\alpha=\gamma^{-1}$的时候,就是完全等价的吧,你把两个逆矩阵分别左乘右乘一下,就得到一样的了
Ridge
$$X(X^TX+\gamma^{-1}I)$$
LS SVR
$$(XX^T+\alpha I)X$$
当去掉正则项后,从数学上二者是等价的。比如$X=USV^T$,
$$w_{RS}=(XX^T)^{-1}XY=(US^{-1}V^TVS^{-1}U^T)USV^TY=US^{-1}V^TY$$
$$w_{LS_SVR}=X(X^TX)^{-1}Y=USV^T(VS^{-1}U^TUS^{-1}V^T)Y=US^{-1}V^TY$$
显然二者相等。但是在实际数值计算上二者并不相等,因为$XX^T$或$X^TX$可能不可逆,需要加正则项让他们可逆,求出稳定(stable)的逆矩阵解。至于$XX^T$和$X^TX$谁求逆更稳定,理论不太清楚。我的感觉是越小的矩阵越容易求逆。比如$X$是$N\times M$,如果$N<M$,则应该用RS。
Question 1003427: 如何对两个名义分类变量的关联性进行可视化展示?
统计/机器学习 描述性统计 开放问题 数据可视化两个数值变量或者有序分类变量,我们可以画二维的散点图,然后画个线性拟合线之类表示它们的相关性。
如果是两个名义分类变量(无序的),如何对它们的关联性进行可视化展示?
Answer
先对两个变量的频数进行统计,得到列联表(contingency table),然后对列联表做热图
可以用热图吧
Question 1003462: word2vec怎么处理一词多义的情况?
统计/机器学习 自然语言处理 开放问题比如“苹果”,一个意思是“一种水果”,一个意思是“手机、电脑品牌”。按照word2vec,意义相近的词的词向量也是想接近的,那么苹果的词向量是和香蕉、橙子的词向量接近,还是和三星、华为、联想之类的词接近?
有没有办法分开处理一词的多个含义?
Answer
word2vec处理不了多义词的,但是Google最新的语言文字模型BERT可以处理。
了解一下BERT(Bidirectional Encoder Representations from Transformers)。
BERT的这个文章里还特地举例了,bank,在英文里是银行的意思,也是河岸、河畔的意思,典型的一词多义。
我觉得word2vec本身应该是不能处理这个问题的,word2vec的作用是对词汇进行向量表达。如果一个词汇有多个含义,那么这个词汇的词向量本身也应该是多个向量的加和。
比如你提到的“苹果”,一个意思是“手机”,一个意思是“水果”,如果你做减法操作,$v($苹果$)-v($手机$)$,这个减法的结果应该比较接近$v($水果$)$。
此外,有一些基于word2vec的方法可以处理一词多义,如果看兴趣的话,可以看论文Solving Verbal Comprehension Questions in IQ Test by Knowledge-Powered Word Embedding的Section4.2。
Question 1003486: 随机投影的实际效果如何?
统计/机器学习 无监督学习 数据降维 开放问题作为一个降维手段,随机投影的实际效果如何?和PCA比的话,有优势吗?
Answer
PCA是要找到一个最佳的投影矩阵(最大方差的方向),而且随机投影就是用一个随机的投影矩阵。既然要“找到”最好的,PCA的计算复杂度远远大于随机投影。
简单来说,随机投影是牺牲了一些精度,但是大大降低了计算量。所以你看你的“实际效果”指的是精读还是计算效率了。
如果数据的分布是接近高斯混合模型的时候,随机投影的效果也不错。(参考文献 Dasgupta, Sanjoy. "Experiments with random projection." )
Question 1003578: 有什么方法可以找到时间序列的周期?
统计/机器学习 时间序列 开放问题比如有的时间序列的周期是按天,有的按周,有的按两周,有什么方法可以自动找到时间序列的周期?
Answer
算周期简单的方法是计算自相关(autocorrelation)。如果要计算所有可能位移的自相关系数,计算量为$\mathcal{O}(n^2)$。这时通常用换到频域,根据时域卷积等于频域相乘,利用FFT和IFFT把计算量减小到$\mathcal{O}(n\log{}n)$。如果只计算个别位移的自相关系数,可以直接计算。
做了个实验。
import numpy as np
from numpy.fft import fft,ifft
import matplotlib.pyplot as plt
from sklearn import linear_model
N=1024 # days
m=8 # cycles
# np.random.seed(0)
x = np.linspace(0,m*2*np.pi, N) # N days= m cycles, N/m days/cycle
y0=np.sin(x+1.)
SNR=1./10
noise_std=y0.std()*np.sqrt(1/SNR)
y=y0+np.random.randn(N)*noise_std+x*.5
# y=y-y.mean()
# y=y/y.std()
regr = linear_model.LinearRegression()
regr.fit(x.reshape([-1,1]), y.reshape([-1,1]))
y_slow = regr.predict(x.reshape([-1,1])).flatten()
# y_slow=0
y_residual=y-y_slow
plt.plot(y,label='y')
plt.plot(y_slow,label='y slow')
plt.plot(y_residual,label='y residual')
plt.title('y')
plt.legend()
plt.show()
# FFT to calculate auto-correlation
y_fft=fft(y_residual)
S=y_fft*y_fft
y_corr=ifft(S)
plt.plot(np.absolute(S),'-*')
plt.xlim([0,N/2])
plt.title('|S|')
plt.show()
cycles=np.argmax(np.absolute(S)[:N/2])
print ('# of cycles=%d'%cycles)
print ('%d days/cycle'%(N*1./cycles))
print ('frequency =%.5f'%(cycles*1./N))
# temp=S*0
# temp[max_index]=1
# y_corr=ifft(temp)
# plt.plot(y_corr)
# plt.show()
# of cycles=8
128 days/cycle
frequency =0.00781
一个是方法是画图,直接肉眼观察
还有一个方法就是利用自相关系数来确定周期(什么是自相关系数)
我猜你是想把时序数据分成趋势数据、周期数据、残差数据,好多工具呢,比如facebook家就开源了一个。
Question 1003671: 对于异常数据的判断?
统计/机器学习 概率分布 抽样方法 模型验证 开放问题例如在一个实际的问题当中(如交通场景),使用的数据源是由传感器收集到的数据,由于传感器的误差,难免会导致数据集中的一些数据是有问题的,与大部分的样本不一样,但同时,也有些样本可能就是现实中确实真实存在的异常样本(例如某些交通异常情况)。我理解的正确做法应该是,把第一种数据给处理掉,第二种数据给保留,但是如果使用一般的异常检测算法,或者根据分布筛选数据,那么两种异常情况下的样本是不是都被干掉了?这样数据肯定相对规整,预测精度能带来有效提升,但是这不是把现实生活中某些真实的异常样本给去除了吗?
数据集中的样本我们能操控,如果将来将模型部署到真实生活中,那对于那些异常样本的预测效果不就会是很差的了吗?
叙述的有点绕,希望大家能耐心看下我的问题,谢谢!
Answer
看你需求吧,因为你用大数据本质上就是来通过重复学习大数上的分布得到大概率的pattern,来预测一个新的instance的结果。那么这种情况下本来异常(小概率事件也好,误差也好)本来就应该被预先排除,才能防止你的算法学到噪音啊。如果你的任务本身是关注异常的,那你需要先定义ground truth,啥叫异常。。。或者给出描述异常的公式。。。相似度啊啥的定义。。。(也就是说你需要预先知道什么叫做异常),在这种情况下你需要有另外一个方式来描述误差。。。才能帮你在set up中把两种异常区分开。。。所以你这个问题本身就蛮矛盾的。。。
我觉得你说的这两种异常可能也不太一样,所以多少也许是有办法区分的
比如交通异常下的异常数据应该是在时间上具有一定的连续性、平滑性
仪器误差可能是突发性的,也许前一秒就没有仪器异常,后一面就发生了,这样的话,这个时间序列就不是平滑的或者连续的,是间断跳跃式的
Question 1003710: 怎么判断训练集和测试集是同一个分布?
统计/机器学习 概率分布 模型验证 开放问题我现在有训练集和测试集,怎么来判断或者说验证训练集和测试集是同一个分布?
这个“分布”我是指的这个问题里的分布(机器学习中,数据的分布是指什么呢?)
Answer
如果你不知道测试集的真实值/目标变量,可能比较难判断。这样你只能比较训练集的$X$和测试集的$X$。
假如你有测试集的目标变量的真实值,你可以用训练集拟合一个模型,测试集拟合另一个模型,然后对比两个模型的参数。
另一个思路是你对训练集进行bootstrap,拟合出多个模型,然后再看测试集拟合出的模型的参数在不在训练集bootstrap出来的模型参数的范围内。
Question 1003756: spark ml和spark mllib区别
统计/机器学习 开放问题spark里有两个机器学习的库,一个是spark ml另一个是spark mllib。
它们有什么区别啊?如果是入门,学哪个好?
Answer
在谷歌搜索Spark ML,排行前两名的结果分别是:
- MLlib: Main Guide - Spark 2.4.0 Documentation - Apache Spark
- Spark ML Programming Guide - Spark 1.2.2 Documentation
在Spark ML的官方文档提到:
Note that we will keep supporting and adding features to spark.mllib along with the development of spark.ml. Users should be comfortable using spark.mllib features and expect more features coming. Developers should contribute new algorithms to spark.mllib and can optionally contribute to spark.ml.
应该是现在主流推荐使用Spark MLlib
一个是基于pandas的Dataframe数据结构,一个是基于弹性数据集结构的,你可以自己搜一下
好像官方建议使用基于Dataframe
入门的话,Spark ML好学一点,更容易点,好上手,是基于spark DataFrame,做pipeline很方便。
Spark MLib更底层一点,灵活度大一些,所以对使用者要求更高一些。
Question 1003786: L1范数回归与TV正则化哪个的回归效果更好?
统计/机器学习 回归分析 开放问题基于L1范数作为惩罚项(正则项)的回归就是LASSO回归,文献中分析说具有自动降维的功能,相比于基于2范数即Tikhonov正则化的回归能够避免回归结果的过渡平滑,而TV正则化的描述中也说其可以避免Tikhonov正则化的过渡平滑。从数学公式上来看,LASSO的惩罚项是超平面广义斜率的绝对值之和,TV正则化的惩罚项是超平面广义斜率的梯度的绝对值之和,这二者在实际表现中,是否有优劣之分或者适用的问题范围呢?
Answer
它们不可比。LASSO是$\sum |w|_1$,$w$之间是独立的,比如身高和体重对应的系数就独立。LASSO只能让$w$稀疏,不能让它smooth。而TV是$\sum\sqrt{(\nabla w_i)^2}$,其中$\nabla w_i$是$w_i$的local gradient vector。$w_i$和$w_{i+1}$相关,比如图像或音频。TV是让相邻系数间的差稀疏,也就是系数smooth。和TV相比的是$w$ local gradient 的L1,L2norm。经验上是光滑程度L2>TV>L1。
L1对应$\nabla w \sim Laplace$, L2对应$\nabla w \sim Gaussian$,TV介于两者间。
Question 1003891: PCA需要正态性作为提前假设吗?
统计/机器学习 概率分布 无监督学习 数据降维 开放问题在网上的一些文章里看到有提到,PCA需要正态性作为提前假设。这是为什么呢?
Answer
PCA主成分分析要求数据是近似正态分布的,一般对于样本数据较高时都会适用。
Question 1004047: 用户画像具体是指什么?
统计/机器学习 开放问题 应用场景在很多文章里以及面试里,都有“用户画像”这个概念,请教各位这个具体是指什么意思?包含哪些内容?
Answer
用户画像——“User portrait”,即用户信息标签化,就是通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息的数据之后,抽象出一个用户的商业全貌的基本方式。
什么是用户画像:
用户画像,又称人群画像,是根据用户人口统计学信息、社交关系、偏好习惯和消费行为等信息而抽象出来的标签化画像。构建用户画像的核心工作即是给用户贴“标签”,而标签中部分是根据用户的行为数据直接得到,部分是通过一系列算法或规则挖掘得到。直接得到的数据比较好理解,比如用户在网站或APP上主动填写和上传的数据,严格一些平台(比如电商平台)会要求用户上传身份证、学生证、驾驶证、银行卡等,这样的数据准确性就较高,因此毫无疑问阿里和腾讯在用户基础数据的准确性上甩百度几条街。通过算法和数据挖掘得到的标签可以这么理解:如果一个用户最近开始购买母婴类商品(比如一段的奶粉,New Baby的纸尿布),那么可以根据用户购买的频次及数量,结合用户的年龄、性别推断是否为新妈妈/爸爸。
BAT用户画像数据浅析:
百度: 百度数据类型广泛,主要包含搜索数据、百度知道、百度贴吧及百度地图等数据,但是这些数据很少可以精确到个体用户层面,搜索大数据可以预测流行病爆发时间、世界杯的胜负概率及城市拥堵状况,总之百度的数据在宏观层面有不少应用,但是在微观的用户画像层面,百度毫无优势,大部分人还没有百度账号呢,百度的用户体系最近几年也是靠一些APP慢慢完善起来的。
腾讯: 腾讯的数据优势在社交数据,此外随着微信/QQ支付的普及,腾讯也有了用户身份证、银行卡等数据。腾讯的数据积累年限久远、维度丰富,从QQ、Qzone、腾讯微博到微信,腾讯涵盖兴趣偏好、地理位置、人口统计学信息等等数据,且准确性也不低。 腾讯在用户画像数据方面有很广泛的维度,且在兴趣、心理特征等标签上有很高的准确性。
阿里:据统计,2015年阿里巴巴活跃用户数为4.07亿,覆盖98.5%的中国互联网购物人群。其中,移动月度活跃用户达到3.93亿,占整个中国手机网民的64%,这意味着六成以上的中国手机网民都是淘宝或天猫移动端的活跃用户。(以上相关数据摘自“阿里妈妈电商营销”微信公众号) 目前阿里的数据标签已经逐步整理到阿里的数据超市——GProfile全局档案。GProfile 全局档案是以消费者档案为核心构建内容,通过分析消费者的基础信息、购物行为以描绘其特征画像。在阿里数据的平台上,GProfile 主要根据用户在历史时间内的网购行为记录,从网购时间点、内容深度剖析,提供用户基础属性、社交行为、互动行为、消费行为、偏好习惯、财富属性、信用属性和地理属性八大类标签服务。此外,从数据能力来说,阿里的数据还可结合优酷土豆视频数据、CNZZ友盟媒体数据、虾米天天动听音乐数据等。(以上相关内容摘自“阿里数据”微信公众号) 阿里数据的特点是真实、可靠,随着公司收购其他数据类平台,阿里的数据类型也逐渐丰富起来,在用户画像数据方面,阿里可谓彻彻底底的真人数据。
用户画像的价值:
1:精准营销。精准营销是用户画像或者标签最直接和有价值的应用。这部分也是我们广告部门最注重的工作内容。当我们给各个用户打上各种“标签”之后,广告主(店铺、商家)就可以通过我们的标签圈定他们想要触达的用户,进行精准的广告投放。无论是阿里、还是腾讯很大一部分广告都是通过这种方式来触达用户,百度的搜索广告方式有所不同。
2:助力产品。一个产品想要得到广泛的应用,受众分析必不可少。产品经理需要懂用户,除了需要知道用户与产品交互时点击率、跳失率、停留时间等行为之外,用户画像能帮助产品经理透过用户行为表象看到用户深层的动机与心理。
3:行业报告与用户研究。通过对用户画像的分析可以了解行业动态,比如90后人群的消费偏好趋势分析、高端用户青睐品牌分析、不同地域品类消费差异分析等等。这些行业的洞察可以指导平台更好的运营、把握大方向,也能给相关公司(中小企业、店铺、媒体等)提供细分领域的深入洞察。
感想:
用户画像是对人的深入挖掘,除了基本的人口统计学信息、地理位置、设备资产等客观属性之外,如兴趣偏好等是自由度很大的标签,在很多应用题场景,广告主(或需求方)更需要用户兴趣、价值观、人格层面的标签。比如汽车客户,环保类的电动车品牌想要触达的是有环保意识、喜欢小排量的用户,这就涉及到人的价值观层面了,因此制作这些标签的时候不能仅仅通过用户行为直接产生,需要更深入人格的建模。随着互联网野蛮生长时代的消退以及数据技术的进一步提升,从人心理、人格层面的深度分析将逐渐得到重视和应用。我十分期待阿里能构建一套基于人格心理学的标签,这必将给淘宝带来更好的用户体验,增加我这种不喜欢花哨页面用户的停留时间。
收集自知乎
就是为用户构建属性,比如性别、年龄等人口属性,工作地、居住地、常去地等地点属性,实际工作中,有的需要建模预测,有的只需做数据统计或简单的计算。一般用于在广告投放的时候,确定受众标签,所以构建时通常要考虑准确率和用户群体的覆盖率
我的理解就是把一个个用户抽象化,转成结构化的多维数据,比如对于电商,用户画像包括地区、年龄、性别、购买力、购买倾向、购买频次等。
Question 1004124: seq2seq模型有什么应用场景?
统计/机器学习 开放问题seq2seq模型有什么应用场景?不大想了解技术细节,就是想知道下seq2seq有哪些常用的应用场景呢?
Answer
seq2seq最初提出来是用来解决翻译问题的。比如输入一句英文,输出一句对应的中文翻译。
后来也有了其他的应用,比如根据一幅图给出一个标题:输入一个图像,输出一句话。给一段音乐添加一段描述:输入一段信号(音频),输出一段文本。给图像配乐:输入一个图像,输出一段音频。
可以利用seq2seq来建立一个文本摘要模型,就是根据一篇文章,自动生成摘要
翻译
人机对话
文本摘要生成
Question 1004166: y取值有上下界限的回归问题
统计/机器学习 回归分析 开放问题大家好,我现在有一个回归问题,目标变量y是固定了上下界的,也就是说y是有一个取值范围的。所以我的预测值也一定要在这个范围之内。
对于这种回归问题,该怎么处理呢?需要对y做变换吗?
Answer
既然y取值有固定范围,那么训练集的y肯定是在这个范围之内的。
可以考虑用决策树或者随机森林,它们的预测值肯定是在训练集y的范围之内的。
也可以考虑kNN模型,这种投票算法也能确保预测值不会超过训练集的范围。
1. 如maxroot说的用基于nearest neighbor类的方法,不会超过训练y范围。
2.基于最小二乘类方法,有可能超过训练y范围,这时要考虑:
2.1如果y有物理意义,或测试y超出范围的概率、幅度都很小,对结果影响不大,可以用训练y的最大最小值去限制。
2.2可以对y作变换,比如y-d,y+d作为最小最大值,为测试y留出一定富余范围。
可以尝试用归一化。
训练集的预测值做归一化,训练模型,然后对测试集预测,预测值用刚刚的归一化映射回去,比如用Min-Max。理论上就可以通过训练集的y值的范围来控制测试集的y值的范围了。
如有错误,欢迎指出。
Question 1004329: 机器学习中的投票算法是指什么?
统计/机器学习 开放问题机器学习中的投票算法是指什么?具体有哪些有名的算法是投票算法?
Answer
voting(投票)和averaging(平均)是stacking算法两种手段。voting针对的是分类问题,averaging针对的回归问题。
比如随机森林分类就是投票算法。每棵树产生一个预测,我们最终是看所有树的预测结果,得票最多的预测结果就是最终的预测结果。
当然我们也可以创造一些投票模型,比如对于一个二分类问题,我们有5个模型:决策树、SVM、k近邻、逻辑回归、朴素贝叶斯。对于一个样本,我们就可以得到5个预测结果,它们未必相同,我们就选择得票最高的预测结果。
投票就是把各个分类器的结果进行汇总。
hard voting:将各个分类器得到的结果进行汇总,选择得票最多的那个结果为预测结果。最终返回标签。
soft voting:将各个分类器得到的预测概率进行平均。最终返回概率。
sklearn里相关的实现:voting-classifier。
Question 1004351: 请问深度学习的书有推荐吗
统计/机器学习 深度学习 开放问题机器学习的书多了去了,但是深度学习系统讲解的教材有哪些啊,感谢推荐
Answer
《深度学习(Deep Learning)》,所谓的花书
作者都是大佬,Ian Goodfellow, Yoshua Bengio, Aaron Courville.
书籍网站:http://www.deeplearningbook.org/
讲课:http://www.deeplearningbook.org/lecture_slides.html
练习:http://www.deeplearningbook.org/exercises.html
《Python深度学习(Deep learning with Python)》
作者Francois Chollet,他也是Keras的作者,所以这个书主要讲了keras
练习资源:https://github.com/fchollet/deep-learning-with-python-notebooks
《探索深度学习(grokking Deep Learning)》,这本更加入门。
作者Andrew W. Trask
强烈推荐《Python深度学习》,结合Keras,理论实践一起讲,https://item.jd.com/12409581.html
1. Ian Goodfellow的《deep learning》讲概念。应该有中文版。
2. Geron的《hands on machine learning》讲编程。
邱锡鹏教授的新书《神经网络与深度学习》,访问个人网站就可以获取。这本书讲理论,十分详细,而且有ppt、exercise,你再配合一本实践的书或者直接在网上实践,完美。
花书《Deep Learning》 Ian Goodfellow
如果想补一下数学基础的话,可以看看这个,《深度学习的数学》,作者:[日]涌井良幸 涌井贞美,译者:杨瑞龙
Question 1004487: NLP里的OOV是什么意思?
统计/机器学习 自然语言处理 开放问题NLP里的OOV是什么意思?经常看到这个OOV,但是也没有人写出全称。
Answer
在自然语言处理或者文本处理的时候,我们通常会有一个字词库(vocabulary)。这个vocabulary要么是提前加载的,或者是自己定义的,或者是从当前数据集提取的。
假设之后你有了另一个的数据集,这个数据集中有一些词并不在你现有的vocabulary里,我们就说这些词汇是Out-of-vocabulary,简称OOV。
OOV就是out-of-vocabulary,不在词库里的意思。
Question 1004535: 评分卡模型是什么?
统计/机器学习 开放问题 应用场景有了解评分卡模型的吗?这个模型具体是做什么的,可以讲讲吗?
Answer
评分卡模型主要是在金融领域使用较多,比如银行、信用机构、p2p机构等等。评分是指对客户的信用度评分。
信用评分卡模型是指根据客户的各种属性和行为数据,利用一定的信用评分模型,对客户进行信用评分,据此决定是否给予授信以及授信的额度和利率,从而识别和减少在金融交易中存在的交易风险。
一般是二元分类,训练集中有两类客户,一种信用好的客户,一种是信用不好的。因为是二元分类,所以那些常用的算法都可以用。
Question 1004548: 脑纹锁 有开源项目吗
统计/机器学习 开放问题 应用场景Answer
不大了解你说的脑纹锁,但是感觉就是对脑电波分类。应该就是判断时序曲线的相似度吧,相似度高的就是同一个人。
推荐一篇有监督的论文Classification_of_time_series_by_shapelet_transformation
还有一个无监督的k-Shape: Efficient and Accurate Clustering of Time Series
Question 1004592: 低维嵌入(low dimension embedding)是什么意思?
统计/机器学习 数据降维 开放问题低维嵌入(low dimension embedding)是什么意思?是和降维一个意思吗?
Answer
是的。降维,即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”,在这子空间样本密度大幅度提升,距离计算变得更加容易。我们的数据虽然是高维的,但是与学习任务相关的也许仅仅是某个低维分布,即高维空间中的一个低维“嵌入”。--西瓜书
把原始数据从高维投射到低维空间得到的结果就是低维嵌入。
比如原来每个样本可以在$n$维空间内表示为一个有$n$个元素的向量,通过降维变形等手段,我们得到了一个$k$维空间内的新向量。如果$k\lt n$,新向量就是原向量的低维嵌入。
比较典型的例子就是word2vec
Question 1004600: 怎么处理训练集中有而测试集中没有的那些特征?
统计/机器学习 数据预处理 特征选择 开放问题大家好,我训练集中有10个特征,而测试集中只有其中8个特征,少了2个特征。这种情况我该怎么处理呢?谢谢!
Answer
先說明你的特徵是什麼吧?
你是指分成10類的意思嗎?
要么删掉那些特征,要么把那些特征当作空缺值,然后填值。
把这些feature从training里面拿掉
Question 1005291: 数据产品具体指的是什么?
统计/机器学习 开放问题这两年比较火的一个职位叫做数据产品经理。想知道数据产品具体指的是什么?
Answer
以数据和模型推动的产品都算是吧,没有严格的定义。
比较常见的比如搜索排序、推荐系统、竞价系统等等。
Question 1005292: 怎么评价tSNE的降维效果?
统计/机器学习 数据降维 模型验证 开放问题怎么评价tSNE的降维效果?
Answer
效果好不好主要是肉眼看吧,毕竟tsne不能当作真正的降维手段来用,所以也没有什么必要去看降维的那些指标好不好。tsne主要用来降维做数据可视化的。
看看这篇帖子tsne被忽视?tsne有什么缺点?里abuu的回答。所以不建议把它用作分类前的降维。
tsne是非监督的降维,感觉没有什么直接评价的方法。一个方法用数据可视化。如果tsne之后还有后续工作,比如聚类或者分类,那么可以看最终的模型表现如何,和没有用tsne的模型做对比。
Question 1005442: 怎么对时间序列类的数据进行聚类?
统计/机器学习 无监督学习 时间序列 开放问题假设每个样本都有自己的一条时间序列曲线,怎么对时间序列类的数据进行聚类?
Answer
使用传统K-Means等等都可以,问题的关键是如何定义距离。有两个东西可以给你参考:
1. Time Series Data Clustering,书籍Data Clustering: Algorithms and Applications的第15章,从学术的角度阐明各种不同时间序列聚类的方法;
2. 近几年刚刚提出的K-Shape算法:http://www1.cs.columbia.edu/~jopa/Papers/PaparrizosSIGMOD2015.pdf
要看你聚类的目的是什么了。简单一点的话,就每个样本提起出均值和方差,然后做两维的kmeans。
稍微复杂一点,就以每个时间点作为一个特征,比如每个样本都有相同起始终止点,一共有50个时间点,那么相当于每个样本都有50个特征,然后做50维的kmeans。
Question 1005483: k均值有用到EM的思想吗?
统计/机器学习 无监督学习 开放问题k均值有用到EM的思想吗?
Answer
它们还是不大一样的,EM的意思是Expectation Maximization。
EM的每一次迭代需要计算概率,从而得到期望(E),然后根据目标来迭代更新模型中的参数,使得似然函数变大(M)。
KMeans是硬聚类,其中没有概率和期望的问题,是通过迭代来减少簇内点和中心点的距离平方和。
Question 1005511: few-shot learning是什么意思?
统计/机器学习 开放问题few-shot learning是什么意思啊?
Answer
few指的是有标签的样本少,few-shot learning就是小样本学习
正常来说在多标签分类,或者图像识别深度学习模型需要每一类标签都有大量的样本;而实际上可能比较难获得大量的样本,few-shot learning就是要针对这种情况
为什么我们相信可以解决这种难题呢?因为人类就可以,给一个小孩看一张“斑马”的照片,小孩一定能从马、河马、斑马中挑出斑马
现在few-shot learning的解决办法包括:基于元学习meta learning、基于Finetune、基于metric、匹配网络(matching networks)、原型网络 (Prototypical Networks)、基于graph neural network、模型无关自适应(Model-Agnostic)
Question 1005512: 建模时一定需要验证集或者测试集吗?
统计/机器学习 模型验证 开放问题一开始数据集要被分成三份,分别是训练集、验证集、测试集。验证集和测试集都需要吗?是不是重复了?只留其中一个可以吗?
Answer
验证集(validation set)和测试集(test set)本身就并不是完全等价的。
参考:validation set和test set的区别?
在这两个集合上可以分别得到验证误差和测试误差,用来衡量模型表现精度。
有时候我们用cross valiadtion来代替training set和validation set,但是即便如此,我们也最好要留一份test set。
需要验证集和测试集的。
验证集用来调参,测试集用来得到真实的泛化误差。
Question 1005528: tsne被忽视?tsne有什么缺点?
统计/机器学习 无监督学习 数据降维 开放问题 数据可视化tsne作为降维方法,效果感觉比pca要好不少,特别是mnist的例子上
但是tsne好像不被重视,课上不讲,很多人也不用,降维都是pca,为什么呢?是有什么明显的缺点吗?
Answer
除了其他人提到的那些缺陷,tsne的稳健性和一致性不是太好。
1. tsne对超参的设置比较严苛,设置不当,会导致结果很差。
最左是原始的数据,剩下五个是tsne处理后的数据,明显看出在一些参数下,结果并不理想
2. tsne后聚类的大小没有实际意义
最左是原始的数据,蓝色较大,黄色较小。剩下五个是tsne处理后的数据,每簇的大小看起来很随机。
3. tsne后聚类间的距离没有意义
最左是原始的数据,黄色蓝色较近、绿色分隔得比较远。剩下五个是tsne处理后的数据,原图中的距离并没有被保留。
4. 随机噪音在tsne处理之后看起来不像随机噪音
最左是原始的数据,正态分布的随机点。剩下五个是tsne处理后的数据,似乎还能看出各种不同的规律,并不像是完全的杂乱无章。
5. tsne后聚类出现不规律的形状
最左是原始的数据,杂乱无章,没有明显的分布。剩下五个是tsne处理后的数据,出现了各种形状,有的似乎还出现了聚类。
上面种种问题让tsne显得难以驾驭。在工程中,使用得并不广泛。
参考文献:如何高效使用tsne
我觉得主要有三个大问题:
1)tsne太慢,不适合于大规模计算或者大数据
2)tsne不能对test data做transform。比如说我们对training data进行pca,然后可以利用刚刚得到的pca分解矩阵直接对test data进行变换。但是tsne不行。
3)tsne的结果具有一定的随机性,而不是像pca,结果一致性很好。
tsne明显是比pca更高阶的降维算法,要是说缺点的话,tnse占用内存比较大,耗时比pca要长。
Question 1005670: sota model是什么意思?
统计/机器学习 开放问题新人提问,sota model是什么意思?是哪种model?
Answer
sota model就是特别牛的model,没有特指什么。
sota=State of the Arts,一般就是指在一些benchmark的数据集上跑分非常高的那些模型。
Question 1005704: 微调算是transfer learning的一种吗?
统计/机器学习 深度学习 开放问题 人工神经网络之前一直接触比较多cv,微调也用过。据说微调也算是transfer learning的一种,有这个说法吗?
Answer
fine tune是transfer learning的一个实例。transfer learning就是说先完成其他任务,把学习到的知识用在新的任务上。这一点上fine tune就完全符合我们对transfer learning的理解。
Question 1005941: 除了线性回归,逻辑回归,线性模型(linear model)包括哪些模型和算法?
统计/机器学习 开放问题除了线性回归,逻辑回归,线性模型(linear model)包括哪些模型和算法?还是说线性模型就等价于这两种模型了?
Answer
我们常说的线性回归、逻辑回归(二分类)、softmax回归(多分类)都属于Generalized Linear Model(广义线性模型)。根据y的不同分布,Poisson regression,Gamma regression,Tweedie regression也都属于广义线性模型,他们的区别只是Link function不同。而Linear predictor都是一样的(线性的),形如:
$\eta = \beta \textbf{X}$
此外Ridge,LASSO,Elastic Net等正则方法也都能用在线性模型上,也就是 LASSO regression什么的。
不知道你想问的线性模型具体是指广义线性模型还是基于线性方法的算法。比如支持向量机……说他线性吧,他能解决非线性分类;说他非线性吧,他本质上还是线性分割(高维特征空间的超平面分割)。
除了glm之外,像自回归(AR),还有ARIMA,SARIMA这种时间序列模型也是线性模型。
多项式回归也算是线性模型。
其实所有矩阵分解模型本质上也都是线性模型,包括NMF,MF,SVD,PCA,GloVe模型
还有朴素贝叶斯。
推导过程可以看下这个问题里朴素贝叶斯是线性分类器吗?木子周的回答
Question 1005951: 商业数据模型中lead score是什么意思?
统计/机器学习 开放问题 应用场景商业数据模型中lead score是什么意思?
Answer
lead是指对你产品有兴趣的人或者企业,简单来说就是潜在客户。
lead scoring model是对潜在用户/客户进行打分的模型,分数越高,潜在用户最终转化为真正用户的概率越大。
一般公司lead score都是0到100的数值,lead score的作用是通过数据指导销售部门的工作。
lead generation中的lead指销售机会,lead generation也就是与潜在客户接触,收集相关资料,帮助委托人寻找销售机会。
lead score指对销售机会进行整理、分类、评估,以便找出最有潜质的客源;通常来说lead score越高的对象,潜客挖掘时的优先级就越高。
Lead指的是线索,在toB的业务场景里更多一些。
B2B客户的采购周期更长,但是客单价往往非参高,需要培养、跟进才能签单成交。通常B2B市场部会给销售部提供大量线索(lead),进到漏斗里面,最终只有少量的客户才能实现成交。
为了提高业务跟进的效率,往往会通过模型给所有的线索打分,分数越大的线索,最后成交的可能性和价值就越高;业务只需要按照线索分数高低作为工作优先级的指导。线索评分就是lead score。
Question 1006048: 通过SVD分解已经可以得到AX=Y解的稳定性的度量为什么还需要定义条件数来说明?
统计/机器学习 回归分析 特征选择 开放问题对于一个方程组:
AX=Y,其中A:N×N,X:N×1,Y:N×1;
设A有SVD分解:A=U∑VT,∑=diag(σ1,σ2,...,σN),则可得X的解写作:
X=V∑-1UTY,将其展开写易得,
X=Sum1:N(ViUiT(Yi/σi,i)),其中Vi、Ui是行向量,T表转置,Yi是Y的第i个元素,
可以发现,当奇异值σi,i越小时,解X对Y中的扰动就会越敏感,也就是说似乎我们可以直接用最小奇异值作为线性系统AX=Y中解X对Y中扰动的敏感程度,也即表征系统的病态性。既然如此请问为什么还要定义一个“矩阵条件数”来说明病态性呢?
Answer
奇异值的相对大小比绝对大小更重要,矩阵条件数(condition number)更反映系统矩阵$A$的性质。举例说明:
线性方程$Ax+\epsilon=y$,$\epsilon$是高斯白噪声,在任意单位向量上投影后能量(方差)为1。
1. 当$\sigma_1\approx \sigma_N$且都很小,只要$|U_N^Ty|>|U_N^T\epsilon|$,也就是在最小分量上,信号$y$的能量比噪声$\epsilon$的能量大,信噪比大,$1/\sigma_N$也主要是放大信号。如果$|U_1^Ty|<|U_1^T\epsilon|$,说明信噪比太小。情况只能在生成信号时,放大信号$Ax$或降低噪音,提升整体信噪比。所以奇异值绝对值都很小的问题主要在生成信号时解决,很难在后期处理时解决,并且和$A$的特征无关。
2. 当$\sigma_1>> \sigma_N$,假设$\epsilon$是高斯白噪声,$|U_i^T\epsilon|=1$。此时$|U_N^T\epsilon|/\sigma_N >> |U_1^T\epsilon|/\sigma_1$,也就是噪声在最小分量上放大太多,如果$x$是图像的话会显示为有错误(artifact)而不是噪声。人眼是低通系统,会过滤一定的噪声,但是会认为artifact是真实的图像,所以这种危害比纯粹噪声更大。一般办法是加正则项,降低条件数,相对减小最小分量的放大系数。也可以认为最小分量上的信噪比小,可信度低,所以不能放大太多。
Question 1006090: 互联网或者业界中的“数据治理”是什么意思?
统计/机器学习 开放问题 应用场景互联网或者业界中的“数据治理”是什么意思?
Answer
发挥数据价值。
譬如一个后端服务,产生了很多纬度的数据,也有很多业务方需要这些数据去统计并分析一些现象,这时候后端如果能通过一些数据处理方式,把数据按照业务方要求很方便得提供给业务方,就是属于数据治理的一种方式。
数据治理并不等同于数据管理,而只是数据管理的顶层执行层面。数据管理指规划、控制和提供数据及信息资产,发挥数据和信息资产的价值,强调在企业间或企业内部进行。数据治理是对数据资产管理活动行使权力和控制的活动集合(规划、监控和执行)。数据治理制定正确的原则、政策、流程、操作规程,确保以正确的方式对数据和信息进行管理。
数据治理岗位就是制定和执行数据管理的流程制度,提高企业数据质量,发挥数据价值。
规范数据和提高数据质量,是数据分析和数据建模的前提
Question 1006193: 怎么识别“的”“地”“得”是否用错?
统计/机器学习 自然语言处理 开放问题汉字里用的“地”“的”“得”很容易用错,怎么来构造一个算法来判断语句中的“地”“的”“得”是否用错呢?
Answer
如果有包含“地”“的”“得”并且正确使用的语料,贝叶斯方法应该可以解决这个问题
Question 1007463: 机器学习提到的MVP是什么意思?
统计/机器学习 开放问题机器学习提到的MVP是什么意思?谢谢
Answer
M(Minimum) V(Viable) P(Product),最小可用产品。罗马不是一天建成的,在产品开发完善迭代的时候,一开始总有一个很简单的但是满足基本功能的产品,这个就是最小可用产品。
比如你现在需要一个点击预估模型,你先做了一个逻辑回归上线了,这个模型虽然简单,也许精度也不算太高,但是它也能满足基本功能,这样的模型就算是MVP。
现在的互联网技术,接受的一个概念是最小可用产品,MVP,就是开发团队、设计团队用最小的成本代价,最大程度去验证产品的可行性。这个产品的可行性,是指这个需求是否真实存在,一个产品满足需求的方式是不是对的。
Question 1007498: 在数据很大的场景下怎么进行数据探索?
统计/机器学习 开放问题 应用场景如在使用spark的情况下,数据一共有2亿条。是运用collect转换成如python可处理的格式后进行操作吗?还是有更好的方法进行数据探索。
Answer
你应该不需要直接处理到2亿条数据的吧
如果是要用2亿条数据直接建模,你可以用sparkmllib
如果你只是去做一些交叉分析然后做一些可视化,可以先在spark里进行筛选汇总操作,最后再pandas出来一个很小的dataframe
Question 1007578: lstm可以用来做产量销量预测吗
统计/机器学习 时间序列 开放问题 应用场景lstm模型可以用来做产量销量预测吗
Answer
可以,但是实践下来效果并不是很好,倒不是方法本身的原因,而是纯的LSTM或者ARIMA这种模型更多的是考虑是当前点与前一段序列的关系,但是产量或者销量本身背后的业务逻辑并不是这样的。例如,前一段时间的产量高涨可能只能产能的调整,后续由于库存原因就需要进行减产,但LSTM可能会延续这种趋势。同理,前段时间的销量高涨可能只是消费的提前释放等等。
且不提很多时候是以产定销或者以销定产的业务模式,产销量更多的还是和产能规划、市场规模及占有率或者其它一些因素的影响更大一些,时序模型并不是很好用。
Question 1022112: 文本分类问题怎么做data augmentation?
统计/机器学习 自然语言处理 数据预处理 开放问题图像分类问题经常会用data augmentation,那文本分类问题怎么做data augmentation?有类似的方法吗?
Answer
文本分类有很多数据增强的方法:
比如随机打乱、随机删除、随机插入、回译等等
Question 1022131: 随机森林回归输出的结果除了采用每棵决策树的平均值,还有别的方法吗?
统计/机器学习 回归分析 开放问题随机森林回归输出的结果除了采用每棵决策树的平均值,还有别的方法吗?只是好奇问问
Answer
随机森林属于Bagging集成学习中的一种,集成学习中的单模型结合策略 主要有三种方式,有平均法,投票法,学习法,具体为:
(1) 平均法
对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干和弱学习器的输出进行平均得到最终的预测输出。
(2) 投票法
对于分类问题的预测,我们通常使用的是投票法。假设我们的预测类别是{c1,c2,...cK}对于任意一个预测样本x,我们的T个弱学习器的预测结果分别是(h1(x),h2(x)...hT(x))。最简单的投票法是相对多数投票法,也就是我们常说的少数服从多数,也就是T个弱学习器的对样本x的预测结果中,数量最多的类别ci为最终的分类类别。如果不止一个类别获得最高票,则随机选择一个做最终类别。稍微复杂的投票法是绝对多数投票法,也就是我们常说的要票过半数。在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数。否则会拒绝预测。更加复杂的是加权投票法,和加权平均法一样,每个弱学习器的分类票数要乘以一个权重,最终将各个类别的加权票数求和,最大的值对应的类别为最终类别。
(3)学习法
上两种的方法都是对弱学习器的结果做平均或者投票,相对比较简单,但是可能学习误差较大,于是就有了学习法这种方法,对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果。在这种情况下,我们将弱学习器称为初级学习器,将用于结合的学习器称为次级学习器。对于测试集,我们首先用初级学习器预测一次,得到次级学习器的输入样本,再用次级学习器预测一次,得到最终的预测结果。
对于随机森林回归,也可以用中位数或者分位数
Question 1022314: 一个post网页爬取问题(爬取城市数据)
统计/机器学习 数据预处理 开放问题网址是https://data.cnki.net/ValueSearch/Index?ky=%E4%BA%91%E6%B5%AE
想爬取各个城市的数据进行分析,但是提交post表单,也添加了headers,发送请求返回的status_code却是500,可能是学艺不精,请大佬们帮忙看看。
Answer
这个可能是你的ip问题,我用的教育网ip是可以返回200的。
建议登录知网,然后使用cookie进行爬取。
来自sofasofa(一个专业的机器学习社区),建议去sofa社区阅读,这里只是记录。防止网站在网络中走失。