曹政:推荐算法,机器学习,会将我们带向何方?

今天引子比较长,先说点和主题无关的,但即便无关,相关内容也是有意义的。

前几天文章里说,我的用户新增断崖式下跌,嗯,有评论说,因为干货越来越少,那个,其实我要说一个观点,公众号获取订阅用户的能力,和你提供的文章质量价值,其实并无直接关联。

曹政:推荐算法,机器学习,会将我们带向何方?

我们先说一个话题,公众号的订阅从哪里来。我们数数看啊

朋友圈,微信群,基于用户的自发转发和推荐。
同类知名个人公众号的友情推荐。
行业内知名公众号的转载推荐,比如36氪,虎嗅传媒等。
今日头条,网易,百度百家,凤凰传媒 等其他媒体作家直接入驻引流。
微博个人号,及大V引流。
知乎开设专栏,回答问题引流。豆瓣引流,分答,值乎引流。
贴吧,百度知道参与讨论引流。
腾讯广点通买广告引流。
大型自媒体联盟采购广告,发布软文引流。

其他一些灰色的,如微信小号加群群发,QQ小号加群群发,淘宝买僵尸粉等等,就不一一列出了。

以上种种,都是导入用户,增加订阅的方法,当然,和内容也有关系,后面我会再说,先说如上途径,我用到的,有效果的。

1、知名个人号的友情推荐

冯大辉的小道消息推荐效果最好,后来女网红angela zhu的推荐效果也非常好。此外也有一些其他朋友推荐过,都有不错的效果,但毕竟是一次性行为,很难具有持续的用户引流效果。

以上均为友情推荐,非商业行为。

2、知名行业公众号转载推荐

36氪和虎嗅均做过多次推荐,刚开始效果很好,后来基本不再有效果,我的理解是,该关注的基本都关注了。

3、朋友圈,微信群,订阅者自发推荐和转载

这是目前一直仍然获得新增的途径。也是目前几乎唯一获得订阅的途径。
但实际上,也存在该关注的基本关注,覆盖面的进一步提升已经很难。

4、知乎,微博引流

最开始我试过知乎引流,稍微把知乎账户搞活跃一些,还是可以带来稳定的用户订阅,实际上直到现在,我知乎上的订阅用户依然比微信公众号高接近一倍。 但后来自己怄气,知乎账户不再更新,所以这条路被我自己断了。

这里稍微解释一下,知乎官方并未封禁,删除,屏蔽我的内容,一切都是我自己做的决定;此外,我既不否认知乎的价值,也不看衰知乎的前景,只是单纯个人问题,希望读者不要过度联想。

微博,因为几年前就不活跃了,而且微博官方对微信导流的限制还是蛮多,所以导流效果也不好。

其他的途径一概没有试过,其实包括今日头条,网易,百度百家,还有其他很多媒体平台,都有不同的人给我发过邀请邮件,希望我加入他们的媒体平台,但最后我一个都没加入,当然,核心原因还是自己懒,但也存在一个对媒体平台的认知和个人价值观的问题,我总觉得自己没办法说服自己,去试图以媒体运营的方式迎合读者的口味。

基于如上,目前基本没有特别的引流途径,单纯依靠用户自发传播,在文章内容没有明显的方向转变,以及没有明显的热点事件追随的前提下,已经基本达到了一个瓶颈。

这是第二个问题,开始接近我们今天的主题。

内容与用户吸引力的问题。

是的,某些知名大V说,有非常值钱的方法,靠内容爆文,来获得大量用户。

其实这些我还真会,我今天就能教你们。

1、时效性,在热点事件出现时,第一时间发文,并且具有完整内容。
2、观点鲜明,对错不论,挑动争议,煽动情绪。
3、标题,危言耸听,故弄玄虚。
4、内容,基于你所表达的观点,搜集有利于你的案例或者杜撰你的某个朋友,牵强附会,哗众取宠即可。

至于事实如何,对读者的帮助和价值如何,看看那些巨V的热点文章,需要么?

那么现在开始今天的主题。

今日头条 是一个非常成功的移动互联网创业企业,其用户活跃度,营收规模均已经达到了一个惊人的高度。市值也相当了不起,可以认为最近几年除了美团和滴滴以外,大概最有潜力走入巨头领域的互联网公司,很惭愧,后知后觉的我其实最近几年一直没看过今日头条,最近,换了部新手机,才注意到里面预装了今日头条,那么也就随之打开看了看,别说,还挺过瘾的,每天都会刷几遍,读一些奇怪的文章。

今日头条的成功,被认为是算法的成功,基于用户的点击,阅读行为,做出的一种判断,从而形成个性推送。

但很惭愧的是,我相信,在今日头条的算法数据里,我大约是个很低俗,很脑残的人。

我能理解那些作者,为了迎合增加点击率的诉求,他们所做出的种种努力,我所看到的满屏的标题,基本都是故弄玄虚,危言耸听的东西,实话说,我确实也存在好奇心,挨个点过去看看到底是啥东西配的上如此奇幻的标题,然后就是愤怒,我承认我有时候会过于较真,一些明显扯淡,谣言,以及莫名其妙,因果不分的东西,或者是牵强附会的文字,堂而皇之的出现在文章里,然而,因为我点击了,浏览了,系统大约会认为,我就喜欢这样的文字。

是的,有人会说,你可以点叉啊,可以提交不感兴趣啊。我很好奇有多少人会在看完一篇无聊的文字后,还要做这样的事情。

但这个问题,也并非是今日头条才会有的。

之前,很多人会说百度有非常坏的案例,比如某个词汇的搜索结果,会莫名其妙的出现一些色情内容,很多人觉得是百度算法烂,但其实今天我要公平说一句,这一句话对于部分从业者来说,是非常非常值钱的,今天发在这里,我猜有些朋友会嫌我多嘴了。

搜索引擎有一条规则,是基于用户点击率提权,算法认为,哪个结果的点击率越高,就越趋近于用户的搜索目标,这个规则适用于非常多的搜索场景,不仅仅是网页搜索,也包括苹果,安卓市场的搜索。更多机器学习解读:www.yangfenzi.com/tag/jiqixuexi

这个事情追溯一下,其最初的理由是这样的,当搜索引擎调整算法的时候,需要评估你调整的效果好,还是不好对不对,请问怎么通过数据评估呢?就是算法调整前,调整后,排名和点击率的关系是怎样的,比如第一名点击率如何,前五名点击率如何,第一页点击率如何,翻页率是多少。理论上,搜索算法越完善,用户的点击行为就应该越趋近于搜索结果的第一名,我们想想,抛开前面的所有铺垫,只从技术和数据角度去想这个逻辑,是不是这回事。所以,既然点击率是评估搜索算法调整优劣的重要数据,那么将它作为调整搜索排名的重要参数,岂不是一劳永逸,简单直接的解决了这个问题!更多算法知识:www.yangfenzi.com/tag/suanfa

从技术逻辑,这是一个非常简单有效又清晰的执行方案。

但问题来了,色情内容的点击率,不论在任何关键词,都会占有优势。我做过不十分严谨的比对测试,有一个不十分严谨的个人认识,似乎Google对点击率所带来的搜索权值,没有百度给的高。当然也可能是他们对色情内容在非色情搜索词中的排名,做了额外的降权处理。

回到今日头条,也就是今天的主题,在推荐算法和机器学习的体系里,很多作者也很明白这里的利益和价值关系,为了追求用户的点击,浏览,也就是自己的内容更多的被推荐,他们更倾向于采纳故弄玄虚,危言耸听的标题,而系统,这套算法,在实践运营中,也明显激励了这样的行为。

从数据来说,这是一个多赢,用户的活跃度很高,点击率很好看,广告卖的很好,作者分到了很多钱,而这家公司获得了非常漂亮的财务报告。

但我还是很担心这样的事情,我以前讲过很多次,选择性阅读是互联网时代的一个非常可怕的事情,加剧了偏激,傲慢,族群的分裂。从中国大陆,到宝岛台湾,到香港,到美国,我们已经看到了这种互联网时代里,人们政治观点和诉求严重冲突和对立的情况越来越激烈。互联网没有减少偏见,没有增加彼此的理解和交流,而是相反,加剧了冲突和对立。

推荐算法,则对此推波助澜。

今天,我看到这些以点击率为诉求的文章,我可以当一个笑话看,或者当一个八卦看;但是对于年轻人来说,据我所知,很多人的世界观,价值观,一直被这样的文字所引导,所灌输。

前几天和人喝茶聊天,有个在新加坡国立大学读书的年轻中国留学生,愤愤的说,新加坡是如何干扰和破坏克拉克运河项目的,他的拳拳爱国心是很不错,但我真的很惊诧他平时的阅读习惯和信息来源,这件事情无论是中国政府,还是泰国政府,早就出面辟谣了,双双否认有此意向,从头到尾,根本就没存在过任何政府层面的洽谈和商讨,破坏和干扰一说又从何而来?

当然,我知道,阴谋论者一定不相信这些,点击率和推荐算法喜欢这样的东西。

下面放两篇旧文

偏见的由来-选择性阅读
再谈选择性阅读 – 巴黎惨案的话题

以上旧文内容,其实比今天写的更有价值。
很多今日头条的文章,我也注意到了,为了观点,肆意曲解事实,混淆因果,相当严重,甚至是令人难以容忍。正如第二篇文章中的范例一样。

必须说,让技术去承担太多的责任和义务,是不公平的;让商业公司去承担拯救人类的重任,也是不现实的。

推荐算法,追随用户,从常规来说,是一款好产品的标签,但,在恶趣味上越陷越深,沉溺于追求数据指标,而失去对价值的判定,我个人不喜欢这样的算法逻辑。

【文/曹政  “caoz 的梦呓”(微信号:caozsay)】

氧分子网(www.yangfenzi.com)是关注互联网生态圈的科技新媒体

