数据科学

数据科学专业人员,机器学习专家以及有兴趣了解该领域的人员的问答

3
班级不平衡-如何最大程度地减少误报?
我有一个具有二进制类属性的数据集。有623个类别为+1的实例(癌症阳性)和101,671个实例为-1的实例(癌症阴性)。 我尝试了各种算法(朴素贝叶斯,随机森林,AODE,C4.5),并且所有算法都有不可接受的假负比率。随机森林具有最高的总体预测准确度(99.5%)和最低的假阴性率,但仍错过了79%的阳性分类(即未能检测到79%的恶性肿瘤)。 有什么想法可以改善这种情况吗? 谢谢!

3
Spark上IPython / Jupyter的问题(别名无法识别)
我正在设置一组VM,以在使用外出并花钱建立带有某些硬件的集群之前尝试使用Spark。快速说明:我是一名具有应用机器学习背景的学者,并且在数据科学领域有点工作。我使用这些工具进行计算,很少需要设置它们。 我已经创建了3个VM(1个主虚拟机,2个从虚拟机)并成功安装了Spark。一切似乎都按预期进行。我的问题在于创建一个Jupyter服务器,该服务器可以从不在群集计算机上运行的浏览器连接到。 我已经成功安装了Jupyter笔记本 ...并且可以运行。我添加了一个新的IPython配置文件,该配置文件使用Spark 连接到远程服务器。 现在的问题 命令 $ ipython --profile=pyspark 运行正常,它连接到Spark集群。然而, $ ipython notebook --profile=pyspark [<stuff is here>] Unrecognized alias: "profile=pyspark", it will probably have no effect. 默认为default配置文件,而不是pyspark配置文件。 我的笔记本配置pyspark具有: c = get_config() c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8880 c.NotebookApp.server_extensions.append('ipyparallel.nbextension') c.NotebookApp.password = u'some password is here'


7
LinkedIn网络抓取
我最近发现了一个新的R包,用于连接到LinkedIn API。不幸的是,LinkedIn API似乎很受限制。例如,您只能获取有关公司的基本数据,而这与有关个人的数据是分离的。我想获取有关给定公司的所有员工的数据,您可以在网站上手动进行操作,但无法通过API进行操作。 如果import.io能够识别LinkedIn分页,则将是完美的选择(请参阅页面末尾)。 有谁知道适用于LinkedIn网站当前格式的任何Web抓取工具或技术,或者如何弯曲API进行更灵活的分析?最好是在R或基于Web的环境中,但当然可以接受其他方法。

5
如何合并每月,每日和每周数据?
Google趋势返回每周数据,因此我必须找到一种将它们与我的每日/每月数据合并的方法。 到目前为止,我所做的就是将每个系列分解为每日数据,例如: 从: 2013-03-03-2013-03-09 37 至: 2013-03-03 37 2013-03-04 37 2013-03-05 37 2013-03-06 37 2013-03-07 37 2013-03-08 37 2013-03-09 37 但这给我的问题增加了很多复杂性。我试图根据最近6个月的值或每月数据中的6个值来预测Google搜索。每日数据意味着需要对180个过去的值进行处理。(我有10年的数据,因此每月数据为120点/每周数据为500 + /每日数据为3500+) 另一种方法是将每日数据“合并”到每周/每月数据中。但是这个过程引起了一些问题。可以对某些数据求平均,因为它们的总和代表某些东西。例如,降雨,一周中的降雨量将等于构成一周的每一天的降雨量之和。 就我而言,我正在处理价格,财务汇率等问题。对于价格,在我的领域中通常会考虑交易量,因此每周数据将是加权平均值。对于财务费率来说,它要复杂一些,其中涉及一些公式来从每日费率中建立每周费率。对于其他事情,我不知道基础属性。我认为这些属性对于避免无意义的指标非常重要(例如,平均财务利率是无稽之谈)。 所以三个问题: 对于已知和未知的属性,我应该如何处理从每日到每周/每月的数据? 我觉得像每周一样将每周/每月数据分解为每日数据有点不对劲,因为我介绍的是现实生活中没有意义的数量。所以几乎是相同的问题: 对于已知和未知的属性,我应该如何从每周/每月变为每日数据? 最后但并非最不重要的一点:给定两个具有不同时间步长的时间序列时,哪个更好:使用最低或最大时间步长?我认为这是数据数量和模型复杂性之间的折衷,但是我看不出有任何强有力的论据可供选择。 编辑:如果您知道一个工具(在R Python甚至Excel中)很容易做到,将不胜感激。

