工作完来回一下好了~
我不知道各种业界怎样~我就说我待过的公司跟teams
先说背景,不才小时候爱玩ML比赛,正值ML还不太红的200x年,
赢了一些奖,觉得自己很厉害~
后来去学校发了些paper,自我觉得超强。
就冲去hackathon然后试试看startup,结果很惨。
只好join Google休息一下,继续作machine learning,
做了两年,帮公司赚了不少钱可是paper都发不出来,来点坐领干薪的鲁蛇分享。
先讲玩比赛的时候:
比赛的时候我都只会一招,就是把feature expand很大,
然后用liblinear跑一次。
基本上那时候我是相信,只要有一个好的feature engineering tool
人生就无敌了。
我当时就写了个这个:
http://www.csie.ntu.edu.tw/~b95028/software/lib-gundam/
然后我就去念博班:
唸了博班发现,很多paper都乱写,model超漂亮,跑出来超overfit。
用一个paper的model跑另一个paper的data很常就会GG。
最后发现最强的还都只有liblinear跟随机森林。
于是我就生气了,想说去hackathon或是开开startup
初出茅庐:
当时做了一些health data,然后show说自己可以predict acc多高,觉得超屌。
我就去跟别人present,可是别人都看不懂。
这时候才知道业界很多人重视的一件事情“可解释性”。
你有一个好model,如果不能解释哪个feature强,在很多领域是无用的。
(像health他们好像就很注重,病的causality关系之类的。
像你可以predict一个人会生病,不过他想要知道哪个feature让他生病的。
这种东西很多时候是model很难去数理上含括的。)
在Google:
基本上我现在都还是一直在用liblinear。
我遇到的很多不是纯粹learning for accuracy的问题。
很多时候像stability很重要(e.g. 当有missing features,你的model是不是
不会go crazy)
有时候生data很重要,data生不好,很容易target leak,不小心train出来accuracy就
100%,还以为自己要得Turing Award了。
有时候prediction速度很重要,如果query很多,要怎样才能快速serve。
我觉得其实很多work都会越作越general,但是多数是从domain example开始作。
就像可能你今天作text classification很猛,可是你可能想要improve。
你第一件事情大概还是去看data,看看是不是哪些字常常会是noise,
还是sentence的parser不好。那就会从中改善,最后也会越作越general。
最后可能就会有很好得方法可以给你在很多问题上都有
10%的accuracy gain然后改变世界。
但是其实人生大部分的事情是不能generalized的,就像爱情(?)。
所以大部分的事情都只是pointwise fix,例如说:cross两个feature。
通常这种pointwise fix,都只会给你1%的accuracy gain。
所以这时候我就要来乱引用了,有人说过
“1% gain是engineering,10% gain是research。 ”
最后,公司还是要赚钱的,所以也很难一直给你时间想好玩得新算法去try。
我现在的mode就是边做engineering边做research,
也期望有一天能发个ICML Best Paper,
但是大部分的时间其实都还是找个新feature然后重跑liblinear。
对了,liblinear真的很强。请爱用liblinear!
※ 引述《milc (milc)》之铭言:
: 大家好
: 不好意思想请问一下关于ML的工作内容,
: 我是在coursera上Andrew Ng的ML影片课程自学,
: 之前也仅用过Weka取些features来做一些文件分类工作,
: 之后找工作想做这一方面的, 但是不知道业界工作内容,
: 想请问一下各位先进,
: 一般工作是用既有的ML方法套用来解决我们所面对的问题?
: 还是大部分都要提出新的算法了?
: 另外请问找ML工作前有没有什么要再加强与自学的建议?
: 谢谢大家(如果我提出的问题太过无知请原谅)