·氧分子网(http://www.yangfenzi.com)延伸阅读:

➤ 从概念提出到走向繁荣:人工智能AI、机器学习和深度学习的区别

➤ Facebook开源深度学习框架Torchnet与谷歌TensorFlow有何不同

《卫报》:算法如何影响我们的工作和生活,算法对穷人有歧视

➤ 百度吴恩达谈深度学习局限:AI经济价值目前仅来自监督学习

➤ 卡耐基梅隆大学邢波:为人工智能装上引擎—忆格拉丹东登山之旅

➤ 傅盛:深度学习是什么?企业核心竞争力正在从算法转变为数据

➤ 质疑AI泡沫:当我们谈论机器学习时,我们究竟在说些什么

➤ 谷歌宣告“云1.0 时代”终结,机器学习会让它称霸智能云市场?

➤ 哥伦比亚大学教授:机器学习胜过人类编程?AI 终极挑战是创造力

分享给您的好友:

您可能还喜欢…

10 Responses

  1. 王云飞说道:

    先赞后看是美德。另请教曹大个问题,买卖流量双方都没统计工具那以啥为准
    下载头条看了一下,大致浏览了一遍就卸载了。我觉得关注老师微信公众号的人,没有几个人经常看头条。同意的点赞!
    对今日头条 和曹老师观感一样 推荐的文章有时确实不错,但大部分内容感觉就是那种读多了感觉自己智商会下降会变low的感觉。 当然曹老师从智能推荐等方面分析得更透彻,而我 综合考虑就是放弃今日头条了。
    微软小薇的下线也可以作为例子

    我也一直被今日头条的成功迷惑,因之我还去下载用了几天,里面的内容都很不符合我的审美和观点,最后还是卸载了,还是不懂为什么这么多人吹捧它
    推荐算法的目的是通过更精准的信息投放提高总体效益,粗略地说,是将企业量化收益和用户满意度这两个目标最大化。科学家和工程师们在建模时往往是把企业的利益摆在首位的,然后寻找企业利益和用户利益最佳的权衡。模型和算法并不能处理所有的情况,而是尽量从系统级的角度去更好地服务企业(和用户),要怪也只能怪当前的算法还不够「智能」,以及人性的复杂了~

  2. 袁凯说道:

    非常不喜欢今日头条,因为毕竟在互联网行业工作,下过两次,忍着用了一段时间还是删了。两相对比更加觉得微信的克制 “好产品应该用完即走”的理念很了不起
    这样看来,价值观一致比对一个人的态度在长久的交往中更重要。
    因为目标用户为留学生,做过小号潜伏微信群,熟悉一点行情后发现不少留学生的同学群差不多一半以上是中介和微商了

    说到推荐,在国内,网易云音乐 碾压。 其他的简直让人觉着想流泪,比如我买了烤箱,百度的那个叫什么来着就都到处是烤箱的小图片(你动动脑子放个烤箱的关联度最高的比如烧烤的料 烤盘 这些 会死么),买个凉鞋,开淘宝都是凉鞋(你自己用你们平台的数据算算 连着买两件同品类商品的人有多少),挺悲哀的 是这些互联网公司都是智商太高情商太低的纯技术高材生缘故吗? 另外扯一句,关于机器学习,当时阿法狗搞李世石的时候,有个评论有点意思,“如果狗是一开始就已经“预测”到了最终的结果,那么他的目的就是让局面向自己设想的结果发展,那么他的每一步棋都只是为了实现最终目标而下的,而不是像人类棋手那样是在争一个子一块地甚至整个局势的的短长,所以他会下出一些当时看来很挫但是过50 100手后发现他当时只是在为“未来”而行动,可能人类棋手还是在为 现在 而行动。

    喜欢小道消息和caoz以及和菜头的风格
    兼听则明,偏信则暗。推荐算法最大的缺点在于陷入偏信的局面,无法掌握全面的认知。
    其实今日头条的推荐内容,找一个真懂媒体的人来选择是差不多的,社会新闻,猎奇基本都是大部分人感兴趣的。个人猜测,以今日头条收集到的数据中,脏数据的比例应该非常高,甚至高到他所说的大数据算法无法精细与准确。
    目前的一个热点话题是图像分类等领域的半监督学习,很少有标记的例子大型数据集的方法。强化学习是更容易在机器人控制与其他控制系统等领域有应用。
    先看后赞赏,之后分享朋友圈和好友
    技术催生流量黑产
    有一句话特别吸引了我的注意: 一次性行为。

  3. Kircheis说道:

    有一天,我同事很严厉的跟我说,你连今日头条都不看,做什么XX嘛?我很不好意思,然后装了头条,点开看了看,并没有什么感兴趣的东西,很久没看,最后删了。我意识到,别人感兴趣的东西跟我根本不一样,就像别人说XXX电影好看的时候,我相信他是真心的,但是我没兴趣。那些所谓小粉红,XX脑残粉,爱国贼等等,他们肯定认为自己的行为是对的。很多人可能根本不看那些理智的文章,只看煽动性文章。这几天突然想玩wot,去网吧玩了玩,网吧里很多玩游戏看直播,看脑残电影电视剧的,这些人可能平时并没有其他渠道接触互联网,这些娱乐已经是他们工作之外的全部了。只有媒体推荐的那些爆炸性新闻能引起注意,其他都无视…

    其实论坛里的声音会更加多元化些,这是在现在的移动互联时代,论坛似乎不会再崛起了。
    弥合信息时代点社会分歧是个很课题。其实我也不赞同会让人越来越偏激的推荐算法,但是你的头条让少数媒体人和平台所掌控又是真的好吗?实际加一个负反馈,阅读时长不满一定数值,或是立即关闭,进行降权。对今日头条不难吧。百度seo那块应该也有相应负反馈?很多时候不是做不到,而是利益链条已经形成。曹大,2011年的TED TALK Eli Pariser: Beware online "filter bubbles" 以G和F为例剖析过这个问题。

    在自己熟知的一个或者几个领域,一直输出高质量的内容难道好大
    头条其实只是在冷启动的时候会带比较多的色情和低俗内容,多刷几天,搜些感兴趣的内容,头条给你推的内容就挺不错了。
    曾经一度也非常沉迷今日头条,整天刷不完,特别是后来刷到小视频,更加不可收拾,感觉有不停地看打架暴力视频的癖好。最后还是删了,主要原因是太费流量,超套餐后流量的钱很心痛,次要原因是觉得这个也太浪费时间了,看了半天也就是过过瘾。
    深刻赞同曹大说的,现在看到越来越多的文章标题话严重,恣意妄为,说的东西很有问题,但是还真的有那么多人就愿意去相信。

  4. 高裕谷说道:

    今日头条刚出来的时候还用过,现在已经早就不用了,因为在他的推荐系统中都是与色情,谣言相关的!与自己想要获取的知识完全不同!
    曹老师觉得今日头条能走远吗?总觉得现在今日头条有点虚假繁荣。
    真实繁荣,我不看衰。
    算法毕竟没有人的好奇心与求知欲
    今日头条和网易都会让人看着来气

    看来需要给推荐引擎加入类似机器人三大定律了,满足定律要求的文章才可以被推荐给人类!我不喜欢推荐算法,感觉那样会令自己固步于自己的小天地。所以尽量避免使用推荐的功能,并且非必要时不登录账号,注意清理注意清理cookies。希望能够更全面地获取信息,无论是不是自己感兴趣的。
    可以根据文章的跳出时间来调整算法,把那些点击率高但是停留时间低的降权。

    算法后面是人的思想,必定有人性在作梗。
    去年的时候经朋友推荐,下载过今日头条,但给我推荐的满屏幕都是一些标题党,猎奇文章,好奇点进去一看真恨不得举报,真正有价值的内容太少了,几次之后直接卸载,虽然它现在发展很好,为了不暴露自己在阅读上的恶趣味,我在装完今日头条后没多久就把它给卸了。推荐算法离真正的人工智能还差的很远很远,充其量是猜你喜欢。
    只能说,大多数人还是喜欢八卦的
    头条在机器学习,推荐算法上投入很大,但是形成产出不会那么快。头条的推荐,目前应该人工干预的成分更大,运营KPI 的恶果罢了

    是不是可以制定一套《算法推荐和搜索引擎的人工干预法则》,然后各机构可以根据法则去玩,不过也就是摆设,人性嘛,部分还是要强制性。例如电影分级什么的
    吴军新书提到了,主流搜索引擎点击贡献都在60%以上
    其实推荐算法也并非只是一味追求数据指标吧,一个好的推荐算法不仅仅要求能准确预测出用户感兴趣的内容,还应该能够帮助用户挖掘他们潜在的兴趣,开拓用户的眼界,也只有这样的算法才能让推荐系统自我演化得越来越好。或许目前来说,大部分产品还是不得不追求准确率点击率这些指标,但关注覆盖率新颖度的研究也不少了。
    今日头条也只是最近才装来无聊时刷刷,刷几遍都未必有一篇想点进去看,更愿意在豌豆荚一览上看一些传统媒体的文章。
    我在头条的算法里也是个低智商,低趣味的俗人
    软色情、明星八卦、社会奇闻、养身技巧、野史,这5类是点击率保障,门户时代就这样了,人性,变不了。

  5. 刘稳说道:

    这个暑假在Bloomberg实习做的就是有关推荐算法,来答一下。仅仅是三个月的理解和积累所以会有错误和不全面的地方,欢迎多多交流!
    推荐算法最传统的有两类,content-based和collaborative filtering.
    1. content based(就简称他CB):
    content based, 顾名思义,就是主要考虑一个商品固有的内在属性。对于每个商品item, 需要建立item的profile.对于每个用户,要建立user profile. 举个例子,你在知乎上搜索过编程,搜索过美食,那么你的user profile就会显示你是对编程,美食感兴趣的。那么假如我们把item profile简单的看成每个问题的tags的话,那么有编程,或者美食的标签的问题你很可能感兴趣。
    CB做的最好的是Pandora, 他们最有名的music genome project是人工标记一首歌曲的profile
    2. collaborative filtering(cf):
    cf的精髓是在于他用“和用户x相似的用户的购买习惯推测x想要购买的东西。细分的话cf算法有user-based和item-based. user-based可以这样解释:想要知道我对”有一双美腿是什么体验“这个问题的喜好程度,通过对比我的和其他人的阅读记录,发现我和另外100个知乎用户很像,都读了很多编程和美食方面的问题。而这中间99个人都读了”有一双美腿是什么体验“,还在上面停留了很久,尤其是有图的回答。。。那么因此可以推断我也会喜欢这个问题。cf最难的问题在于怎么寻找”最相似的用户“。在machine learning里这个就是k nearest neighbor. 我尝试的算法叫locality sensitive hashing with minhashing. 不知道还有什么别的方法。
    CF的话比如amazon, 你会经常看到user who bought this also bought that…
    问题:
    可是问题又来了,如果仔细想一下就知道刚才cf做的事情不太对。为什么呢,因为几乎所有知乎用户都爱读有一双美腿是什么体验,爱看图,这个东西不是爱美食的程序员这些人特有的,所以我虽然很可能感兴趣,但是并不是因为cf的功劳,而是这个问题本身就很受欢迎。这在推荐算法中叫做banana problem.原因是在美国这边的超市,几乎所有人都爱买banana,因为最便宜,也好吃也健康。所以过多的数据量可能会导致一个超市推荐算法疯狂推荐Banana给所有人。这是一个需要解决的问题,比如推荐大家都爱看的经典电影可能没错,但是推荐香蕉给来超市的,推荐口香糖给一个一周买五次口香糖的可能就没什么用。
    3.matrix factorization
    几年以前netflix有过这样一个竞赛,谁的推荐算法比他的牛逼10%,就能拿走一大笔奖金,好像是100w美金。这个竞赛中风靡着这样一种矩阵分解的算法。(2012年的数据,netflix 75%的观看量是从推荐引擎里来的,这也就是为什么他们那么注重推荐算法)
    我们想象这样一个矩阵M,每一行代表一个用户,每一列代表一个电影。那么M 就是用户i对电影j的评分。可能存在,也可能不存在(如果i没看过j的话)。假设有m个用户,n个电影,那么这个矩阵就是m*n矩阵。现在,我们要把它分解成(m*f) * (f*n)的两个矩阵之积。(f 是电影feature的个数)第一个叫user matrix, 第二个叫item matrix. 那么user matrix 每一行代表的是什么呢:是用户对于每个feature分别的喜欢程度。比如我们定义features为<喜剧,恐怖,武打>, 那么用户u在user matrix的那一行可能是<1.0, 0.2, -0.2>,这说明了u最喜欢喜剧,讨厌恐怖,更讨厌武打。那么在item matrix里,每一个电影又对应了他们”所含“各个feature的程度。比如煎饼侠可能是<1.0, 0, 0.2>, 某个恐怖片可能是<0, 1, 0.5>. 那么我们算这两个向量的点积的话,分别得到M [煎饼侠] = 1-0.04 = 0.96 M [恐怖片] = 0.2-0.1=0.1. 那么这样u肯定就会更喜欢煎饼侠啦!这个方法Simon Funk这个人的算法最快。可以搜一下。还可以给他本人发邮件。。。这个方法最头疼的就是M里有用的太少,比如一个人一辈子就点评过一个电影,那怎么推荐嘛。。。这种情况就要用我们的content-based了,因为其他的任何算法都是建立在我们有足够的user interaction的前提下的。
    数据:不同的数据适应不同的算法。例如只有用户的行为数据(例如购买、查看等交互数据),则只能选用简单的算法(例如协同过滤,基于物质扩散的算法等),如果包含用户或物品信息,可以选用较为复杂的算法。一般来说,使用的信息越多,得到的结果越精准。

    产品类型:每个推荐系统所针对的产品不同(例如买商品的和推荐电影的),所选用的算法也应该是不尽相同的,尽量利用所在产品系统自身的特点。

    冷启动 :在推荐算法启动初期的数据是否够,对新用户和新产品是否也能进行推荐。

    性能:是否需要实时推荐。非实时推荐对性能的要求比较低,则可以选用较复杂的算法。实时推荐则对性能要求比较高,一般选择复杂度较低的算法。

    多样性:精度和多样性的问题。在精度达到要求的情况下可以考虑推荐的多样性。

    一个好的推荐系统,其实需要产品和算法的共同作用。
    好的做事的方法论应该是
    1.产品描述和定义目标结果集
    很多不懂算法的产品会在这上犯错,将提升产品效果全部推给距离业务相对较远的算法人员,而且只会要求所谓精准,这其实是不懂+不负责任的表现
    产品需要深入理解某个推荐系统中,用户实际的需求内容是什么,什么样用户喜欢发散的,什么样用户喜欢集中的,什么样用户喜欢热门的。还是用户行为基本无差异?如果你是简单的推荐item让用户去点击,那么影响点击的这些item的特征到底是什么,漂亮的图标?具有特殊风格的summary介绍文案?吻合用户个性化的过往的使用记录?是用户的好友使用过的并评价良好的?还是随便什么内容放上去就有点击,推荐系统在此用不上?
    如果PM对用户需求和item特质建立不了系统化结构化的模型,对用户使用行为的背后动机没有深入的思考,基本上是做不出好的推荐系统的,起跑线上就输了。
    光会逼逼叨 精准 啊, 好 啊这种模糊且近似废话的形容词也没什么用。
    2.共同理解推荐系统的实现方式
    光有第一条还不足以落地,第一条更多的时候是定性的描述,或粗浅的定量(比如什么大于什么),离实际落地的效果还很有距离。这时候懂算法的工程师需要出马。
    我觉得算法可以拆成两种,一种是规则或策略,一种是机器学习的复杂算法
    对于头一种,需要产品和算法对规则的共同理解。比如我想要一个总赞成票和反对票的关系,那么是赞成票-反对票好,还是赞成票/反对票好,还是log(赞成票/反对票)好,还是赞成票/(反对票+c)好,这里面其实差异还是不小的,算法工程师可以帮产品多考虑极端的数值情况,将模糊的规则描述为精确的可计算的数学模型。好的模型应该兼具效果和解释性,工业环境下有个很重要需求就是老板们发现一个case,你至少能解释的通是模型问题还是数据问题吧
    对于第二种,由于实际运行起来解释性很差,个人建议用来做最低层最通用的一些处理就好,然后通过大量的case评测来对效果进行评估。比如把SVM构造成文本分类器之类。
    总之就是机器学习算法作为底层和通用的模块向下沉降,上方用大家都可理解的简单规则根据场景不同灵活调配。
    3.实际线上推荐效果的检验
    一切事前的验证都不如事后验证来的靠谱。
    对于短期和立即见效的case,记得流量要切的均匀,且保持单一变量(改动)原则
    对于长期才能见效的case…说服老板给足够多的时间来等
    对于数据变化不明显的case,要么作为一个体验改进,当做良心活做,要么就通过bad case率来给效果做检测。
    4.对实际运行结果的解读及从中找到改进点
    这个太case by case了。不过我比较认可的理念是:运行结果代表对上一次拍脑袋行为的肯定或打脸,通过运行结果你没法直接得到一定能有效果的改进。改进仍然是一种类似感性的拍脑袋的驱动方式,我们就是不断的拍脑袋,然后不断的检测拍脑袋的成果。好的决策是用数据没法先验得出的。
    5.跳出思维局限,找到大创新
    以上4个是我认为好的工作流程。但是是对一般系统的改进来说的,很多时候我们要解放推荐。比如,放相关歌曲是推荐,豆瓣电台也是推荐,把所有歌手跑成一张地图让用户模糊的去选择也可以是一种推荐,算法的力量,也许换一种产品形态,就会有飞跃的改进。这是你微调大半天也不一定搞得出来的。

    PS.知乎的排序规则有些地方不够好,我猜知乎可能没有对用户在某一领域的权威度进行建模。所以在之前讨论”专业和业余“的问题时,有人说答一个自己业余的问题得票比自己专业问题还火的情况。而且目前越早回答的问题得票越有优势。这些都是问题,都需要改

  6. 小心假设说道:

    其实有一段时间再做软件的推荐方法,做的时候最纠结的就是每个人点开一个app的时候他的需求点都是不同的,所以会有很多歧义,现在觉得还是没有做得很让人满意,不过其中有几个点可以分享一下:
    1 怎么为每个应用确定标示符,以及为每个应用贴上标示符的时候顺序是否重要,后面这个问题其实也就涉及到你后面的算法是否要把标识符的顺序考虑进去了,因为每个人点开app时被吸引的点都不一样,有的人是因为app的玩法,有的人是因为app的主角,有的人是喜欢app的风格,所以最后确定的是如果app是游戏的话就根据:玩法,特色【比如是3D的?实景的?】,主角的顺序来为给个app打上标示符
    2 根据自己用户的特点,把握大的方向,因为app store的应用各种各样奇异功能的都有,而且类型也会越来越多,所以持续的维护更新标识符是一个一直要做的工作,但是确定第一批的时候可以现抓大的,比如游戏的话:空战,酷跑,赛车,射击,塔防等几个大类基本上可以涵盖了游戏的80%以上,所以大的类别一定要保证全部覆盖,小的可以慢慢补充
    3 考虑不同标识符的优先级以及在结果中所占的比例,比如你为一个应用贴上了4个标示符,他们之间的优先级是怎么样的?是按照顺序一个一个的匹配,还是都全部匹配但是不同的标示符在结果所占的比例不同
    4 其他维度的考虑,主要还是根据你的产品特性来定,对于app的话,比如根据你前期的匹配已经为用户挑出了一批相应的应用,是直接就展示给用户了还是再进行下一步的处理,要不要加入时间的考虑,只推荐近期热门的,要不要加入价格的考虑,推荐出的应用里面是不是应该把收费的控制在一定的比例等等
    5 还有就是候补的方法,当有一个应用的标识符没有足够的应用跟他相匹配的时候怎么办?是根据名字的重合度推荐?还是取跟他同分类的热门应用

    现在的机器人运动控制,基本上都是针对某一个或某一类动作进行设计,以仿人机器人为例,一个踢球动作就有上百上千篇学术论文在研究。
    而人工智能机器学习这些,在实际机器人运动控制、规划中的使用还基本上局限于学习个模型参数程度的水平。
    用算法根据环境和机器人状态自动生成动作?似乎还很遥远。
    直到我看到这个研究:
    CONTACT-INVARIANT TRAJECTORY OPTIMIZATION
    一句话,对于任意结构的机器人,任意初始姿态位置,只要指定了末状态,算法可以自动生成符合物理规律的,机器人全身动作。
    不只是走两步,站起来这么简单,甚至有爬楼梯、倒立、两人配合攀登等等。。

    这个教授的主页Emo Todorov 保加利亚人,高中是数学和信息的双料国际金牌。。。

    想听原理的话,简单说来,用轨迹优化,特殊之处是用加附加变量的方式把各个接触面的接触情况也编码进整个模型的“状态”里,并使用“软化” 的接触动力学模型,把运动规划这个本来包含很多不连续处(比如撞击,其实任何接触面的变化都意味着系统动力学特性的突变)的问题表述成一个连续、无约束的凸优化问题。详情去看论文。

    虽然严格说来算法对实际环境做了不少假设和简化,但它解决的问题还是非常有价值,给人以启发的。

    1. 感谢许多知友的提醒,这个其实不算控制算法,属于运动规划算法。算法得到的轨迹往机器人身上用的时候,需要的是控制算法来聪明地利用反馈信息,既实现动作又维持机器人平衡等要求。
    2. 该实验室在此项目上正在做的就是做实时控制器。已经发表的成果是通过同时对多个不同的模型进行轨迹优化,提高轨迹的鲁棒性(想法是,如果一条轨迹在仿真中对10个质量分布略不同的机器人都能稳定,那实际的机器人应当处于这10个情况中间的某处,也稳定),在线跑时用一个简单的线性反馈控制器。实现了DARwIn上幅度很大的动作,比如一步转身90度之类。论文连接:

    3. 我微信在写机器人新闻,手动翻译国外最新消息

    本人大学和研究生学的控制,大学做的飞思卡尔智能车,毕业后做的风电上的变频器控制,现在在计算机系当老师。
    先回答问题,我所看到的,最惊艳的控制算法就是PI控制器,没有之一,简约极致之美。
    下面慢慢展开:
    据我所看到的,工业上大规模应用的,不管是运动控制还是过程控制,几乎都是PID控制器,其中大多数又是PI控制器,为啥不加微分D,因为会带来不稳定,啥叫不稳定,就要讲反馈这个东西了。

    1.先随便聊一些八卦
    谈到控制算法,有人说路径规划,有人说机器人运动学,还有人说卡尔曼滤波器,神经网络,蚁群算法,或者粒子群优化算法。我擦,这哪是控制算法,完全不是一个层面的东西,至少不属于狭义上的控制算法。
    那上面那些东西属于啥,搞控制的喜欢对系统分层,一般分为决策优化层和控制层。
    路径规划,机器人运动学都属于决策优化层的东西,在这一层进行全局的规划和优化,最后生成控制指令,传给控制层,控制层通过闭环反馈实现对指令的跟踪。
    卡尔曼滤波器是滤波器,不是控制器,滤波器说到底是把干扰滤除,卡尔曼滤波器的不同是它构建了系统的一个动态跟踪学习模型,可以无时延地得到被测量的信号,一般对时间性要求非常高的实时控制系统会用,其他一般用FIR或者IIR滤波器就能够搞定了。
    神经网络是构建非线性模型的方法,可以用来设计控制器,但更多的是做模式识别,模式分类,数据分析之类的工作,在控制上,主要是学术灌水来用,工业上几乎从未看到过,因为奶奶的,太复杂。
    蚁群算法,粒子群算法,进化算法,微分进化算法,鱼群算法,*****各种XX智能优化算法,这个东西说到底就是构建了一个迭代优化学习模型,它的目的是优化,不是建模,所以我们可以用它来优化我们控制器参数,或者优化神经网络参数,或者其他一切参数,但是不能用它来构建模型,所以根本不是控制算法。

    2.切入正题
    说了那么多废话,那啥玩意是真正的控制算法呢?!
    首先要从信号和系统,以及反馈思想开始讲起,其实,控制,通信和计算机本就是一家,国内非要分为三个学院,奶奶的,真够坑爹的。
    控制算法,控制的是信号,信号是连续量,比如电压,电流,转速,功率,温度,等等,说到底信号就是一个物理量在一个域(时间或者空间)上展开。系统是啥,系统就是信号到信号的变换,比如最普通的直流电机,我加一个电压信号给电机,然后电机的转速信号慢慢升到一个固定值,这里电机就是一个系统,它实现了电压信号到转速信号的变换,改变电压,转速信号也会随着改变。

    那反馈是啥东西呢?!
    还是拿电机作为例子,比如空转时,我加5V电压,电机转速1000rpm,这时候我一给电机加载,转速就下降了,完蛋啦,老子就想要1000rpm,为啥变为了800,有的人说,那你把电压提高到6V不就搞定啦,当你提高到6V时候,妈的,负载又变回原来的啦,转速飙到了1200rpm,于是你不得不又把电压调回5V,其实这里面这个人就在做反馈,转速低了,加电压,转速高了,降电压,说到底就是基于偏差的控制。
    反馈最早应用在放大电路的设计中,后来被维纳提升到控制论层面,泛华到一切动态系统中,包括运动控制学,社会学,经济学等等。具体可以看维纳的《控制论》,看不懂的,可以看金观涛的《控制论与科学方法论》。

    信号,系统,反馈就构成控制的基本概念,控制算法的最终就是设计一个控制系统。

    说到怎么样设计控制系统,必须接着从信号开始讲起,这里数学分析范畴,但是工程师不是数学家,他们不站在时间轴上去分析信号,而是站在频率轴上分析信号,为啥这样做,废话,当然是为了俩字,“简化”,但是这个简化有两个前提。
    第一个前提是傅里叶老爷爷给弄出来的,任何复杂的周期性信号都可以分解为正弦信号的无穷累加和,正是有了这个东西,我们工程师才有勇气站在频率轴上去看这个世界上的形形色色的信号,这也是我们大学数学微积分的精髓,但是奶奶的,那些高数老师推了两年公式,也没有跟你说过这样一句话,简直废柴呀。
    还有一个前提,就是系统必须是线性时不变系统。为啥要加这个前提,线性对应叠加定理,时不变对应卷积定理
    啥玩意叫叠加定理,啥玩意又叫卷积定理,大家可以看《实用数字信号处理》这本书,或者奥本海默的《信号与系统》。
    经过上面这样一说,估计有人糊涂了,这哪里是要设计控制器,简直是在烧脑子。
    你理解了频率,就要进入频域世界了,也成为了一名入门控制工程师了。
    现在开始继续深入,如果我们可以把复杂信号看成各种频率信号的叠加,那么我们就可以设计拆解这些信号的东东啦,这就是滤波器,低通滤波器可以滤除高频信号,其他的也可以类推。滤波器在控制器里是必须加的,因为反馈通道上,有高频干扰,必须通过滤波器把这些高频干扰滤除,这里还要看反馈通道上的信号是模拟信号还是数字信号,模拟信号进ADC之前必须加抗混叠滤波器,否则会很惨的。

    3.控制器设计方法(控制算法)
    下面看控制器的具体设计
    经典控制设计方法,都是针对单输入单输出系统的频域设计方法
    简单的系统,用根轨迹法,分析控制参数变化对系统性能的影响。
    复杂的系统,用波特图法,去看相频裕度和幅频裕度的大小,以及带宽。
    现代控制系统设计方法,是针对多输入多输出的系统
    建立在状态方程之上的,这方面研究的不多,不敢妄加评论。

    由于PID应用的太广,所以形成了自己独特的整定方法
    PID就是针对单输入单输出系统的,站在频域角度去设计的,有一些经典的参数整定方法,比如ZN等,还有好多好多,
    为啥应用这么广,因为简单实用。

    码的有些乱,大家将就吧,毕竟自己入行也不深。后面再深入整理。理想的算法体系;
    最理想的算法,是一套通用算法;
    该算法能够通过一系列的试验,生成所需要的一切算法;
    这就是深度学习。

    换句话说:存在一个算法,它可以终结一切算法;
    它就是生成算法的算法。

    强人工智能构成的根本因素是2;
    它不是简单2个,是二级。
    比如对行为以及结果反馈的思考总结,然后对前者的反思。
    比如一套上网强人工智能系统,它需要一台能上网的电脑,然后需要一台能监督和控制前者的系统。
    只拥有一套机械臂或者行走系统,谈不上真正的思考智能。
    真正的智能是对前者的研究并形成结果。

    最强大的算法也是如此。
    最好的算法,就是能生成所需的算法。

    这里的known与unknown,视具体情形,可以理解成,certain与uncertain,predictable与unpredictable,等等。如是便可分为,certain certain,certain uncertain,uncertain certain,uncertain uncertain;predictable predictable,predictable unpredictable,unpredictable predictable,unpredictable unpredictable。看似说的废话,排列组合,但如果真的有个实际问题,如此可以看得比较清楚。而且可以在不同的层面看。

    比如一个信号,近似等于个高斯白噪声,用过去数据,估算出均值与方差,是known known。但肯定不准的,因为现实中就不存在标准的高斯白噪声,于是做出一个误差区间,有各种做法,算是known unknown。但known known跟known unknown加起来,也还是与实际有差距,是unknown unknown,是there is nothing you can do about it的了。但常被忽视的是unknown known,比如这个信号里面,可以分离出一个周期信号(不一定是正弦),是一个干扰。知道之后,unknown known变成known known。如此等等。

    前面说了,可以从不同层面考虑,比如信号分成确定部分和随机部分,确定部分是known known。但确定部分与实际的确定部分有差别,是unknown known。随机部分,知道分布的话,是known unknown。随机部分也与实际的随机部分有差别,是unknown unknown。如是如是,不一而足。从这个层面分析,不如上一段中的分析对实际有指导意义。

    当然还有系统。比如一个系统,有输入输出数据,建模、辨识出一个LTI模型,有参数,是known known。但这个模型肯定不是完全吻合数据,所以要给一定的不确定性,比如在参数上,可能有个区间,是known unknown。即使加上这个区间,也还是与实际有差别,是谓unknown unknown。但如果一分析,发现这个模型其实可以分离成一个LTI模型,加上一个比如Wiener模型,就是unknown known被发现了。

    当然也可以在不同的层面分析。

    其实每一个算法都有其惊艳之处,每当我搞懂一个算法时,在感叹算法精妙之余,都会对算法设计者致以由衷的佩服。惊艳我的算法很多,其中之一就是粒子群算法。虽然关于这个算法的后续改进很多,也就是说存在很多的不足之处,但算法本身所蕴含的道理值得我们运用在生活当中。

    作为一种启发式优化算法,粒子群算法是基于速度-位移模型,通过不断迭代更新寻求问题的最优解。其速度更新公式为:V(t+1)=w•V(t)+eta1•rand()•(p_best-X(t)+eta2•rand()•(g_best-X(t))。更新规则有三部分构成:原来的速度(惯性部分)、与全局最优值的偏差、与自身历史最优值的偏差。通过几个部分的加权进行速度更新。

    算法的更新规则中,粒子之间的交互主要体现在两点:一是自身与自身历史记录(历史最优信息)的交互,每个个体都利用自身的认知,根据自身所经历的最优位置调整自己,具有“自我”学习提高能力;二是全局记录(全局最优信息)与自身的交互,根据整个种群所遍历的最好位置的差距来更新自己的信息,具有向“他人”学习的优点。
    这种找出自身与自身历史的差距,以及向优秀个体学习的行为,是促进我们不断“优化自己”的动力,也是生物进化的一种本能,我认为这是这个算法最值得我们借鉴的地方,正是这种“学习”的思想,惊艳了我。

    ,可是要理解现在的科技,光知道计算机结构,传感器原理是远远不够的,我们不能回避这个非常不像科技的话题。因为,当我们熟悉了各种传感器电动机等等元件(components),我们最关注的问题就是,怎么使用它们,如何有序地组合电气或是机械或是社会学甚至是生态系统中的元件,从而使整个系统按照我们的要求运行下去?

    说这么多题外话,无非想要强调控制思想的重要性。现在回到PID控制器上来, PID是最常见的控制器,广泛应用与机械和电气系统。它的核心,在于一个反馈上。什么是反馈,反馈就是让系统的实时输出加入到输入中,从而实现自动调节。最常见的是负反馈。PID控制器就是一款非常典型的负反馈控制器。
    P表示比例,用来瞬时大幅度调控,比如说你的输入是5v,但是你的理想输出是10v,那么此时的误差是5’V. 用比例控制时,根据你选择的比例系数,假设是1,那么下一步的输出就是5+5=10V。但是事实真是如此轻松愉快吗?当你加入一个比例2时,有一些非常可恶的东西阻碍你达到稳定的10v,比如说系统一下子跃升,到10v刹不住车,产生了超调量,一下子奔到20v了,稳态误差非常大而且不可控,那估计机器已经烧了,或者周围一下细小的扰动进来,经过比例放大,变成了相对较大的扰动,系统扛不住了。怎么办?我们引入I,积分控制。当我们把输出反馈回来和外部输入一比较,我们得到一个误差,然后我们把误差作为输入,对误差进行积分,再反馈回来。什么时候达到稳定呢?当误差为0了,反馈回来的值就是一个常数(想下积分过程),此时输出就稳定了。并且由于此时误差为0,那么稳定点就正好是外界参考输入。结合比例控制,就能实现对抗干扰和消除稳态误差。最后,那D微分控制是拿来干嘛的呢?设想一个场景,外部输入是一个斜坡信号,电压或者力矩随着时间在增长或减少,那么光用比例和积分都无法使系统输出追上输入的变化脚步。这时候,我们使用微分控制,让我们输入的变化率等于输出的变化率。那么,我们就能追踪变化信号了。
    PID控制器的优点非常明显,我其实不需要系统的精确模型! 我不管模型怎么样,把系统输出接出来和一个参考信号一比,误差一输入’PID控制器,误差就能被消除。

    但是,真的有这么老少皆宜平易近人的控制器吗! PID真的这么全能吗?

    那还有那么多人研究控制理论干什么! (打到自己脸了)

    很重要的一点, 就是,变化信号的变化率只能是常数,就像我们所说的斜坡信号,当变化率也是时间的函数时,我们的PID就无法处理了。因为我们的控制器里只有一个一阶微分,对于求导后还是变化的信号束手无策。另一个问题就是,它是一种线性控制器,但是我们的现实系统都有非线性特征,所以只能对某个平衡点及其邻域使用,换言之,很有可能邻域很小,一旦超出,系统就崩溃了。

    总而言之,PID控制器对于线性性好,输入不超过斜坡的系统是非常简单实用的,但是对复杂非线性系统和复杂信号追踪,非常有局限性。

    PID博而不专,因为物理意义还算明确,对很多系统都能上去调几下子,不论有没有模型,有没有输入输出数据。

    而一旦有了模型,乃至有了输入输出数据,除了三阶(包括)以下的LTI系统,对大多数系统来说,PID效果只能算可以接受。一般都能找到专门适应于某一小类系统的控制算法,比PID效果好;但这些算法往往专而不博,换到另外一个系统上可能会出大问题。

    其实很多时候,PID只是底层,或曰内环,先把某个系统稳定住,或是改变下其动态。然后中层、上层再引入其它控制算法。当然,好几层都是PID的也挺常见的。

    另外,PID做些小改动,在实际中用的也不少。其实最简单的PID也是要考虑饱和的。但同时,很多控制系统,比如电力的,乃至粒子加速器的,等等,用的都是很奇怪的控制算法,当然不是PID或改进PID,效果也都很好。据我所知,这很多实际中在用的,没人也很难分析其性能(稳定性啥的),但实际中用着还不错。

    这里有个很奇怪现象,很多领域都有:现实中在用的,往往很难分析为什么效果好;论文中在写的,往往很难用在实际中。我知道的一个,就不具体说了,某控制算法,是法国人在工厂里搞出来的,后来全世界出名,在很多500强的公司在用,没出过问题(爆炸什么的),但就是没法证明其稳定性。后来有人竟然为了证明稳定性,把这个算法改了一下。。。这不就是一个人钥匙在别处丢了,可偏偏跑到路灯下来找,仅仅因为路灯下面有亮么。。。

    相当一部分学术圈的人,全世界各国的,靠在这个方向发论文来糊口,至今仍是一个非常hot的方向(当然在工程中确实效果很好)。说了之后,岂不是得罪这么多人。

    其实如果仔细想想,控制器的本质是被控对象输出(也就是控制器出入)跟控制输出的函数映射关系。其实从这个角度来看,时变非线性的控制器其实参数空间最大,线性时不变的算是很受限制的了,而PID是则在线性时不变的基础上限制到三个自由度。视具体系统,有的就够了,有的甚至只要两个自由度(PD或PI),有的一个就行(P)。

    当然,实际中,PID其实要加很多trick。比如考虑到执行环节的动态,防止过饱和,考虑传感器的动态等等,其实就不再是限制到三个自由度了,乃至已经是时变非线性的了。而且最简单的,串级PID,其实综合起来的话,已经不只是三个自由度了。另一个方面,有的高阶系统无法分离,也就无法用串级的话,那PID就很难调到很好的效果了。

    PID的限制多了去了。比如时延。个人预测,时延是未来控制系统的一个大问题,因为是物理上无法克服的,而全球、万物互联又是大趋势。有人用预估器等,当然也就不是原来的PID了。但预估器也要知道时延的大小或范围吧。现实中在用的一个,是改变了系统的拓扑结构(如果只有控制器跟系统,则没有拓扑结构可言;有了网络之后,比如在遥操作时,则存在拓扑结构了),可以做到对时延非常鲁棒。你说是PID吧,已经面目全非了,而且原初的PID再调也调不到这个效果;你说不是吧,PID也还是其中一个环节。

    PID也可以用鲁棒控制那一套来分析和设计啊,你说是鲁棒呢还是PID呢。也可以用优化那一套来调参啊。也可以做到分工况(模糊等)啊,自适应啊,等等。就是各个模块凑在一起。这在工程中是普遍的,也无可厚非。直到出现一个更宽广的理论,可以更简洁而具有包容性。但当然,在没有更好的框架之前,PID加上各种trick,不失为好的工程方案。但你不能说这就到头了,谁知道未来会不会出现控制界的卡尔曼呢?

    这里插一句,电梯的曲线,很多感觉不舒服,有的超调、振荡非常明显,还有的加速没优化,其实就是没调好。PID好好调,加上小trick,足够了。还有一点,就是最好加上个监测是不是有人被卡住的环节。

    话说回来,到底什么样的曲线算好呢?其实不存在最优的,比如有的对速度、加速度有限制,有的则对能耗比较侧重,有的一定不能有超调等等,有的则是响应越快越好。当然,所有的这些都是在功率限制之下。为什么说这个呢?因为再调试时,有用机器学习或优化算法调参的,需要有量化优化指标或是比较曲线优劣,但这个指标或评价标准却很难确定,但同时却又非常重要。很多指标,二次型,绝对值,等等。但选取哪个?如何评判指标?有没有指标的指标?问题多着呢。。。

    物理学中,有两种情况需要重视,一是实验中有出乎意料现象,但找不到理论解释;一是理论有出乎意料的预测,但实验中尚未观察到。这两种情况,都可能带来物理学的大变革。当然,有很多出乎意料的现象,是可以用已存在的理论解释的,只是人们没认识到;同时,很多理论的预测是错的。

    对应地说,有时候工程中,在PID上修修补补,或是几个现有方法的组合,效果很好。这时候可能背后有更简单的理论,可以作为更简洁的框架。比如卡尔曼之前,很多人在现有的滤波基础上增增减减,效果也不错,直到卡尔曼滤波出现。不恰当的比喻,这就像地心说时,有的观察很难解释,用地心说加上修修补补也能解释,但很复杂;一改成日心说,就简单地多了。

    而就理论而言,很多新理论,声称自己效果好,但大部分其实不如已有的。可另外一方面,人类的控制理论,不大可能到今天就为止了吧?PID也才有不到一百年的历史。这些新理论中,只有极少的,可以真正带来变革。现在觉得一个有可能,不能确定。只能拭目以待。

  7. 腾冷说道:

    详细的公式什么的,网络上搜索kernel function, kernel methods 有很多,我就不仔细说了,简单地说说背后的intuition。intuition也很简单,比如我们有一个一维的数据分布是如下图的样子,你想把它用一个直线来分开,你发现是不可能的,因为他们是间隔的。所以不论你画在哪,比如绿色竖线,都不可能把两个类分开。

    但是我们使用一个简单的升维的方法,把原来一维的空间投射到二维中,x->(x, x^2)。比如:
    0->(0,0)
    1->(1,1)
    2->(2,4)

    这时候就线性可分了

    再举个例子,在一个二维平面里面,这样的情况是不可能只用一个平面来分类的,但是只要把它投射到三维的球体上,就可能很轻易地分类。

    理论上,由于train set是有限的,当你把data投射到无限维度的空间上是一定可以在train set上完美分类的,至于在test set上当然就呵呵了。

    记得要选取合适(试试各种)kernel function来“避免过拟合”。

    其实吧,核函数提供了数据点间两两的相似信息(并不严格)。如果把欧式空间上两点之间的内积作为他们是否相似的评判标准的话,核函数就是其直接拓展。注意,这里所谓的相似并不是严格意义下的,只是一种很粗糙的解读。

    而很多机器学习的算法,比如(dual)svm,其实只用到了数据间的相似信息(linear SVM只用到内积),所以这就提供了一种系统性的扩展方式:把内积换成其他的核函数!

    当然了,想从理论的角度很好的理解核函数需要将其理解成一个两步的方法,1)将原数据映射到另一个(低维高维无穷维)空间;2)在那个空间上做内积。这对核函数的选择造成了限制,但是实际中,下蛋的母鸡才是好母鸡,你可以任意选择效果好的核函数!

    对于 @陈然 的例子,映射是 x -> (x,x^2), 那么等价的核函数就是 k(x,y) = x*y+x^2*y^2. 而很多时候,我们只需要核函数,而不需要那个映射,也无法显式的写出那个映射(当然,如果你想分析解释学到的分类器的话,这就会给你造成麻烦)

    注:并非Kernel Method Researcher, 理解难免有偏颇,见谅。
    关于这点的误解实在太多。
    核函数和映射没有关系。核函数只是用来计算映射到高维空间之后的内积的一种简便方法。

    一般英文文献对Kernel有两种提法,一是Kernel Function,二是Kernel Trick。从Trick一词中就可以看出,这只是一种运算技巧而已,不涉及什么高深莫测的东西。

    具体巧在哪里呢?我们如果想进行原本就线性不可分的数据集进行分割,那么选项一是容忍错误分类,即引入Soft Margin;选项二是我们可以对Input Space做Feature Expansion,把数据集映射到高维中去,形成了Feature Space。我们几乎可以认为(引用Caltech的课堂用语“We are safe but not certain”)原本在低维中线性不可分的数据集在足够高的维度中存在线性可分的超平面。

    围绕选项二,那么我们所做的就是要在Feature Space套用原本在线性可分情况下的Input Space中使用过的优化方法,来找到那个Maximaizing Margin的超平面。原理机制一模一样,是二次规划,唯一不同是代入数据的不同,我们需要代入而不是。这时(在假设我们已知了如何选取mapping之后)才有了核函数的概念。

    具体Trick的意义,就是简化计算二次规划中间的一步内积计算。也即中间步骤有一步必须求得,而我们可以定义核函数,使得我们在不需要显式计算每一个、甚至不需要知道长什么样的情况下,直接求出的值来。

    也就是说,核函数、内积、相似度这三个词是等价的。因为inner product其实就是一种similarity的度量。核函数和映射是无关的。

    但为什么这么多的认知中核函数是一种映射呢。一来这两件事一般先后进行,所以常常被混为一谈。二来就像前面所述,核函数让人们不需要知道长什么样,不需要知道怎么选取映射,就能够算出内积。因此这常常被认作是一种implicit mapping。这是由Mercer Theorem保证的,即只要核函数满足一定条件,那么映射空间一定存在。

    故事应该从一个简单的二维世界讲起。从前有一个世界X,X里面有很多很多的数据点,这些数据点属于两个帮派,正类和负类。正类点居住在y轴右边,负类点居住在y轴左边,他们以y轴为分界线,泾渭分明,互不侵犯。

    突然有一天,不知道是X纪年的几年几月几日,负类开始大举进攻正类领地的第四象限。正类很快失去了很多领地,又被迫签订了和平条约,从此X世界的居民们发现了一个问题,他们不能再用y轴作为国界了!

    还好,在负类点中有一位聪明的数学家,他发现两国的地盘可以用一条直线分开,把平面上每一点坐标放进直线方程ax+by+c里,如果大于零,这就是正类的领地,小于零是负类的领地,中间这条线后来被命名为分类面,于是X世界里第一个线性分类器诞生了。有了数学的帮助,X世界太平了很多年。

    然而好景不长,贪得无厌的负类君主再一次发起了远征,这一次他们占领了第一象限之外的大量领土,吞并了整个第四象限。然而由于进军过于激进,导致战线过长,负类远征的脚步也不得不停滞于此,开始休养生息。但是国界怎么办呢?

    聪明的数学家苦思冥想,发现这么一个事实:之前两国的分类面是直线时,分类面可以用分类面两侧的两个点(两点中垂线是分类面)表示。如果叫这两个点(x+,y+),(x-,y-)的话,那么正类领地的所有点和(x+,y+)的内积都大于它们和(x-,y-)的内积;反之对负类领地也成立。数学家还发现,对于任意一群世界X中的点,(x+,y+)和(x-,y-)都能表示成它们的线性组合,对于一个新来的点,它和这两个点的内积就可以表示成所有点和所有其它点的内积的加权和。所以给定一些两个国家的点之后,我们可以计算两两点之间的内积,并把分类面表达成这些内积的线性加权和。后来人们把这些点的内积放在了一个矩阵里,并叫它核矩阵,核矩阵定义了世界的分类。在这个核矩阵里,矩阵里每个点的值是两个X世界点的线性内积,它定义的分类面在原来的X世界里是一条直线,所以这个核矩阵后来被成为线性核矩阵,而以两个点生成矩阵中每个点的映射被成为线性核函数。

    这个发现可不得了。等数学家发现这一点之后,负类的领地已经进一步扩张了,现在正类的领地已经只剩下第一象限里一个抛物线的内部了。但有了新的核理论,这个国界问题难不倒数学家,他定义了一个映射,把X世界的点映射到

    的四维世界,把这个世界的内积定义为新的核函数,在两个类的领地分别取了几个点作为基础之后,一个抛物线的分类面就被定义了出来。这是X世界里第一个被成功推导并得到公认的非线性分类面,而这里用到的核函数是上述映射的内积,也就是点坐标的多项式表示,所以这个核函数(矩阵)又被称为多项式核函数(矩阵)。

    历史总是一遍遍重演,但这一次正类将历史推动到了前所未有的境地。X纪年若干年后的某一天,负类境内的第三象限突然因为正类策反发生哗变,同时正类也大举进攻第一象限的负类领地,希望收复失地。经过若干年的战争,最后两类将领地用第一、三象限的两条双曲线隔开,负类保有包括原点在内的第二、四象限和坐标轴附近的区域;正类则占领了第一、三象限的大部分。

    现在的问题是,这么一来国界要怎么划分呢?

    这回一个来自正类世界的懒惰的数学家想到了一个基于核方法的解决方案:我们不如跳过映射和内积的步骤,直接定义一个核函数吧!这种异想天开的方法被负类数学界嗤之以鼻,但在正类却大获成功。很快正类的数学家们发现两点之间距离的平方的指数的倒数(其实没这么复杂,就是正比于两点距离所定义的高斯概率)是一个不错的核函数,这样在分类面附近两类中分别选一些点,就可以定义任意的非线性分类面了。为了纪念这个伟大的正类数学家,后世用这位数学家生平最喜欢的三种食物:拉面、牛肉和和薯条命名了这个核函数,称之为RBF核(误)。

    这个发现为推动后来两类数学界的统一做出了巨大的贡献,而发明RBF核的数学家也因为一句“数学家是有分类的,但数学是无分类的”的名言获得了菲尔茨和平奖(误)。

    至于内积?后来有负类的数学家研究了一下RBF核是否对应一个向量映射,结果是如果想把RBF核表达成一个向量内积,我们需要一个映射将向量映射到一个无穷维的线性空间去。发现了这一点的数学家又发展了Mercer定理和重建核希尔伯特空间(Reproducing Kernel Hilbert Space)理论,但这就是另外一个故事了。

    核函数只是满足某些必要条件的函数,其作用要与具体的算法结合才能显示出来。

    我来简明说一下SVM中核技巧(kernel trick)的作用,一句话概括的话,就是降低计算的复杂度,甚至把不可能的计算变为可能。
    核函数有如下一个性质:

    其中是对做变换的函数,有些变换会将样本映射到更高维的空间,如果这个高维空间内与是线性可分的,那么我们就做了一次成功的变换。核函数是二元函数,输入是变换之前的两个向量,其输出与两个向量变换之后的内积相等(这个性质非常重要)

    而我们知道,求解SVM时,其原始形式(这里我们假设已经对原始的输入做了变换,即输入模型的样本变成了)

    st.

    i = 1 , 2… N(N为样本个数)
    这是个二次规划,因为未知量的个数是参数w的维度,而w的维度与样本的维度相等,即等于变换后的的维度,所以其求解复杂度与样本的维数正相关,这意味着,如果我们把原始样本从十维空间变换到一万维的空间,那么求解该问题的时间复杂度提升了1000倍或者更多,我们知道有些变换可以将样本换边到无穷维空间,那么这种变化之后直接是不可求解的。
    上面的问题可以使用对偶 + 核技巧的组合来解决。

    我们也知道,SVM原始形式的对偶问题是:

    st.
    很明显,未知量的个数与样本的个数是相等的,那么这个对偶问题计算的时间复杂度是与训练样本的个数正相关的(这也是为啥样本个数太多的时候不推荐使用带核技巧的SVM的原因)。
    仅仅做对偶还没有解决问题,因为在 中还要求,这就需要将样本先变换到高维空间,然后再求在高维空间内的内积,这样的变换还是需要很多计算资源。等等,我们说过核函数的作用是“核函数是二元函数,输入是变换之前的两个向量,其输出与两个向量变换之后的内积相等”,所以我们可以用来代替中的,避免了显式的特征变换。
    于是,使用对偶+核技巧,我们成功解决了问题。

    使用核技巧之后,学习是隐式地在特征空间进行的,不需要显式地定义特征空间和映射函数(李航)

    还有一个问题,就是对新样本预测的时候怎么办?众所周知,SVM学习出来的权值是支撑向量(所谓支撑向量就是对应的不为0的样本)的线性组合,即,所以求解也可以使用核技巧,来避免显式地变换。即
    这么看,SVM和核技巧简直是天作之合!

    问题中的映射:
    首先,将数据映射到高维空间是为了解决数据在低维空间线性不可分,否则在SVM中分类超平面和最大间隔的思想也就无从谈起。

    问题中的核函数:
    但是,如果维数太高甚至无穷维,就会带来计算量的问题,这时候就需要核函数。
    利用核函数,可以直接在低维空间中完成计算,而不需要显式地写出映射后的结果,避免了在高维的计算,结果却是等价的!

    问题中的径向基核:
    另外,问题提到的径向基核很常见是因为在实际运用中确实能得到不错的效果,此外还有线性核多项式核甚至字符串核等等等。很多时候选择要取决于具体的问题,样本量以及特征量等综合考虑,如果少样本多特征可能线性核就表现不错了,如果多样本少特征高斯核确实经常有喜人的表现,如果样本量巨大可能又要看着办,总之一个字:多试试

    首先,我认为直接说kernel function(核函数)是inner product(内积)的说法是不准确的。下面从核函数的定义开始构造出RKHS(reproducing kernel Hilbert space)。下文中以 表示实数。

    核函数定义如下:
    A function is a kernel if 1) k(a,b) = k(b,a) and 2) For any in and all real-valued coefficients ,
    这显然不是一个inner product的直接的定义。那么这又是怎么和inner product联系起来,又怎么构建一个Hilbert space呢?

    为了构建一个Hilbert space,现做如下定义:, 即, 表示将映射到的函数的集合。并定义feature map 将 映射到. 所以,是一个函数,且 .

    在此基础上定义向量空间 . 于是,我们得到了一个以 为basis(基)的real vector space(定义在实数域伤的向量空间)。此处略去对其符合向量空间的定义的验证。然后定义inner product:对于, , 定义。

    须满足如下条件才可作为的内积:
    1. 对于任意 均成立。
    2. 对于任意 均成立
    3. 对于任意 均成立
    4. 对于任意 成立, 且当且仅当时, .
    …..暂时略过验证有空再来补。。。不过这些个都不难。

    现在我们构造出了inner product space(pre-Hilbert space),也就是V。于是 (completion of V) 也就是我们需要的Hilbert space。

    那么,为什么要叫RKHS呢?我们看如下两个式子:
    1.
    2.

    正式因为上面两个式子(尤其是第二个),k才被称作“reproducing”,当然k为什么叫kernel还有别的原因就先不说了(我也说不太清楚)。所以 (with ) 才被称作RKHS。

    我一直把核函数理解成在做特征转换,核函数在计算两个样本映射到某个高维空间之后的内积,而内积可以一定程度反应两个样本之间的相似度(余弦相似度)。总体来说,在某个高维空间中,使用所有样本与这个样本之间的内积,去重构这个样本的特征。
    RBF network 中,就可以很简单的理解成:先做一层特征变化,然后再去学习一个线性模型。(因为是先做特征变换,所以这里的线性模型,对原始的样本来说,已经不是线性的了)。
    我所遇到的所有使用核函数的地方,这么理解全部可以说的过去的。 可能是我接触的还不是特别深。

    svm与核函数的关系,如同logistic回归于logit函数的关系。
    如同线性回归的最小二乘法确定一条直线,SVM的目的只是找一个最优超平面,这个超平面将两组样本分开的同时有最大的margin,于是就成了求极值的问题。确定的margin边界上的点与各自一遍任何样本的积都比另一边的大,于是只要找到两个边界上的点就可以给以后出现的新样本分类提供依据。
    对那些不能用一个超平面分开的两组样本,可以用曲线或曲面分开,但曲线或曲面的函数很难获得,于是人们就通过函数将样本映射到高维空间直到能找到一个超平面将其分开,但是这个映射函数如何确定呢?高维空间如何确定呢?这难度不亚于构建将两类样本分开的非线性函数。
    幸好,人们发现判别分类时只需要比较高维空间超平面边缘的点与新来样本的乘积差别即可,同时核函数可以通过低维空间样本向量的内积计算代替映射后高维空间的样本向量内积的计算,于是人们恍然大悟,我们其实不需要知道映射函数和映射后的空间情况,只需要在本空间内用核函数的计算结果代替就可以了。

  8. 纪秋佳说道:

    样本 非线性分类问题
    例如下面这个图,我们无法用一条直线把实心点和空心点分开,但是可以用曲线把他们分开。但是问题来了,这个复杂的非线性函数难以构造。
    但是,引入核方法,通过嵌入一个输入空间到另一个特征空间的非线性映射。也就是让上面的。这样的话,原来的实心点和空心点又可以用一条直线分开了。O(∩_∩)O~~
    而这里的就是那个核。解决分线性问题的利器啊。

    ps:构造核函数的方法有很多,要根据实际情况选择。最重要的是核函数通常都是有参数的,例如里面的,并且分类结果与参数的选取有极大的关系。要根据实际情况选取。

    pps:在网易公开课上有机器学习领域类的大牛Andrew NG的课程。有兴趣可以观看斯坦福大学公开课 :机器学习课程

    搞统计的人入ML的行,许多都会从Probably Approximately Correct (PAC) learning开始(也就是楼上多位童鞋提到的learning theory),而PAC learning 在粗略意义上等同于排名第二答案说的“我预测明天 95% 的可能性 下雨的概率落在 【0.7,0.9】之间”。

    简单来说,PAC learning就是统计中Frequentist的东西(以集中不等式为主,典型的例如Hoeffding Inequality, McDiarmid Inequality, etc)加上一些复杂度理论 。这东西有bound可证,且为诸如SVM,Boosting等提供了强力的理论基础,所以对机器学习理论界的影响相当大,有学者甚至认为以PAC Learning为分界,机器学习终于作为一门具有严格理论的科学,才算是从“略显民科”的传统人工智能中分离出来。可以说,这部分的思想是和搞统计的人十分契合的,个人认为这算是频率学派在机器学习领域的一次发扬光大。

    然而,只要仔细思考这些bound的推导过程,就会发现其中有很多相当粗略的估计+不停的提高上界,上界,上界。而且在我个人看来,这些推导过程中使用的包括VC dimension, Rademacher complexity 等用来衡量一个函数族的richness的指标虽然数学上是严格的,但其“判断一个复杂函数在具体问题上的泛化能力”的能力依旧是十分贫乏的。一个典型的例子就是一个神经网络的VC dimension 它大到根本没有意义,然而确在很多实际问题上表现好过SVM。
    最后,也是我认为的最关键的一点,PAC Learning 是 distribution unrelated的,也就是说,不管input服从什么样的distribution,只要是可测的,这个理论都成立,换句话说,It is true for every case, so it is useless for every case. 一个完美到足以涵盖一切可能输入分布的学习理论,它也必定平凡到无法直接处理稍微有针对性的问题。

    机器学习要做的好,需要data distribution related。具体的问题需要具体的prior/pre-knowledge。以“深度学习”为例(其实我比较讨厌“深度学习”这个词,都快发展成IT行业三俗了),比如图像因为是相对空间平滑的,所以用CNN就有意义,CNN里面的weight sharing, pooling, locality,就是针对图像这种特殊的distribution设计的,这就是直接注入在模型中的prior。再比如做speech或者translation会用RNN,因为RNN 可以捕捉时序关联,这又是直接注入在模型中的关于data distribution的prior。

    所以目前看来,如果想要做出能work的东西就要一定程度上放弃大统一理论的梦想。因为机器学习是没有万能钥匙的,unlike Hinton, we don’t know how the brain works.

    共同点:统计建模或者机器建模的目的都是从数据中挖掘到感兴趣的信息。下面只讨论supervised learning, 就是对一个pair: ( 自变量x,因变量y)进行建模。 也就是找到一个函数 y=f(x) , 用x 来刻画 (解释、预测)y。 首先我们要一组观察值(x,y),来 回归(learn)这个未知的函数 f.

    区别:

    统计学家: 在刻画 f 的过程中,统计学家用的方法是: 对于 f 的形状和 y 的random distribution 进行一些假设。 比如说假设 f 是线性模型, 或者y 是normal distribution。 然后来求在一定标准下最优的 f. 比如说,在BLUE (Best Linear Unbiased Estimators)的标准下,最小二乘估计出来的 f 就是最好的估计。 然后根据对数据的distribution的假设或者是大数定律,可以求出 参数估计的不确定性 或者是 standard error。 进而构建置信区间,来表达我对我能做出的 f 的最好的估计 的信心。优点: 可以对不确定性度量。 简单模型的可解释性强。当假设的assumptions满足时模型科学、准确、严谨。 缺点:复杂情况下assumptions难以验证。

    机器学习专家:不对 y 的distribution进行过多的假设,不计算standar error,不 care bias。 通过 cross validation来判断 对于 f 的估计的好坏。 也就是说,在机器学习领域,数据量大,机器学习专家拿一部分来估计(train,learn )f,留一部分来验证预测结果的好坏。预测结果好的模型就是好模型,不计算估计参数的偏差。 缺点: 缺乏科学严谨性。 优点: 简单粗暴。 有一次听一个大牛的seminar几个教授的段子记忆尤新:"those machine learning people are making predictions without probability! "。

    对于这句话:“统计学家更关心模型的可解释性,而机器学习专家更关心模型的预测能力” : 总体来说,可解释性强的模型会损失预测能力,预测能力强的模型往往比较难解释。 常见的模型中,从可解释性强到预测强的模型依顺序排列是
    1 Lasso+线性回归
    2 线性回归
    3 非线性模型
    4 非参模型
    5 SVM
    构建简单的模型,比如线性模型,更容易解释因变量对自变量的影响。 适合于那种目的是解释一个变量对另外一个变量的影响的问题。也是经典统计中最常用到的模型。变化再多一些,非线性模型,非参模型,更灵活,选择更多,所以可能达到更好的预测效果。但是往往比较难解释x对y的影响。(这些模型都来源于统计,推广于机器学习。这些模型都是几十年前统计的研究成果了好么!!因为最近计算机速度提上来了,原来没名气,是因为计算速度带不动,数据没收集辣么多啊!!)!因为机器学习领域的数据大,运算能力强,所以能把复杂的非参或者非线性模型用的效果比较好。

    经典统计和机器学习分别在哪些领域有优势?
    在一些传统领域,工程实验,生物试验,社会调查,物理实验,我们能获得的数据量非常小,我们必须小心翼翼的对待我们的模型,从有限的数据中提取尽量可能多的信息。抑或是一些对参数很敏感的预测,差之毫厘失之千里,比如检验一个艾滋病新药物是否有效,来决定要不要投入funding去进行研发,我们就要用严谨的概率统计模型。
    但是在搜索引擎,淘宝用户购买信息,人脸特征识别等领域,我们能够获得很大量的数据,而且数据维度也非常高,用传统方式建模,很有可能维度高到严谨的function根本解不出来,机器学习的理论就非常有效了。

    为什么搞统计学的好多都去做机器学习了?学术界可能不是这样,但对于一般人来讲,确实差不多。大部分的业界原因我比较认可宋一松的说法。我不认可说机器学习更注重预测,统计更注重阐释,你看看机器学习里决定树的阐释效果差么,统计真不注重预测么(stepwise 这种纯预测统计基础工具要哭了)。说机器学习很难保证完备性和稳定性的, 那validation 又做来干什么,而且abnormal case analysis 不应该是单独的一门学问么,至于地震什么的,通常做法是买保险吧。。。

    统计跟机器学习在应用层面上根本的差别是什么?
    还是那句老话,无论是传统的统计,还是贝叶斯统计,统计永远都是在用样本估计总体特征。而社会科学研究的主要就是人类这个大总体。
    你再看看机器学习的应用方面,
    互联网企业或银行业是直接掌握了总体的数据啊,或者说对于他们的应用来讲,不需要估计一个更大的总体了啊,只要研究他们用户本身就足够了。

    所以你会由此发现两者使用的差别是如此的巨大。就拿一个基本的feature selection作对比例子。
    传统统计学方法:ANOVA and ANCOVA, Best subset, LASSO and Ridge, PCA
    机器学习方法:Decision Tree(当然还可以由此衍生出random forest, gradient boosting, etc.)
    看看上边的,是不是有的涉及最大似然估计,估计的是什么,是总体啊。有的涉及减小方差损失,为什么,也是为了总体考虑啊。
    你再看看下边的,只要分的最有用就好。怎么算有用,比如说test case 的mse最小,我不需要估计test case 的分布,因为我从traing case里完全知道。这也算是大数据的力量吧。

    在比如说对于unbalanced data set:
    传统统计学方法在glm里各种mixed modeling (or hierarchical modeling)还要防over-dispersion, 究其原因还是要估计总体。
    机器学习方法最直接的就是SMOTE, 直接制造更多的minority case以及减少majority case,也是完全不用管总体分布的。

    -informative distribution vs data talks-

    很多统计的工作是基于非常有道理的对于世界的理解的。 比如课本上的几个例子:
    骰子个面概率均等
    n个独立生产的机器,在1小时内损坏n台的概率服从伯努利分布
    电子器件的寿命服从指数分布
    放射性物质的辐射服从泊松分布
    这几个例子都是那种细想起来觉得超级有道理的

    如果对于一个问题 我们把方方面面都分析清楚 建模清楚 同时这个模型与现实数据吻合的很好 我们心里会有极大的满足 认为这个模型健壮并且"正确"

    但是 如guilin li所说 对于人脸识别问题 我们实在是给不出什么有道理的distribution,所以这种非常有信息量的distribution我们玩不下去了

    让我们把distribution的问题抛一边 假设我们有一个模型 不管它有没有概率意义 如果它在极大的从全体中随机抽样的数据集 甚至就是总体上有极好的表现 哪怕这个模型是黑盒 我们也会对这个模型有信心 虽然如果这个模型不那么漂亮 受过太多数学训练的人会发自心底的讨厌 但是谁都不能否定它的有效性 这种思路 更像是机器学习的思路

    我想再说一遍 我直到今天都觉得这种思路不漂亮 但是它work

    这种思路的一个大问题是 如果我们的测试数据不能代表总体 比如@齐鹏 的股票预测例子 我们的测试数据中不包含足够的政府行为 同样也不包含相应的特征 那么失效也是必然的 这不是机器学习的问题 而是部分做机器学习的人习惯了有什么数据就用什么数据 不肯深入的考虑问题 同时也满足于当下work

    -How to do model selection-
    我们都说data talk 但是机器学习领域确实有一个不好的风气 很多论文里面没有error bar。我必须吐槽一下 比如mnist数据集上记录了deep learning的最新error rate 但是 mnist这个数据集太小了 今天任何improvement都不可能是统计显著的 用贝叶斯统计学的思路可以这么说 如果我们对于深度学习方法的信心是50分,看到它在mnist上又提升了0.1 一个理智的人的信心提升也就是0.01这种样子 因为这个提升太有可能是实验设置引入的随机性了

    前段时间知乎里面讨论 心理学领域里面都开始逐渐觉得p value都不靠谱了 因为错误的使用假设检验导致实验不可重复 论文中声称的现象很可能根本不存在 可是机器学习领域里面很多从业者甚至从来不用p value 就算是用cross validation,也不看variance,只看mean 这个领域还能进步 我也很仔细思考过 勉强说服了自己 但是我很震惊

    对于任何一家公司 如果在解读数据的时候没有统计意识 它非常可能一个团队辛辛苦苦工作了1年 每次release都有进步 但是一年下来发现指标又晃晃悠悠回到原点 然后大家又编出一些道理解释为什么这个指标有自然下降趋势 多亏我们的努力在让它keep在这个位置 我真是忍不住想说 你们敢不敢把这一年做的工作总体来做一个对照实验 看看删去它们真的有显著的下降吗? 有的时候真为大家捏一把汗 这么多人的青春 就因为不重视统计 整天被随机性玩弄

    所以但凡大家在评价模型时 心里存有统计意识 具体使用传统假设检验还是使用bic或者cross validation,我都觉得是小节了 机器学习工具包里自带的模型检验方法在很多时候是不够的 因为这个领域的风气如此 就算不想学太多东西 至少不要把包里的方法当成黑盒 一定要认真理解 模型选择比具体算法更重要

    -为什么机器学习有道理-
    重新看第一节 我说很多统计方法得到找到一些特别有道理的distribution 得到一个漂亮模型 而机器学习方法看起来不漂亮没道理
    其实从某个角度说也是有道理的 今天人们处理的问题太复杂了 真的很难得到特别简洁漂亮的模型 人的直觉给不出什么有意义的先验也正常
    所以机器学习再次走了data talk的路 比如最大熵模型 我不知道真正的分布是什么样 我找到一些特征 我觉得这些特征的统计信息足够稳定在未来可以重现 除了这些特征 我坦然承认自己的无知 用最大熵来建模无知 这就得到了logistic regression 这些特征的参数就留给数据来决定吧 naive bayes的条件独立性看起来是一个很强的假设 其实也可以从最大熵推出来 所以 条件独立性不是一个外加的强假设 而是无知的结果 无知是一个比想象中强大很多的知识
    最大熵方法可以看成一种non informative prior bayesian方法,也是一种empirical bayes方法 zhang cosmos还谈到很多机器学习模型可以看成是non parametric method 是的 机器学习就是在使用这些万能的prior or distribution or method 然后把不万能的东西 比如什么特征在未来是可重现的 把这个猜测的权利留给工程师 哈哈 反正理论是对的 你自己猜错了别怪我 所以才看起来无所不能(褒义) 所以其实机器学习理论真的蛮美的 要吐槽也只能吐槽我们这些工程师滥用

    有些时候机器学习能说出道道 有的时候也不行 比如线性回归 严格来说 我们用线性回归的时候 我们通常并不知道数据是不是线性的 统计学家要羞答答的说 任何函数都可以用泰勒公式分解出线性成分 机器学习工程师们其实想的比较少 任何一个机器学习算法都是一个信息抽取器 就好像世界有丰富的颜色 但是假设机器学习工程师不知道这个世界有颜色这个概念 他们也常常不知道手上拿的这个模型叫做红色滤镜 反正要是用起来work 结果好 我管它线性还是红色 管它为什么 我就知道这个滤镜能抽取一些有用的信息 我管它过滤掉了多少其他有用信息 再说一次 只要测试数据足够有代表性 这样做是work的 所以咱们工程师也不用自卑

    在工业界混久了 我有的时候也觉得这种糙快猛的方法爽的很
    这种思路也推进了机器学习的产业化 但是像谷歌流感预测模型失效这样的例子 或者齐鹏说的股票预测的例子 还有类似于金融行业的黑天鹅(上一次是统计学家的失败下一次该轮到机器学习专家了) 我觉得必然还会出现的

    -机器学习不只是统计-
    很多朋友说了 机器学习在计算复杂度上有很多的改进 此外 现在大家玩的manifold 也是很有趣的思路

    -机器学习不全是数学-
    就算是svm或者boosting这些理论已经分析的很透彻的东西 来了一个新问题 我们也倾向于各个模型都试试 因为人的直觉真的很挫 人没法从理论上判断哪个模型最好的 sklearn网站上有一个decision tree,哈哈 ,大概说了说经验什么问题该用什么模型。这个decision tree就和机器学习学出来的模型一样 就是个经验模型罢了 你永远不知道这一次它是不是对的 只知道它总体上正确
    机器学习领域永远都不会是纯粹的数学 经验很重要 人脑是一个强大的学习器 可以充分利用各种背景知识来避免overfitting 从有限几个不统计显著的样本中以较高的正确率得出结论 这在其他学科中已经得到了证明 伽利略那几个思想实验根本不能“证明”物体有惯性 他当时的实验精度也根本就证明不了 但是多亏了这种大胆的经验直觉和猜测 科学才能走到今天
    从这个角度说 我觉得机器学习在统计大量缺位的情况下走到今天 本身就证明了人脑是多么强大 可以在不严谨的情况下靠sense 西方文化中的数学一书中谈到 哥白尼的模型首次提出的时候在精度上其实不如成熟的托勒密模型 哥白尼本质上是一个数学家 他的观点是 这个模型是美的 所以它是正确的 这种在必要的时候忽视现实 相信理念 简直太乱来了 可是也太强大了 我们今天管哥白尼的行为叫奥卡姆剃刀 可是科学家们还有更多无法命名的直觉
    这也是我说服自己的方法 忽视统计简直太乱来了 不过看来现在这个领域的直觉还能帮上忙

    但是机器学习的几次大进步 svm bootstrap lasso都来自统计学家和数学家 也说明了严格性是多么重要
    让我们祝机器学习好运!

  9. 豆豆叶说道:

    因缘际会透过微信公众号拜读作者"机器学习专家与统计学家观点上有哪些不同?"大作,我立马分享给台北研发中心的同事,并且cc给研发教授团一位陈教授,陈老师是留美统计学博士,本身也能撰写运算程序,我们公司(API)开发的Smart engine平台,有一模块"媒体投资模拟器"就是陈老师融合统计与计算程序的作品,以下是他回复给我的内文,我想应该分享给这里的同好,大家教学相长,相互学习。……………………………………………………
    Dear James,
    在您所引述的文章中,Ryan Adams 说: "我认为统计学和机器学习最本质的区别在于根本目标不同。统计学家更关心模型的可解释性,而机器学习专家更关心模型的预测能力。”

    身为一个也在研究机器学习的统计学家,我必须说,他的角度是错的,或者说是偏颇的。因为,统计学家当然也关心预测能力。

    统计学家跟机器学习专家的差异,在于机器学习专家很少有懂统计的,但是统计学家跨入学机器学习领域却是非常容易。
    事实上,机器学习源于信息科学领域 (Computer Science),但信息科学本身并不像统计领域那么难入门。举例来说,我在美国留学的时候,当时就见到不少大陆去念书的女孩子从中文系、历史系等文科领域直接跳到信息计算机相关研究所,而且都很快就能进入状况。反过来说,要掌握统计相关专业却不是那么容易。

    我这十几年指导统计研究生的心得是,他们通常都能在很快的时间内(例如半年)搞定机器学习跟程序语言(programming languages)相关的专业,但我们却无法期待信息计算机专家们在两三年内知道统计领域的专业知识。

    不管是统计专家或机器学习专家,甚至是太空物理学家,基本上都是想要建立模型(models)来诠释这世界的种种现象,但主要的差别在于,统计模型有考虑了随机误差,并且对随机误差有一整套严密的解释体系,但其他领域的专家所建立的模型未必有考虑到随机误差。所以主要的差别在于:

    一般科学模型: Y = f(X1,X2,…,Xk)
    统计模型: Y = f(X1,X2,…,Xk) + 随机误差

    如果自然界与人类社会的种种现象没有这个随机误差的存在,整个统计领域可以完全消失也无所谓。但事实当然不是这样。

    此外,过度重视「预测能力」也会有误导的可能性:所谓的「预测能力好」,到底只是特定时间(某几个月?)、特定空间(只限于某个国家某个地区中的某个公司?) ?还是这样的模型在不同时空状况下表现就很差?

    接触过机器学习、数据探勘、类神经网络(Artificial Neural Network)的人大概都知道,如果没有整个母体(Population)的模型假设加上随机误差模型的搭配,很多号称「表现很好」的模型,其实过一阵子就都会完蛋,也因此经常需要持续不断的微调参数。可是,话说回来,一个经常需要不断调整的模型,能够认为它表现很好吗?

    我最后做个小结论:

    1. 机器学习领域往往是透过过去收集的(大量)资料来当作预测的基础。如果过去的数据并不完整,无法包含所有可能的状况,这时候机器学习所得的模型就算短时间内预测很精准,但很快就会完蛋。相反的,有考虑母体随机特性的统计模型,因为模型本身就已经把各种可能性都包含在内,就比较不会受到过去局部数据的太大影响。
    2. 机器学习相关技术如果有采纳「随机误差」的观念,其实就可以视为是统计模型,所以两者之间的区分并不是那么的严格。反过来说,除非是像 E = m(C 平方) 这种纯物理学模型,不考虑随机误差现象的任何模型,基本上都是局部的、暂时的,无法长远表现良好。事实上,很多很厉害的物理学家们在量子力学里面使用了非常高阶的统计模型在分析数据,但这样的睿智未必能在机器学习领域看到。

    3. API 的媒体投资模拟器是包含统计模型与误差的机器学习技术。
    Steve Chen
    估计也不会有什么人看,反而可以随心的说一说。

    不管哪个专业的人,采取的方法都是和这个专业所面临的实际问题相联系。

    传统上做统计的人面临的数据都是来自于自然科学里的数据,比如Fisher面临的农业数据,或者生物上的数据,或者物理上的数据。这些数据都有一个特点就是可以很好的符合传统的统计分布,如正态分布 泊松分布等。面临这个实际情况,做统计的人有一个根深蒂固的思维,就是统计是概率的反问题。认为统计的目标是找出生成统计数据背后的真实概率。这是传统上做统计的人的最核心思想,所以不管点估计也好,假设检验也好,大样本方法也好。所有的方法背后所隐含的思想就是数据一定是由某些概率分布生成的。

    做机器学习的人有一部分来自于当年雄心勃勃研究人工智能而后承认现状转而研究一些实际问题的人,另一部分是互联网兴起之后实际中对数据预测有强烈需求的人。所以他们面临的数据来源完全不同于传统的做统计的人。最典型的机器学习的应用就是点击率预估、商品推荐。我们很难相信我们点开一家购物网站之后,我们就自动的对这个网站上所有的物品是否购买有一个概率分布。但是如果用传统的统计方法来做预测,这种假设就是天然的隐含的。所以面临这种实际情况,做机器学习的人必须找到其他看待数据方法。所以他们的观点是数据的几何结构才是在这种情况下看待数据的正确方法。那么自然而然的分类和聚类的手段就成了机器学习的人最得心应手的两种手段。

    举个例子可以比较好的说明,就是PCA主成分分析。这个方法传统统计上就有,机器学习上也有。经典而简单。做统计的人,第一次看到PCA都是在多元统计分析里,那时候对PCA的解释是第一主成分是随机变量的线性组合,这个线性组合的方差是所有线性组合里方差最大的。请注意,此时看待数据的方式是概率的。做机器学习的人,他们看待PCA是,把样本数据先去掉均值。然后找K维子空间逼近样本数据,逼近最好的K维子空间的基就是我们要找的主成分。请注意,此时的观点完全是几何的。当然在目前各个学科交叉融合的情况下,双方都会采取不同的观点,上述说法并不是说做统计或者做机器学习的人都是采用一成不变的观点,这点明眼人心里有数就行,不必纠缠。对样本数据做主成分分析得出来每个主成分的特征值。众所周知,绝大部分特征值都是很接近于0的。这时候双方思维的一个主要区别就体现的比较明显,做机器学习的人从几何的观点,可以自然的认为,由于特征值太小这些维度看成噪声是很正常的可以去掉,而不影响样本的所包含的信息。但是做统计的人天然认为样本是某个分布生成的,所以由样本所生成的特征值自然是服从某一个分布的,那么特征值是不是0就要进行的参数估计和假设检验。这个对做机器学习的人来说绝对是然而并没有什么卵用的步骤。但对做统计的人来说这是他们思维的自然延伸。

    所以双方最主要的区别就是看待数据生成方式。统计的人认为,数据由某个概率分布生成。机器学习的人认为数据是特征集到Label集的特征映射所生成的。统计的目标是恢复那个背后的概率,机器学习的目标是恢复特征映射。

    最后我想说的是,上述对统计和机器学习的区别做了区别。但不代表做统计和做机器学习的人都是死板人,都以一成不变的方式看待问题。时代在进步。不管做什么的人都是会面临实际问题,采用多方观点。最终的目的是把问题解决掉而不是做一些无谓的争论。

    这样的观点包括但不限于以下几点:
    业界学界之争
    严谨性之争

    就好像让那些关注理论严谨性的Statistical Scientist和关注实效结果的Machine Learning Engineer撕逼,Science和Engineering才是他们的主要矛盾,自然会得出很多不在统计和机器学习两个学科区别范畴之内的观点。

    事实上机器学习作为一门科学,作为计算机科学的子学科的时候,一样有其理论严谨性。以Boosting为例,在论证:
    Can a set of weak learnerscreate a single strong learner?
    这个问题上面,MIT的Robert Schapire 1990年在Machine Learning发表的文章The strength of weak learnability 对这个问题进行了非常严谨的讨论。

    所以:
    1. 业界与学界,理论严谨和关注实效都是科学与工程之间区别的表现,而不是统计与机器学习区别的表现。
    2. 而统计学和机器学习都有其作为一门科学的一面,也有在应用中工程的一面。
    3. 合理的比较似乎应该是直接比较:统计(科学)和机器学习(科学)或者比较:统计(工程应用)和机器学习(工程应用)。
    4. 当然机器学习界整体偏工程,统计界整体偏科学本身也可以是两者的一个重要区别。同样我们可以考虑一个有意思的问题: 为什么会有统计偏学界,机器学习偏业界,统计注重理论严谨,机器学习关注实效的映像呢?
    统计学想干嘛?
    “以下的论述可能比较卡通化,是对问题的一个简化,但是从某种意义上来说,统计学更像是面向科学服务的一门工具。统计检验和假设检验,是当科学家们想要理解这个世界的一些性质,或者想要回答关于某个进程的一些关键因素时的首选利器。比如说,某种药物到底对治病有没有效果?统计学家为这一类的问题提供了非常完美的工具,有了这些工具,科学家们得以去测量和估计某些可以理解的变量的效果和作用。所谓可以理解的变量,说的是,科学家在建模时所涉及到的变量通常都有正常人类能够理解的量纲(比如物理学模型中的质量,速度),并且能与你要观察的某种现象或者效应直接挂钩(比如研究某种基因修饰对表观型的影响有多大时,该种基因含量,所表达的蛋白质的含量)。也就是说,统计学模型里涉及到的参数都是有实际意义的,因此当某个假设通过了检验时,我们就知道一些现实中的变量是如何相互作用的。

    从这个角度来说,统计学通常把自己看做是量化分析的守门人,它的目标是通过严格的测量估计,假设检验,挑选出值得信任的假设,以此来理解各种生物体中的因果关联,或者是社会学中的某种进程或者是效应。当然,统计学里还包括了很多其他的重要想法和概念,比如,它对心理学、医学、社会学中的各种实验设计提出了规范和建设性框架。”

    简而言之,统计学更多是关于世界本质的一个个检验,它的目标是建立一个可以理解的世界的模型。

    ** 机器学习目标为何?
    “不同于统计学,机器学习更关心的不是模型的可解释性,而是模型的预测能力。机器学习的目标是搭建一套高效可靠的系统,能够持续的预测未来并且稳定的工作。比如,机器视觉系统需要做的是正确预测一张图片里的小动物到底是猫还是狗,两张人脸的照片里是不是同一个人,一个室内机器人是不是能够正确的识别出它周围的环境,等等。但这些系统内部的参数通常是数量巨大并且无法被人们直接理解的,更不用说有和现实生活中的某些特性对应的量纲了。但即使搞不清这些参数到底代表了什么,只要你的模型work,总能给出极为准确的预测就是王道。

    有时候,某一类机器学习问题的正确率突然有了大幅度的提升,可能得益于人们弄清了该优化问题背后的理论难点,但更多的时候,某种算法是否成功完全由预测结果说了算,即使人们对其中的原理依然所知甚少。”

    深度学习(deep learning)之所以在2000年至2010年的十年间比较沉寂,原因不外乎是人们无法理解它的学习过程中到底发生了什么,它一层一层学出来的feature究竟是什么,而它的表现又并非一枝独秀,因此它在一批更容易被人们理解的模型之间就显得不那么起眼了。但当Geff 在 2012 image net contest比赛上以deep convolutional neural network把对手甩开十条街后,deep net便瞬间令所有人折服了 。引用Geff的原话,"归根到底,我们还是得拿数据说话,当你的方法能将错误率降低一半时,人们必须得对你刮目相看。"(data always wins, when you can half the error rate, people will take you seriously.)

    *谁促进了谁?
    从某种程度上说,统计学习理论里的很多想法的确给了机器学习一些启发,但是,这几年来机器学习发展的如此之快,如此火爆的根本原因更多的是来源于可训练数据量的大幅度提升(互联网的普及,human computation平台的成熟,各类线下数据的电子化等等)以及电脑运算性能的突飞猛进(ps,显卡计算的飞速发展已经到了丧心病狂的地步了,NVIDIA对研究机构的资助简直是不遗余力,不惜血本的拼命往外送显卡,真是超级大手笔。。。),而并不一定是统计理论本身的根本性突破。

    “作为一个快速发展的行业,毫无疑问,机器学习吸引了统计学家的目光,越来越多的统计学界的一流人才都开始从机器学习领域吸收新鲜的想法,无论是算法层面,模型层面还是统计推断层面。可以说,机器学习是将统计学习中很早就提出来的一些想法进行了重新挖掘和重新定义。尽管机器学习的成功涉及到了一系列的统计学习方法,但这并不意味着统计学本身是这种成功的根本原因和最大推动力。”

    ** 求同存异
    尽管统计学和机器学习的着眼目标不同,但在某些情况下,两者共同关注的一个问题是,一个模型究竟为什么work。虽然之前说到了实战结果是检验模型有效型的终极标准,但大家总归是希望最终能够理解在一步一步优化的过程中到底发生了什么,是什么trick,满足了什么条件,使得prediction error能够快速converge。有人说,devils are in the details比如,即使在深度学习横扫了全领域的今天,人们对neural network内部的trick依然是一知半解,如何改进现有网络的结构和更新迭代的规则使得它能够更快的converge,更准确的generalize?机器学习界的研究者们在一步步探究其内部机理的过程中也逐渐的将模型的准确率提上新高。

    当然,作为更偏向于应用于实际的机器学习界,除了受制于理论上的upper bound,lower bound之外,在实际问题中,还会碰到很多对运算时间和存储容量上的限制,而这些往往是做统计理论的人不太关心的问题。

    在回答的最后,Ryan说道:
    做为在这两个领域里都有所活动的研究人员,有时自己也会迷茫我到底属于哪边?通常来说,机器学习界的专家,是不会缺席统计学的顶会的。但内心深处,我还是会觉得机器学习才是我真正的家:)

    机器学习真是一个非常有趣的领域,它的有趣性不仅在于你能够通过它发现现实中data的很多有意思的pattern,还在于那些引领着你发现有趣规律的算法中本身蕴藏着的智慧。这篇答案只是千万种角度中的一种, 没有触及到两者最本质的分歧,仅作抛砖引玉只用。

    如果你的markov模型输入都是历史股价,那如果第二天政府颁布了新法案禁止X行业发展,你在X行业历史利好基础上做出的判断就白瞎了;
    如果你的输入是历史股价和政策趋势,那第二天邻国出了个X行业B公司产品弄死人的新闻,你在X行业A公司本国股票的投资又白瞎了;
    如果你的输入是历史股价、政策趋势和国际新闻(这是很多对冲基金公司做的事情),那第二天某个大新闻网站的官方微博被黑了,发了条假消息,你做的投资组合又白瞎了(真事:Stocks plunge, recover after fake tweet);
    如果你的输入是历史股价、政策趋势、国际新闻并自动判断新闻的真假,结果第二天A公司总部地震了,A公司从此一蹶不振,你的投资又白瞎了。

    能影响股价的factor太多,所有模型不管简单/复杂,都有适用范围和被坑的时候,所以机器学习(或者说统计)这种东西不能不信,但切忌全信。
    简而言之,机器学习发现的是事物的相关性(输入-输出映射),在有限的样本集和一定的假设下可以推广到未知事物,而且模型可以相对比较复杂,能建模相对复杂的输入-输出映射,但很难保证稳定性和完备性;另一方面统计学家更关心稳定性(置信区间)和完备性(模型选择)等,更注重背后的理论保证,但这也限制了过分复杂的模型的使用,因为过分复杂的模型难以用数学刻画,也就很难给出理论保证。

    统计学更注重对不确定性的量化:方差,置信区间
    机器学习更关注可计算性,无法在多项式时间内计算出来的解法不叫解法
    机器学习在数据种类上的适应性更广:图片,视频,文字,关系和兴趣图谱

    统计学看不上机器学习的一点,就是机器学习喜欢把一个问题当作优化问题(optimization)来做。百度 Deep Learning 的老大 Andrew Ng(吴恩达)在斯坦福的机器学习课,第一讲就会提到 gradient descent。然而,对于优化所得的结果有多确定或是不确定,机器学习关注甚少。而这种对不确定性的量化,是统计学的立身之本。方差和置信区间是统计学的入门级概念,在吴恩达的课上却很少被提及。缺乏对不确定性的量化关注,让统计学家们总觉得机器学习是在瞎搞。

    不过,比起统计学,机器学习也有自己的巨大优势,就是对可计算性的关注。

    在机器学习的学术圈里,当有人跟你说他解决了一个问题,他很可能是说他找到了一个多项式时间的解法。就像所有计算机科学的子学科一样,机器学习只关注在有限时间内的可计算性。研究NP-hard的问题是无意义的,不如取近似来简化一下问题。对统计学来说,这种近似大概是无法接受的妥协。然而正是这种妥协,促成了机器学习从学术到工业的跃迁。

    而且,虽然说统计学是从数据中学习,机器学习也是从数据中学习,但数据和数据不大一样。统计学的数据只是数字,而机器学习的适应性更广一些。从学术到工业的跃迁如同开启了潘多拉之盒,这里的数据有图片,视频,网页,还有人与人之间的社交关系和兴趣图谱。当机器学习开始研究这些的时候,统计学就很难再追上了。

    所以,为什么统计学家不认同机器学习的观点,因为机器学习不关注不确定性,那为什么最后搞统计学的最后都去做机器学习了,因为机器学习的应用范围更广,成就更容易也更大。

  10. 搭房工人说道:

    STAT和ML的具体差异上面诸位已经成各个角度讨论了很多(不赞成ML更靠近Bayesian的观点),但造成两门学科观点差异的根源还是学科发展自身带来的“方法论”、“世界观”的差异,换句话说,但凡涉及“方法论”等的观点,两门学科都会有不小的差异。

    STAT来源于数学,或者准确地说,脱胎于概率论。因此,STAT或多或少保留了数学这门学科看待“方法论”的观点,比如,采用经典的“假设-推理-结论”以及“未经证明则不能使用”这样的思维模式。因此,STAT和ML对一些学术观点的持有不同态度,本质上就是数学与其他学科对一些问题持有不同的态度。因此,在STAT中,评价一个模型(或估计方法),更相当于是一个定理,比如:“在符合假设条件下,最小二乘估计就是(在某种标准下)是最优的。”这样的模型(定理)给出了关注对象的适用条件(假设)和为什么会是成立的(推理),讲得清楚什么时候可以用什么时候不可以用。注意,这里是指是否可以使用,而不是保证使用后效果是否好。(效果上)好用和(逻辑上)可用是两套不同的评价体系,某些情况下我们当然期望两者兼顾。

    多说几句数学。数学是一门形式逻辑学科,数学本身的学科逻辑和发展是源于古希腊的那一套,当然现在已经庞大精细复杂到不可同日而语了。数学从来不会关心得到结果会有什么用,不会关心自己是否做了一些微小的贡献,数学只是在意得到的结论是否是符合逻辑的。讲道理,数学这么高冷,就应该越来越小众、越来越式微,但是,好基友物理跳出来为数学叫好,因为在这个宇宙中的、目前已知的物理定律,几乎全部符合了数学中的结论,并且数学(作为工具)是能够成为指导物理发现的利器的。这不是一件很奇怪的事情吗?数学是人类自身YY的,为毛物理世界就如此高的契合这些呢?

    话题扯回来,STAT的研究中,对一个新出现的估计量(或者算法),首先会考察它的一些基本性质,然后自然而然的会考虑它的渐进性质:到底样本越大以后,这个估计收不收敛?收敛的话是否有优化速率的选择方案?方差怎么计算?等等一系列理论上需要解决的问题。比如,EM算法确实好用,但 Jeff Wu 就是要去证明其收敛性;Cox自己也说不清楚为什么(生存分析中Cox模型的)偏似然能够保留大部分的信息,但仍然数十年前仆后继的论文把这个问题讲清楚了。有些人会问搞STAT的人,为什么你对证明这个证明那个那么熟练啊?因为STAT本身就自然而然地关心这些事情。模型是否能够在理论上保持逻辑一致,这对STAT来说很重要,而如果模型在实际应用中效果也很好的话,这就算是一个锦上添花的惊喜。

    不严格地说,STAT算是method/model-driven 的学科,ML算是data-driven 的学科,这里对STAT来说的model是比较严格的、至少经过严密论证的,而不是随意的处理手法都能称为model。

    总体来看,我认为另一个答主的那句“统计学家更关心模型的可解释性,而机器学习专家更关心模型的预测能力”还算是说的比较在理的。或者换句话说,统计学家更关心构成model的变量和参数,而机器学习专家更关心预测的结果。但这些毕竟也只是相较而言。

    举个例子,同样是线性回归,统计学家会去看每个变量是不是significant,residual分布是不是接近Gaussian,他也可能会用forward/backward等一些方法来选择变量。这一方面是出于对model所基于的假设的验证(在合理假设下OLS是BLUE),另一方面也是因为实际应用中,线性回归可以用来检验y是否可以用变量x解释。因而统计学家在做线性回归的时候,会比较在意每个变量及其对应的参数。

    但对于一个做机器学习的人来说,这些都不重要,甚至scikit-learn里面的线性回归都没有计算t值、p值的功能。那么万一引入了不该引入的变量怎么办?很简单,加regularization啊,要sparse加L1,只求预测效果好就加L2,然后在validation set上调lambda。总之我追求的目标只有一个,在test set上我的预测值跟实际值越接近越好,对我来说变量和参数都分别只是一个向量而已。

    所以像前面有一位答主说的,统计学在预测的时候通常会根据概率模型给出一个置信区间,而机器学习则一般不会这么做;相比之下应用层面的机器学习离数学更远。

    但这也并非绝对,比如机器学习中也会用到baysian inference的东西来建立概率模型,graphical model中也会经常涉及概率的计算。甚至做learning theory的那批人经常会用数学理论来证明为什么机器学习管用、怎样能从这个证明中获得更好的学习算法。

    不过learning theory所关心的,一般也只是用训练集的error和模型的复杂度来求这个模型在所有可能的数据上的error的上限,所以归根到底关心的还是预测能力能否泛化到没见过的数据。至于统计学的理论研究,恕我相关文献读的少,但据我了解还是有一定数量集中在通过概率模型来解释某些现象,从而解决引申出来的问题,因此如何用有合理依据的方式把变量放进模型里就是一个重要问题了。

    「聽說亞洲人都乳糖不耐」;
    「聽說美國人都很開放」。

    这问题问得貌似机器学习跟统计重叠很大似的, 特此澄清:

    跟统计扯不上边的机器学习也有一大类

    那类是把资料点当成几何空间的点, 关注的是排除不重要的几何性质并维持重要的几何性质, 涵盖Manifold learning跟大部分的降维分群算法, 微分流形, 测度空间跟拓朴学才是那类算法的基础,

    这只是一个根据我个人经验的简单的说法:换句话说,它肯定不会100%说得通。但既然各位讨论的都是多少懂统计,想必会判断我讲的到底是一般情况还是特殊例子,毕竟统计是在谈大部份的。
    当年我帮同学的论文跑相关性验证时,R square=53%他也照冲,还冲过去了,所以啦…我们聊个大概就好了。
    进化?从哪来的,往哪去?这个问题很好回答,从国小一年级一路往后看就好了。
    最开始,我们学算术,算术题一定会算出一个唯一的正确解,1加1不可能是2以外的其他答案。固定的输入和固定的处置,必然会得到固定的结果。
    接着,出现了「一枚公平的钢蹦丢桌面,会是字还是花」的问题。理论上,如果你可以把所有会影响结果的变数,包含硬币质量、质心、接触桌面​​角度、速度、接触面硬度、形状、磨擦系数、当时风速、风向….好吧,瞎举例而已,不再列了。总之就是很多很多,各式各样会影响结果(Y)的因子们(Xi),及这些因子和结果的关系(公式)找出来,理论上你应该是可以算出「一枚钢蹦丢桌面,会是字还是花」的结果。
    但实际上,从来都没人这么干。这说的是,理论解(公式求唯一解)是有的,但当数学模型复杂到超过一个限度时,理论求解就无意义了。实际上,我们会说「这次你丢出是字还是花,我不知道。但如果你丢个一万次,那五仟字五仟花吧….大概是这样啦,就算差也不会差到百分之零点几。」
    问我为什么?不知道。你不信?那来试试!就有了统计。
    我认为,统计是算术的进化,它在数学模型复杂到无法求出理论解时,跳过中间求解过程,依靠大量的数据观察找出因果之间的关联性,建立了统计数模。稳定制程得出的产品结果呈高斯分配,就是最典型的例子,我们可以直接以这个例子发展出统计制程管制(SPC)理论。
    那如果问题更复杂些呢?比方说上段说的,稳定制程呈一个高斯分布,你用平均值加减三倍标准差就能作上下限管控了,但如果你的产品是来自五台机器,数据是五个高斯分布的叠加呢?那你就只好请出机器学习的混合高斯模式(GMM)来了。
    我们为什么不把五个高斯分布用统计理论分别拆解? —这数模太复杂了。
    既然没有统计解释,那这些数据的因果到底有没关系(公式)?—应该有吧。
    那是什么关系?—讲不出来。
    那你怎么确定有关系—啊…不就是看海量资料,这样的组合进就一定会有那样的结果出,组合多没啥了不起,让机器自己慢慢看不就好了。
    怎么找关系—就用机器学习嘛。
    这段过程跟前面从算术中产生统计的过程其实还满像的。因此,我提一个简单的说法–机器学习是统计学在数学领域的进化。

    很有意思的是,欧美很多大互联网企业的首席大数据科学家基本来自于几个专业:数学(含统计学家)、物理、计量经济学。
    机器学习简单粗暴?深度学习理论粗浅?
    还是上国外顶尖杂志和大学网站搜搜papers 比较好。
    大约把机器学习专家和统计专家分开,是因为对变量的分布、条件概率的解释、误差的分析三件事,似乎做法不同?
    但实际上,只是对三件事的处理方式:出发点、路径、手段不同罢了。
    说机器学习不看分布,不管误差分析…的,其实机器学习是要做的。变量的分布决定了模型的前提精确度,常见的关联、协同过滤、支持向量机、贝叶斯分类等,其实都可以在考虑变量分布的前提下,调整模型精度。与常规统计专家的方法不同之处在于,机器学习更侧重于在向量空间操作,从而解决多变量的问题。围绕矩阵代数的概率、微分方程、随机过程是机器学习的方法论。
    在误差的处理上,机器学习的考虑方式也更复杂一些,其利用更多的泛函分析来调整其误差控制。
    总体来讲,统计学是在随机事件的分析基础上,不断融合矩阵、微分方程、微积分等数学思想,用数字描述随机事件的科学,比机器学习要更基础一些;
    而机器学习,是从矩阵、微分方程、泛函分析、向量微积分、随机过程、量子物理等理论上寻找大规模多维数据的模式识别的问题。
    解释度和预测度区别不大。你把一件事解释清晰了,和你准确预测类似事件,难道不是充分必要么。
    国内把机器学习当黑箱,觉得没啥统计因素,没啥数学因素…反正现在大多数业界应用的支持向量机、神经网络啥的模型,准确度到60、70%就到头了,比人家传统分析人员的手工强不了太多,对实际业务指导意义不大,模型适应性不强,我估计近期难免在大企业圈子里形成对大数据、机器学习的反对舆论。
    无他,大数据和机器学习对数学用的还不好啊。
    很担心,机器学习这些东西,就像这三十年引入的其他软技术:ppt 变成了看图说话,crm 变成了用户表格,bi就是趋势图和饼图柱状图—机器学习就是黑箱计算器。
    技术对效率的提升不应该是线性的。不深入研究背后的理论,问题很大。

    统计和机器学习方法上都是可以互相借鉴的,也都有理论发展和应用实践。本质上是不同的学科,只是恰好都在使用数据。

    两个学科的关键区别在于服务对象。现代统计的主流一直是科研工具,目的是利用数据回答科学问题。科学的本质都是经验的,数据是题中应有之意。

    机器学习最终目的还是实现一系列功能,回答科学问题在这个系列中是很小的一端。

    传统统计学的研究对象通常是比较简单的变量,比如说身高,体重什么的。机器学习的研究对象,通常是比较复杂的,比如说模式识别。很难来对其特征进行量化。而且很多学习机制是非线性机制,在用传统统计学来描述的时候,很难找到合适的度规。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>