首先机器学习这个词应该更侧重于技术方面和各种算法。
一般提到机器学习就会想到语音识别,图像视频识别,机器翻译,无人驾驶等等各种其他的模式识别,甚至于谷歌大脑等AI,这些东西的一个共同点就是极其复杂的算法,所以说机器学习的核心就是各种精妙的算法。
但是这些在工业界机器学习很多职位并不是这么一回事的,相对于以上种种逼格要low很多,公司里面很多任务是数据给你之后你就是尝试“普适的”算法往里面套就是了,所以在工业界很多声称搞机器学习的都是调包侠;再者因为机器学习的算法和模型基本都是一般性的,没有domain knowlege,所以又有了很大一部分工作做特征工程。
在工作中:
工作内容就是写代码,优化算法,维护代码,维护业务。
后台开发技术是最基本的基础,我这里就是c/c++和TCP/IP网络编程,淘宝那里也许主要是java
企业里面用这些技术,都是明摆着要赚钱的,老板不管你模型牛逼不牛逼,哪怕你用个傻逼的模型,只要效果好,能赚钱就行。所以,多数时候,简单的模型比各种牛逼论文中的牛逼模型效果好。。。。
至于怎么去设计这个模型,看个人的数据敏感度吧,我觉得和理论功底关系不大。有些人总是能找到一些特别好的属性,显著提高算法效果。
就比如你看到上面的百度联盟广告,其实也是后台有推荐和数据挖掘算法在跑的。也许,就这个东西,百度就有好几个工程师在跟进,这就是一个业务场景,一个大的互联网公司有成千上万个类似的场景,都有很多工程师在做。
当然,数据挖掘可以做很多事情,个性化推荐和个性化广告,是我自己在做的领域,所以多说两句。
由于非常方便评测效果,所以做这个领域压力是特别大的,不管你多牛,你算法没效果,说啥都没用。不像一些开发领域,只要你完成开发任务即可,维护修复bug即可。
做data mining和machine learning的人,最好是算法和工程都要兼备,一方面是要掌握一门编程语言,C++或者Java,然后再掌握一门脚本语言,python或者perl或者ruby。当然,会matlab就更是加分了。哦,会hadoop也很欢迎。
书籍方面,就是Jiawei Han教授和他的学生(现在也在当老师了)写的《数据挖掘:概念与技术》,配合我们国科大的刘莹老师的PPT,效果更佳。(刘莹的讲课视频。。。讲得很不好,就是读ppt。看jiawei han的就行了)
其他的,可以看看王斌老师翻译的《大数据》和bishop的PRML或者MLAPP
还是那句老话,数据比算法重要,有很多数据,你即使用最烂的算法,也可能获得非常好的效果;用最牛逼的算法,也可能效果差强人意。利益比算法重要,只要你做的工作可以增加网站流量或者提高商品的销售量,你就是牛逼,老板就认可你,老板不管你用了什么技术或者数学模型。现在的推荐系统,算法并不是最重要的层面了,待解决的问题,基本上都是非干货非技术层面的问题,比如说,怎么解决数据少,cold start,或者说data sparsity的问题
数据挖掘则更偏向于“数据”而非算法,而且包括了很多数据的前期处理,用爬虫爬取数据,然后做数据的清洗,数据的整合,数据有效性检测,数据可视化(画图)等等,最后才是用一些统计的或者机器学习的算法来抽取某些有用的“知识”。前期数据处理的工作比较多。
总结:
机器学习强调的是算法,而数据挖掘是整个过程,包括:数据仓库,数据建模,数据预处理,算法,工程化等。
机器学习,更注重于模型的训练, 偏于过程。而数据挖据,更注重于获得有效数据,重在目的。
数据挖掘(Data Mining)更应该叫Knowledge Discovery in Databases,它是数据库、机器学习、统计的混合体。
机器学习是一系列基于概率统计的模型或算法,主要有生成式和判别式两类;数据挖掘首先处理的是数据而不是图像(计算机视觉),所以是对经验数据的原因或结果的分析处理,其中分析的方法很大部分属于机器学习算法,如通过一系列条件估计某个结果的概率,其实就是生成式,数据挖掘还包括预处理和数据实际化建模的问题,高于纯数学算法。
机器学习是对算法的研究,比较理论,重视的是算法的优化,正确率的提高,关注的是算法本身。数据挖掘和模式分类则注重的是结果,一个是从数据中提炼出有用的信息,一个是对对象进行分类。如果理解的简单一点,一个是理论的范式,一个是实际应用。数据挖掘有一整套的流程,数据仓库,数据清洗整合,数据处理,数据可视化等等。可以说数据挖掘整体的流程中包含了机器学习,机器学习的很多算法就是应用在数据处理这个步骤的,但是数据仓库,清洗整合和数据可视化就包括了许多其他的技术和理论,比如数据库,3D建模,甚至virtual reality的知识,从这个角度来说,数据挖掘涉及的知识面又比机器学习广了许多。直观角度看,数据挖掘更工程一点。模式分类,虽然也包含了一定的无监督学习,但是本身是一个偏向分类的过程。而数据挖掘在数据处理的步骤中包含了很多无监督学习,以及许多模式提取的知识。
DM更注重efficiency,指知识发现的整个过程(爬取、存储、预处理、分析、可视化);ML更注重effectiveness,关注数据分析中的一些有实质性的启发式算法(substantive heuristics),可能这些算法并没有普适性;Statistics更注重数学角度的validity。推荐你看两篇经典文章:
From data mining to knowledge discovery in databases
Three perspectives of data mining
数据可视化
北京大学袁晓如教授,最知名的成果是基于平行坐标的改进,他在可视化顶级会议InfoVis和Vis上有多篇文章,还有一篇文章好像是获得了best application paper。有幸去过他实验室两次参观,受益匪浅。
另外,浙江大学的陈为、MSRA的刘世霞、深圳先进研究院的陈宝权、香港一个大学的屈华明。应该都是在做可视化国内比较出名的研究人员。每人都有多篇SIGGRAPH或者InfoVis的paper 。
数据:数据采集 →数据存储→数据处理→数据分析→数据挖掘
可视化:图表(表格、柱状图、折线图、饼图、散点图、甘特图、K线图、雷达图、地图等)
动画(交互动画、Timeline等)
可视化工具或库:Tableau、Excel等,D3.js、Raphael、http://plot.ly、ECharts、HighCharts等
可视化三阶段:Chart -> Dashboard -> Story
工程师:
编程技能 (python、R等)
数学知识 (统计学等)
领域知识 (行业术语、各项指标含义、计算方式)
数据嗅觉 (略)
艺术 (+暴击)
(hadoop/hdfs/mapreduce) ( /hive/spark)
数据可视化: R、python的plot的package要用熟。 或者tableau一类的商业软件。
ETL:数据库的那一块,更像data engineer的职位
Data mining/ML: 现在的一些ML的算法
数据可视是分类型的
如果是infographics,则更应该倾向于让人们对事物理解的更好,许多人对统计专业知识并不了解,infographics大部分都会用到PS,以求让大众了解自己在表达的意思。
另一种是将结果展现的更漂亮,这点用基本的统计软件即可。
个人建议还是看用户是怎样,如果是一般人群,还是后者较为良好,但是也更费时间。如果是对统计用较强理解的用户,还是专注于良好的分析,图表只是锦上添花。
研究数据,就是数据分析吧,数据分析理论上是在数据挖掘中的,数据可视化是展示数据挖掘的成果(也就是知识)。这就是说,分析后才能有效地进行可视化,可视化展现给用户的,是分析结果。这个结果帮助用户做决策,在商业应用中可视化几乎都是为了做决策。
那些漂亮图表,是另外一个概念吧,信息图 (infographics),而非可视化(visualization)。
低端用户没有能力去分析与解决数据的能力,再漂亮的图表和曲线都是空谈,
这时应该告诉用户应该去做什么样的决策即可,保留数据可视化入口待用户去验证。
对于中高端中户,简单的数据无法满足他们的需求,这时的数据可视化应该设计成互动型,让用户有机会去发掘出更有价值的信息。
感觉数据可视化本身而言没有太多的深度的东西可以挖,不论是技术还是业务。
重要的还是数据分析,以及业务对数据的需求,从这两个角度下手,可视化才有价值可言
所以可视化的价值不在于本身,专门做可视化现在看来是没价值的