在我的windows电脑上装了Ubuntu 20.04子系统,但问题是怎么都无法成功安装Mysql(无论线上安装还是离线安装)。目前这个比较难以解决。但我个人感觉直接安装在windows上问题也不大,后续可以练习一下基于命令行的Mysql增删改查。嗯不知道是不是子系统的问题,Mysql一直无法安装,我只好安装了windows版本在dos命令行上敲代码,麻了。
Ubuntu子系统也可以进行相关的Shell命令的练习,这个方案比在windows上安装虚拟机或物理机要方便多了。它可以直接操作windows系统的文件而不需要开关机。这个特点对初学者是非常友好的。
另外,过去的几个礼拜我熟悉了一下golang的基本语法。个人感觉golang作为后端开发的热门语言还是有相当好的发现前景的。它的语法简洁性和Python相当。推荐大家都去学一下。基本语法熟悉之后可以去写一些具体的项目。
最近半导体、新能源汽车等行业杀疯了。总体来说,各个行业都有不错的涨幅。但最近互联网行业比较萎靡,因此我入手了一些互联网板块的基金。不过总体来看,持仓最好做一个各个行业间的“负载均衡”比较好。
最近大部分时间都在学习新的编程语言和计算机知识。在数据分析方面反而做的比较少(Mysql除外)。不过我一周仍然会抽出一点点时间在Kaggle实践一下一直在做的点击率预估项目。之前一直做的是Avazu项目,这个数据对新手来说还是非常友好的。然后我试图将Avazu的一些方案搬运到Criteo数据上来,但是遇到了一些困难。最直接的表现就是local cv(logloss)分数与public分数存在很大的gap,甚至最终的成绩还不如随机乱猜. 一开始我以为是我采用的TargetEncoder方案有什么bug,比如在encoding测试集的时候因为没有标签,所以无法成功。但事实上不存在这个问题,TargetEncoder能够很好地处理测试数据。
那么问题出在哪里呢?后来使用简单的代码做了EDA发现,一些字段在测试集中出现了训练集没有出现的枚举值。而这个问题对于id类类别变量是致命的(连续型变量问题不大)。比方说字段A,在训练集中有a, b, c三个取值,在测试集中却有a, b, c, d四个取值。那么在训练出来的模型,对具有d这个取值这一行数据是无法预测的。所以造成了线上分数奇差的情况。后面我使用相同的代码,看了一下Avazu数据,果然不存在这个问题,所以相同的状况没有在Avazu数据中出现。
不论对于任何模型,类别型特征的处理都是十分令人头疼的。这里需要手动做一些特征工程。使得一些长尾的取值能够统一。比方说CountEncoder这种方法,将类别型特征的频率值转化为连续特征,也能取得不错的效果。但是效果更好的一定是TargetEncoder这种结合标签进行encoding的方法。这里可以对各种Encoder进行无脑尝试。同时要在保证准确性的情况下处理训练集和测试集分布不一致的问题。
这种项目我目前就慢慢做,感觉还是大量的方法实验,没啥技术含量。至于点击率预估用的fm/libffm模型还没有深入了解过。更高深的深度学习的东西我不知道以后有没有机会搞了。总之最近还是以学习编程语言为主,代码我尽量不发到公众号,很多直接粘贴到技术博客上了。
后面有空或许谈一谈数据分析就业前景方面的内容。不过这块网络上的意见似乎特别不统一。而我本人的片面言论也不足以提出特别有价值的观点,麻了。算辽算辽。
往期文章