第一幕
旁白:坎德拉仔细看了周启源发给他的那篇文章之后,总算完成了 Pycharm 的配置。这次,他再次联系到了周启源看,他有一个不情之请。
场景:微信聊天(坎德拉&周启源)
坎德拉:“我实在是不知道怎么说出口,但我们的团队,正在研究一个汉语言处理的项目。看了您的论文之后,也深深地被您这种创新、打破传统的做法和精神所折服。我很想推广您的见解,以及对汉语言处理的杰出贡献。但自己又很不甘心,会因为在编程这一块而夭折。”
“真的是非常抱歉,我也知道我的请求非常地让别人为难,但实在是没有办法。您的方法太好了,我们的团队,真心地期望您的方法能够广为宣传。因此,我们打算写一篇论文,发到IEEE上。但真的很遗憾,我们的团队暂时没有能力,来编程实现您在论文中,描述的方法。我们真的很不甘心,这个推广汉语言处理新方法的机会,从我们的指尖,悄悄流逝。”
“因此,能否请您,将您的代码借给我们一阅呢?我知道我的这种要求很无礼,如果您拒绝,我们也表示理解。谢谢了,真的很感谢您。”
周启源心想:开源之人,路见不平拔刀相助,更何况他如此低声下气地来求我。而且,他的目的,也很纯洁,就是想单纯地推广我的方法。如果能够让我的方法,造福更多的人,我很乐意去帮助他。
周启源:“哈哈,你不用这么客气的。大家都是同学,互相帮助是应该的。你打算写一篇什么样的论文呢?”
坎德拉:“嗯,就是泰迪杯第一问嘛,不是有一个文本分类问题吗?”
周启源:“是的”
坎德拉:“您的那种,用二元语法,将连续两个汉字弄成一个特征,然后用卡方检验过滤,再用词袋模型,转换为特征向量的方法,十分新颖”
周启源:“是啊,不仅新颖,而且效果也很好。我计算出来的 F1 值,测试集有 0.9 呢”
“不过,你要写论文的话,最好把我那种筛选模型的方法也写下去。我读过很过论文,无论是中国、还是外国,都有一个缺点。就是没有通过验证,就直接拿某个模型来使用。特别是汉语言处理这一块,前人发现,用贝叶斯分类器,解决英文的 NLP 很好。于是,人们就‘惯性’地用贝叶斯分类器,来解决汉 NLP,这是不对的”
“汉 NLP 与英 NLP 有很大差别。首先汉语要分词,关于如何分词,就众说纷纭了,此时其一。其二是汉语言的停用词,很难区分。所以,汉 NLP 其实是一个独立于英 NLP 的全新领域。这种惯性思维不应该存在”
“我在论文中,就有详细谈到。我用了网格寻优、交叉验证,从几乎所有的机器学习模型中,筛选出了最好四个模型:贝叶斯分类、SVC、逻辑回归、AdaBoost。然后结合实际应用,将 AdaBoost 排除,因为它太大、太慢了”
“其实,这个结果也意味着,传统观念,即贝叶斯分类器在 NLP 上有用,是不太正确的。SVC、逻辑回归照样能够有一个好结果,而且它们占用的空间也非常之小。小道足够嵌入到芯片中(也就是 SOC 技术)”
“可就是有这么一些人,特别是现在,脑子也不用,就直接‘神经网络’。我在那篇论文里,也用了神经网络,结果效果实在太差,而且运算量、占用的空间也很大。比之 Adaboost,可谓有过之而无不及。真不知道,其他论文里的那些结果数据,是怎么吹出来的”
“神经网络不是万能的,而且世界是进步的,不要故步自封,自欺欺人,这一点请你记住。以后如果成为一名数据分析师,希望能够常常记住我这一句话:flashy and rehearsed routine can not fit in with broken rhythm”
“假设我的帮助和理论,对你以后的发展有所帮助,那么也请希望你能够将心比心,将我的理念传授给他人。让更多的人,能够有这样的思维”
“这,就是我把代码交给你的唯一条件,你能接受吗?”
坎德拉:“当然,一定”
周启源:“好,我的代码比较复杂,我先给代价加上一些必要的注释,再发给你。”
坎德拉:“嗯,谢谢了”
落幕
第二幕
旁白:网友兔子啦按照周启源的方法,给样本数量较少的类别,增加了大权重。然而,依旧效果并不好......
场景:QQ 聊天(兔子啦&周启源)
兔子啦:“我试了一下,用 SVC,调节了样本权重,但效果一般,准确率60%”
“唉呀算了算了,就这样了”
“反正社科类的又不可能跟科研的比”
周启源:“能交差就好[笑哭]”
“你们公司都用的 sklearn 吗?”
“好奇葩[冒汗]”
兔子啦:“他们用 R 语言,那个什么破服务器又不能连网,只有用 sklearn,也是奇葩。感觉 sklearn 的动不动就过拟合了。”
周启源:“sklearn 毕竟是别人写的,里面的算法,总是不合人意。如果能够自己写的话,就自己写吧。”
“用 sklearn 感觉我们就像搬砖头的,把一堆代码挪啊挪”
兔子啦:“而且参数设置也不太好设置”
“刚刚看了,估计 60%的准确率可能是因为 SVC 把所有的都预测成一类了[泪崩]”
“简直颠覆建模的三观”
周启源:[emmmm,挠屁股].JPG
“用欠采样或者过采样吧?”
兔子啦:“那个 imblearn 又下载不了,额滴神啊”
周启源:“自己写一个吧,我把 SMOTE 的原理发给你。”
(注:SMOTE 是过采样的一种)
兔子啦:“嗯,只能这样了[泪崩]”
旁白:过了大约两个小时......
兔子啦:“过采样管用,查全率大幅提升”
周启源:“哈哈,没错吧”
兔子啦:“smote 过采样,样本加权可以把 recall 弄得很高”
周启源:“很高就行了”
“case closed”
“congratulation!”
兔子啦:“OK,没有用交叉验证,可能有点不稳定,不过就这样了”
周启源:“对了,你觉得用回归的时候,效果不好,会不会是‘分布不均衡’啊?”
“你想啊,咱们把它当做分类问题处理后,会类别不均衡。而且就因为这个,才效果不好的”
“那么,在没有经过任何处理的时候,它是一个预测连续数值型因变量,也就是回归问题”
兔子啦:“嗯嗯,怎么了”
周启源:“所以我觉得,因变量呈现的分布不是均匀分布,这才导致了我们模型效果不好”
兔子啦:“听你这么说,有点道理”
周启源:“我给它取了一个名字,叫回归的‘分布不均衡问题’。我想,我们现在正在打开一个新的学科!如果真的查出来,‘分布不均衡问题’会影响模型的效果。那么,机器学习,甚至整个 AI 领域的知识,我想都会被这个发现,重新改写”
兔子啦:“emmmmm,有点意思。”
周启源:“你不打算将它还原为回归问题,再做一下吗?”
兔子啦:“哎,没时间了,项目要截止了,得过且过吧,而且甲方也说行了”
周启源:“好吧,我不难为你,你的数据集是从网上找的吗?方不方便把链接给我看看呢,我想研究一下,看看真的是不是‘分布不均衡问题’。说不定,我们将会成为新领域的看山鼻祖,写在教科书上”
兔子啦:“[呆滞]要是我把数据集给了你,明天就被请去喝茶了,吃皇粮了”
周启源:“啊,不是从网上找的么”
兔子啦:“公司项目啦,机密数据,连上网都没可能的”
“三令五申,天天耳边念,都听起茧子了”
“不是网上找的,网上找的就给你咯”
周启源:“哦,你之前说网上找的,我有点误会了”
兔子啦:“360度无死角全方位监控服务,想造个假都没可能”
周启源:“[出糗]好惨”
兔子啦:“好惨,回家还要被蹂躏”
周启源:“。。好辛苦”
兔子啦:“是啊,都上演白发魔女传了”
周启源:“搞 IT 的都不容易啊[哭]”
旁白:两人寒暄了之后,就各自分道扬镳了
周启源心想:哎,如果能够让我拿到数据,那么一个新的发现,就有可能诞生了。我不怪兔子啦,要怪就怪那些企业,那些公司,为什么把我们崇尚自由的 IT 人员,当成绵羊圈养?
“分布不均衡”,一想到一个新的理论,跟我失之交臂,我的心就像被针刺了一样。一个刚起步的学科,如果业内的人都故步自封,是很难进步的,很难!!
(长叹下)
落幕