数据科学博客
今天我们开始讨论Rachel的新博客,这实在是棒极了,人们应该去看看她对于数据科学的洞察。她目前正在关注的话题有:为什么我建议开设这门课程,EDA(探索性数据分析),上周的数据科学概论的分析,以及将数据科学定义为一门研究学科。
她希望学生及旁听生对于参与博客讨论感到轻松舒适,这就是他们之所以在博客的缘由。她特别希望人们在担心如何将一个令人眼前一亮的模型呈现给大众之前,首先了解对数据和模型有所感知的重要性。
为了说明这一点,她引用了些重磅言论:
“担心如何去说服别人之前,你必须首先自己弄清楚事情的机理。”
- 安德鲁·格尔曼
“同意” - 雷切尔舒特
思维实验:你会怎么模拟混沌?
我们分成小组讨论了几分钟,然后便一起讨论。
这里有一些学生的想法:
· 一个Lorenzian水车就能做到,如果你知道那是什么。
· 问题:混沌和随机一样吗?
· 许多物理系统可能现出内在的混沌:例如有限状态的机器
· “通过模拟混沌来讲解‘序’”的教学技巧,为我们模拟了一个受灾区域的真实世界
· 这门课程里我们想要看学生将会如何处理混沌局面。大多数数据问题初始都是有一定量的脏数据(dirty data),难于定义(ill-defined)的问题,并且亟待解决。
我们可以传授一种从混沌创造秩序的方法吗?
另请参阅“在初始状态从混乱中创建秩序”。
与Doug Perlson(RealDirect首席执行官)的谈话
我们分成了4或5人的小组来组织我们对Doug的疑问。学生们被布置了一个截止于下周的作业,任务是需要给这家新公司提出一个数据战略。他走了进来,向我们介绍了他在不动产法律、创业公司和网络广告方面的背景, 并告诉我们,他想利用一切他现在知道的数据来改进人们进行房屋交易的方式。
首先,他们建立了专为卖家的界面,提供给他们卖房方面实用的数据驱动技巧,并且利用交互数据提出下一步的实时建议。道格指出,通常人们每7年卖一次房子,并且他们不是专业人士。 RealDirect的目标不只是使个人的销售更好,同时也让专业人士在他们的工作做得更好。
他说道,地产经纪是“自由代理” - 他们自行运作。他们守卫他们的数据,真正的优秀人才有很多的经验,换言之他们有更多的数据。但很少经纪人有足够的经验来把它做好。我们的想法是雇佣执照的地产代理团队作为数据专家。他们学会如何利用信息收集工具,使我们能够收集数据,这不仅仅是公开的资料信息(例如,现有的新数据是合资企业的销售数据)。
公开数据的一个问题是有3个月的滞后期。
RealDirect正在研究即时反馈方面的数据:
· 人们开始搜索的时刻,
· 最初的报价是多少,
· 报价和交易结束的时间间隔
· 人们在网上搜索的方式。
最终,良好的信息可以使得买卖双方获益。
RealDirect有 2种盈利模式。首先,$395每个月的套餐,来获取给卖方的工具权限。其次,我们允许您以较低的佣金使用我们的代理商(销售额的2%,不是通常的2.5% 或3%)。数据驱动这一特点允许我们公司收取更低的佣金,因为我们更加优化,并且为此,我们获得了更大的成交量。
道格提到,在纽约有一条法律:不能显示所有当前住房房产列表,除非它是在某个需要注册而获得的渠道,这就是为什么RealDirect需要注册。
这对购房者来说是个障碍,但他认为认真的买家都愿意去做。他认为那些不需要注册的公司,比如Zillow,不是可以相提并论的竞争者,因为他们只是展示列表,而不是提供实实在在的服务。他指出,Pinterest也是你需要注册才能使用的。
道格指出,RealDirect由各种房地产经纪人协会下的执照经纪人组成,但即使如此,他们也曾收到过同样的攻击邮件,来自于那些痛恨他们削减佣金成本的房地产经纪人。在这个意义上,RealDirect有些像是一个公会。
在另一方面,他认为,如果一个房地产经纪人因为该房产正在RealDirect出售而拒绝展示房子,那么买家会在其他地方看到房源后抱怨。因此,传统的经纪别无选择,只能向他们展示房子。换句话说,房源信息本身足够透明,使传统的中介无法避免买家交易这些房子。
RealDirect目前没有考虑季节性问题——他们采取的策略是假设该卖家试图今天卖掉。道格谈到买方会在意的各种问题:附近的公园、地铁和学校,以及同一建筑或街区里所出售的公寓每平方尺的价格比较。这些是买方需要确定的关键数据。
就该网站运作方式而言,听起来有点像一个买家和卖家的社交网络。有每个人在该网站的状态:活动 – 提出报价 - 报价被拒绝 - 展示 -合同期内等。基于你的状态,网站会提出不同的建议。
对Doug的建议?
线性回归模型
例1. 平面上有如下点:(x, y) = (1, 2), (2, 4), (3, 6), (4, 8).它们之间的关系显然是y=2x。你可以直接心算出来。实际上,你已经发现
线性趋势
系数是2
目前来讲是确定模型
例2. 又有一些在平面上的散点,但是现在假定x是输入值,y是输出值。
(x,y)=(1,2.1),(2,3.7),(3,5.8),(4,7.9)
现在你注意到y~2x,但是这不是一个完美的对应。有些偏差,现在不再是确定模型了
例3.(x, y) = (2, 1), (6, 7), (2.3, 6), (7.4, 8), (8, 2),(1.2, 2).
现在单靠心算没法得到x和y 之间关系了,并且点之间并没有明显的线性关系。但是如果无论如何都要找到它们之间的关系又该如何呢?
首先假设(对于当前情形)x和y之间存在关系,并且是线性的。这是你能在初始阶段做到的最好的了,换言之假设y=β0+β1x+ε
并且寻找β0和β1的最优解。注意到我们加入了ε因为这不是一个吻合的对应关系。这一项是“噪声”,对应于该线性模型不能解释的部分,也称为误差。
在我们能找到一个通用公式前,我们希望推广到三个变量的情形:x1,x2,x3,并且我们再一次试图用这些值来解释y。如果我们试图把它进行可视化,需要在4维空间里绘制出这些点。综上所述,假设一个线性模型意味这寻找下列问题的解:
y=β0+β1x1+β2x2+β3x3+ε
表示成矩阵形式,我们有y=x·β+ε
我们如何计算β呢?答案是定义“残差的平方和”,记为RSS(β),即
其中i是所有数据点的标号。RSS被称为损失函数。它有很多变种,但这是最基本的形式,部分原因是它给出了一个拟合的接近程度的非常好的度量。
为了最小化
我们对它关于β进行微分,然后让它等于0,再解出β。最终我们得到
我们把该结果代回到线性公式,替代β来得到一个预测值y。但是且慢,为什么我们假设模型是线性的呢?有时候可能是多项式的
你需要阐明你假设的理由。解答这种问题是成为数据科学家的关键,也是为什么我们需要认真学习这些东西的原因。
如果你已经有了一列y和一列x,所有这些在R代码里只需要一行:
model <- lm(y ~ x)
或者如果你打算用多项式形式,我们有:
model<- lm(y ~ x + x^2 + x^3)
为什么我们要做回归呢?主要出于两方面原因:
· 如果我们需要从下一个预测一个变量
· 如果我们想要解释或者理解两个事情之间的关联。
K近邻算法
比如你有很多人的年龄、收入和信用评分数据,你希望用年龄和收入来猜测信用评级。另外,我们把信用评级分成了高低两档。我们可以把这些人当做平面上的点,如果他们的信用评级是低档,就用”x”进行标记。如果有个新来的人要怎么办呢?他的可能的信用评级是什么?我们来用k近邻算法。为此,你需要解答两个问题:
1. 你想看多少个“临域”?比如k=3
2. 什么是临域?我们需要一个距离的概念
为了我们的问题,如果变量的相对尺度大致正确的话,我们可以用平面上的欧氏距离。然后算法就只需要取我周围人的平均信用评级即可,这里平均指的是其中的大多数人,即如果有两个高评级和一个低评级的人,那么我就会被定为高评级的。
注意我们也可以考虑做些微调,亦即指定高的值为1,低的为0,然后进行真正意义上的平均,这种情形的结果是0.667.这就会暗示出某种不确定性。这依赖于你想从算法里得到什么。在机器学习算法,我们通常没有置信度的概念,而更关注于预测的精确度。但是当然这取决于我们。
一般来说,我们有训练阶段来生成模型并且“训练”它,然后测试阶段,用新数据来测试模型的精确度。
对于k近邻算法,训练阶段很傻瓜,仅需要读入数据就可以了。在测试阶段,你假定自己不知道真正的标签是什么,用这个算法来猜测标签,以此检验算法的好坏。这意味着你要从所有数据里存一些清洁数据用于测试阶段。一般来说,你要存至少10%的随机抽取的数据。
在R里,读入“class”包,用函数knn().
按照如下方式运行算法:
knn(train, test, cl, k=3)
输出包含k个最近的(在欧氏距离意义下)训练集的向量,分类标签由多数表决决定
你如何评估模型是否合适呢?
这不是简单的也不是万能的:你可以决定对某种误分类增加惩罚。例如假阳性(falsepositives)可能比假阴性(false negatives)严重的多。
开始而言,你可以先简单的最小化误分类率:错误标签的数量/总标签的数量
如何选择k呢?
这也是个棘手的问题。下周的部分作业会解决这个问题。
选择线性回归模型还是k近邻?
思考下异常值(outliers)发生了什么有助于你认清这个问题的复杂程度。有时这可以归于决策者希望相信什么的问题。
注意“接近程度”的定义非常依赖于上下文:在社交网络中可以被定义成重合的朋友的数量。
线性回归和k近邻都是监督学习的例子(监督学习指的是你观测到了x和y,并且你想知道x映射到y 的函数)。
原文发布时间为:2014-07-04
本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号