3
现场感知分解机
谁能解释现场感知因式分解机(FFM)与标准因式分解机(FM)相比如何? 标准:http : //www.ismll.uni-hildesheim.de/pub/pdfs/Rendle2010FM.pdf “现场感知”:http : //www.csie.ntu.edu.tw/~r01922136/kaggle-2014-criteo.pdf

1
R中MLE的Fisher评分v / s坐标下降
R基函数glm()将Fisher评分用于MLE,而glmnet似乎使用坐标下降法来求解相同的方程。坐标下降比费舍尔计分法更省时,因为费舍尔计分法除了计算某些其他矩阵运算外,还计算二阶导数矩阵。这使得执行成本很高,而坐标下降可以在O(np)时间内完成相同的任务。 为什么R基函数使用Fisher评分?与其他优化方法相比,此方法是否有优势?协调血统和费舍尔评分如何比较?我在这个领域比较陌生,因此任何帮助或资源都会有所帮助。

2
用稀疏数据解方程组
我正在尝试求解一组具有40个自变量(x1,...,x40)和一个因变量(y)的方程式。方程的总数(行数)为〜300,我想求解40个系数的集合,该系数最小化y和预测值之间的总平方误差。 我的问题是矩阵非常稀疏,我不知道用稀疏数据解方程组的最佳方法。数据集的示例如下所示: y x1 x2 x3 x4 x5 x6 ... x40 87169 14 0 1 0 0 2 ... 0 46449 0 0 4 0 1 4 ... 12 846449 0 0 0 0 0 3 ... 0 .... 我目前正在使用一种遗传算法来解决此问题,得出的结果大约是观察到的和预期的两个差异。 任何人都可以提出能够解决稀疏数据方程组的不同方法或技术吗?

1
连续在线集群识别的解决方案?
让我向您展示一个假设的在线集群应用程序的示例: 在时间n,点1,2,3,4被分配给蓝色群集A,点b,5,6,7被分配给红色群集B。 在时间n + 1,引入了新的点a,该点被分配给蓝色聚类A,但也导致点b也被分配给蓝色聚类A。 最后,点1,2,3,4,a,b属于A,点5,6,7属于B。对我来说,这似乎是合理的。 乍一看似乎很简单,实际上有点棘手-要跨时间步长维护标识符。让我尝试通过更多边界示例来阐明这一点: 绿点将导致两个蓝色和两个红色点合并为一个簇,我任意决定将其着色为蓝色-请注意,这已经是我在工作中的启发性思维! 做出此决定的计算机将必须使用规则。例如,当点合并到群集中时,群集的身份由多数决定。在这种情况下,我们将面临平局-蓝色和红色可能是新(此处为蓝色)群集的有效选择。 想象一下靠近绿色的第五个红色点。然后大多数将是红色(3红色vs 2蓝色),因此红色将是新群集的一个不错的选择-但这将与最右边群集的红色的更清晰选择相矛盾,因为那些群集是红色的,可能应该保持这种状态。 我觉得这很可疑。归根结底,我想这还没有完美的规则-启发式优化了某些稳定性标准。 这最终导致我的问题: 这个“问题”是否具有可以引用的名称? 是否有“标准”的解决方案,并... ...甚至可能有R包吗? 重复聚类中聚类身份的合理继承

2
用于服务器监控的神经网络
我正在寻找pybrain来接收服务器监视器警报并确定问题的根本原因。我很高兴使用监督学习对其进行培训并整理培训数据集。数据的结构如下: 服务器类型A#1 警报类型1 警报类型2 服务器类型A#2 警报类型1 警报类型2 服务器类型B#1 警报类型99 警报类型2 因此,有n台服务器,其中x个警报可以是UP或DOWN。这两个n和x是可变的。 如果服务器A1的警报1和2为DOWN,则可以说该服务器上的服务a已关闭,并且是问题的原因。 如果所有服务器上的警报1都关闭,则可以说服务a是原因。 原因可能有多种选择,因此直接分类似乎不合适。 我还想将以后的数据源绑定到网络上。例如只是ping某些外部服务的脚本。 由于进行了串行服务检查,因此可能不会立即触发所有适当的警报,因此可以在一分钟内关闭一台服务器,然后在五分钟后关闭另一台服务器,从而启动警报。 首先,我正在尝试做一些基本的事情: from pybrain.tools.shortcuts import buildNetwork from pybrain.datasets import SupervisedDataSet from pybrain.supervised.trainers import BackpropTrainer INPUTS = 2 OUTPUTS = 1 # Build network # 2 inputs, 3 hidden, 1 output neurons net = buildNetwork(INPUTS, 3, …

3
仅使用正数和未标记的数据构建二进制分类器
我有2个数据集,一个具有要检测的阳性实例,另一个具有未标记的实例。我可以使用哪些方法? 作为示例,假设我们想了解基于一些结构化电子邮件特征的检测垃圾邮件。我们有10000个垃圾邮件的数据集,还有一个100000电子邮件的数据集,而我们不知道它们是否为垃圾邮件。 我们如何解决这个问题(不手动标记任何未标记的数据)? 如果我们有关于垃圾邮件在未标记数据中所占比例的其他信息,该怎么办(即,如果我们估计100000未标记电子邮件中有20-40%是垃圾邮件,该怎么办)?

4
特征提取技术-汇总数据序列
我经常在建立一个模型(分类或回归)时,在该模型中有一些序列预测变量,我一直在寻找技术建议,以便以最佳方式将其总结为预测变量。 举一个具体的例子,假设正在建立一个模型来预测客户是否会在未来90天内离开公司(t和t + 90之间的任何时间;因此是二进制结果)。可用的预测因素之一是时段t_0至t-1期间客户的财务余额水平。也许这代表了前12个月的每月观测值(即12次测量值)。 我正在寻找构建本系列文章功能的方法。我使用每个客户系列的描述,例如均值,高,低,标准差,拟合OLS回归来得出趋势。是他们计算特征的其他方法吗?其他衡量变化或波动的方法吗? 加: 就像在下面的回复中提到的那样,我也考虑过(但忘记在此处添加)动态时间规整(DTW),然后在所得的距离矩阵上进行分层聚类-创建一些聚类,然后使用聚类成员身份作为功能。评分测试数据可能必须遵循对新案例和聚类质心进行DTW的过程-将新数据系列与其最接近的质心进行匹配...


4
生成分类规则的算法
因此,我们有潜力将一种机器学习应用程序很好地适合分类器所解决的传统问题领域,即,我们拥有一组属性,这些属性描述了最终出现的项目和“存储桶”。但是,不是创建模型对于诸如朴素贝叶斯(Naive Bayes)或类似分类器之类的概率,我们希望我们的输出是一组大致人类可读的规则,可由最终用户查看和修改。 关联规则学习看起来像解决这类问题的算法家族,但是这些算法似乎专注于识别功能的常见组合,并且不包括这些功能可能指向的最终存储桶的概念。例如,我们的数据集如下所示: Item A { 4-door, small, steel } => { sedan } Item B { 2-door, big, steel } => { truck } Item C { 2-door, small, steel } => { coupe } 我只想要说“如果大而有两扇门,那是一辆卡车”的规则,而不是说“如果是四成之门也很小”的规则。 我可以想到的一种解决方法是,仅使用关联规则学习算法,而忽略不涉及结束存储桶的规则,但这似乎有些hacker。我是否错过了一些算法系列?还是我一开始就错误地解决了这个问题?

3
以后可以将为MongoDB编写的map-reduce算法移植到Hadoop吗?
在我们公司中,我们有一个包含大量非结构化数据的MongoDB数据库,我们需要在该数据库上运行map-reduce算法来生成报告和其他分析。我们提供两种方法来执行所需的分析: 一种方法是将数据从MongoDB提取到Hadoop集群,然后完全在Hadoop平台中进行分析。但是,这需要在准备平台(软件和硬件)以及教育团队使用Hadoop并为其编写映射减少任务方面进行大量投资。 另一种方法是将我们的精力放在设计map-reduce算法上,然后在MongoDB map-reduce功能上运行这些算法。这样,我们可以创建可以生成报告的最终系统的初始原型。我知道MongoDB的map-reduce功能与Hadoop相比要慢得多,但是目前数据还不算大,这使得它成为瓶颈,至少在接下来的六个月内不会。 问题是,使用第二种方法并为MongoDB编写算法,是否可以将它们稍后以很少的修改和算法重新设计移植到Hadoop?MongoDB仅支持JavaScript,但是易于处理编程语言上的差异。但是,MongoDB和Hadoop的map-reduce模型之间是否存在根本差异,可能迫使我们重新设计算法以实质性地移植到Hadoop?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.