实战美年健康AI大赛之二_相关问题与思考
实战美年健康 AI
大赛之二 _ 相关问题与思考
#算法实战
1. 说明
上次把钉钉号写回复里了,最近就有不少师兄加我,问一些关于比赛的问题,五一后可能也没啥时间回复了,下面就把常见的问题统一总结一下,只是我个人理解,欢迎大家纠正指导。
2. 你用了哪些方法做到 0.286?
说出来可能有人不信,我只用了五折的
lightgbm,参数都没怎么调,去缺失值,去噪,特征选择,归一化,模型融合,目前为止都没做,所有时间都花在
NLP
上了,其中很多试尝还在进行中,还未加入模型,也不知最终能不能提分。
目前的方案中,一方面是把一些数值字符混合型数据变成数值型代入模型,另外还有在做
NLP
时发现的一些关键性的字段,提取出了其中是否含有某个关键字作为新的特征,总共涉及不到
10 个特征。
3. 怎么提分?
常被问到的一个问题是被卡在某一瓶颈了,怎么提分?我觉得大多情况是特征不足。如果以数值为主,要多看看自然语言处理,再找些特征,毕竟特征决定了上限,而优化模型只能是不断接近该上限。
4. 不做 NLP 最高多少分?
这要看如何区分数值特征和文本特征,我的数值特征有 2000
多 ...
实战天池精准医疗大赛——观看答辩总结
实战天池精准医疗大赛——观看答辩总结
#算法实战
1. 说明
今天是天池精准医疗大赛(糖尿病预测)的最终答辩,学习了一下前六名的经验分享.把自己没想到的列出来,如下.
2. 特征
多特征组合:
一般是现有特征加减乘除的组合,在特征多的情况下,先取强特征相互组合
.
数据分析:
常用分析方法:IV 值分析(information
value),方差,残差,单变量分析,PCA 等等.
特征的相关性与去冗余:特征和结果的相关性分析可能找不出一些非线性相关,但是特征之间的强相关,可以帮助去掉一些冗余.
小数据集中某些特征,可能引起过拟合.
缺失值填充:
Nuclear,MICE,最近邻填充.
对于不同缺失比例,可使用不同方法填充.
单指标特征概率相对分布图
衡量单变量在取值变化过程中,正负样本比例随取值变化的一个相对变化程度的总结(这个值与相关性差别很大).可以在去掉和不去掉缺失值的情况下,分别统计.
连续特征/离散特征使用不同的统计方法:QQPlot,四分位图.
将不同特征划分为不同的训练集和测试集.
这可能是一种人为的预分类.
3. 算法
因子分解机 FM
适合小 ...
实战美年健康AI大赛之一_自然语言处理
实战美年健康 AI
大赛之一 _ 自然语言处理
1. 说明
一直想找个自然语言处理(NLP)相关的比赛.起始看到"美年健康 AI
大赛"的时候,觉得和之前糖尿病比赛很相似,还是 GBDT
调参大赛.解包一看几百兆数据,觉得自己机器可能跑不动(后来确实加了一条内存),都没打开看数据就放弃了.
后来两个朋友都推荐做这个比赛,说是 NLP
的,打开数据一看,欸~还挺有意思的.数据量大的好处是稳定,我线上线下基本是同增同减(只提交过三次,目前为止是同增同减),就是看那病情诊断看得心惊肉跳的,腿都软了.
2. 比赛介绍
言归正传,介绍一下比赛内容,比赛提供了涉及 5 万多人的 800
多万条各项体验数据,有数据型的,也有字符型的.体验项目名称经过了脱敏处理,检查结果的文字内容未脱敏,目标是预测:收缩压、舒张压、甘油三酯、高密度脂蛋白胆固醇和低密度脂蛋白胆固醇这五项指标,预测具体的值,是一个回归问题.简单说就是分析哪些指标与高血压/高血脂相关.
我使用的是 lightgbm
模型,简单调参,对字符串只做了一些简单的处理,过滤出一些我认为重要的文字特征,当前最好成绩是
0.03002 ...
实战药物分子筛选之一_初探
实战药物分子筛选之一 _ 初探
#算法实战
##1. 说明
基于人工智能的药物分子筛选,是最近在 DC
大数据平台上看到的一个新比赛.这个题目对于我这种半科盲来说好难.花了一些时间才弄明白它是干嘛的.这是一家药品公词举办的比赛.我理解题目是这样的:给出三种数据:致病蛋白信息(病),小分子信息(药),蛋白和小分子间的亲和力(药和病能否结合),预测N种没见过的致病蛋白与已知的小分子之间的亲和力.简单地说就是知道一些病和药的特征以及它们之间的关系,预测一些新的病用什么药治.具体数据如下:
##2. 数据分析
蛋白质由氨基酸组成,氨基酸一共有 20
种,每一种用一个英文字母表示.蛋白质有四级结构,一级结构是组成蛋白质的氨基酸序列,二三四级还有螺旋折叠什么时,这里我们只考虑其一级结构,即某个蛋白质由哪些氨基酸组成的,它们的长度以及前后顺序是怎样的.在给出的数据(df_protein*.csv)中,氨基酸序列形如:FCIPTSSTIEQQNSTRVRQNTREHPSTANTVDRTNHQLENLEAETAPLP
它是一个由字母组成的序列.最长的一项长度为 7023,最短的长度为 26 ...
实战量化投资大赛之二_GBDT模型
实战量化投资大赛之二 _GBDT
模型
1. 说明
对股票预测这种典型的时序问题,使用梯度下降决策树,确实是有点生搬硬套.主要思路是想使用提供的特征值
f1-f87,看看哪些特征更加重要.
具体方法是把历史数据用计算趋势和移动平均线的方式添加到特征之中,此时记录的前后顺序就不再重要,用
122
天(半年)后的价格作为结果Y,随机将所有记录分成训练集和测试集,做回归模型.线上最高得分
47 左右.
2. 特征工程
用 GBDT
模型主要是特征工程和调参,一开始我只是加了一些趋势和与均线关系的特征,预测后取前
20,线上得分 34 左右.觉得这个模型几乎没法用.然后分析了取出的 top20
是怎样一些股票,发现其中多一半都包含停牌或者高送转.预测不成功的原因是:没做数据清洗,这里确实需要一些行业背景知识.
不只是 GBDT
模型,用统计模型也一样,这些特殊值都会成为干扰项.在去掉了高送转,次新股,停牌之后,同样的模型,RMSE
误差不到之前的 1/3,比之前靠谱多了.
具体工作如下:
(1) 合并数据
把数据合成一个大文件,用 pickle 格式保存,pickle ...
实战量化投资大赛之一_baseline
实战量化投资大赛之一
_baseline
#算法实战
1. 说明
昨天在群里看到了:凤凰金融量化投资大赛,详情见:http://www.dcjingsai.com/common/cmpt/%E5%87%A4%E5%87%B0%E9%87%91%E8%9E%8D%E9%87%8F%E5%8C%96%E6%8A%95%E8%B5%84%E5%A4%A7%E8%B5%9B_%E7%AB%9E%E8%B5%9B%E4%BF%A1%E6%81%AF.html
看了一下数据,大概是利用过去两年N支股票的数据,预测未来半年的走势,然后再从这N支股票里选出
20-50
支作为组合,看谁的组合半年后收益最大,以此排名.数据包含股票代码,收盘价,和八十多个脱敏后的特征.
2. 一些想法
我关注的一支股票,昨天跌停了,今天该买还是该卖?单看涨跌和趋势线是没法判断.涨跌和很多因素有关,比如跌停日的交易量,消息面,基本面,外盘,大盘涨跌,近期趋势.一般跌停次日的涨跌的概率等等,人基本是通过这些因素综合判断.
估计上述的很多成分被包含在比赛提供的 80
多个特征之中(毕竟是专业人士给出的数据).于是特 ...
时序预测之三_傅立叶和小波变换
时序预测之三 _
傅立叶和小波变换
1. 说明
用傅立叶变换预测时序数据,原理是把时域数据转换到频域,再转换回来.python
的 numpy 和 scipy 里面都有现成的转换工具 fft() 和
ifft(),但使用时会遇到一个问题:比如 25 天的数据转到频域再转回时域,还是
25
天,虽然拟合了数据,但没法直接预测未来,本篇介绍用它实现预测的方法.
2. 傅立叶变换
(1) 相关知识
之前写过关于傅立叶变换原理的文档,这次就不再重复了,具体请见:https://www.jianshu.com/p/9e786be6dccb
本篇只从程序的角度看如何使用它.经过 FFT
转换的数据和转换前长度一致,每个数据分为实部和虚部两部分,假设时序时数长度为
N(N最好是 2 的整数次幂,这样算起来更快),用 fft() 转换后:下标为 0 和
N /2 的两个复数的虚数部分为 0,下标为 i 和 N - i
的两个复数共辄,也就是其虚部数值相同、符号相反。再用 ifft()
从频域转回时域之后,出现了由误差引起的很小的虚部,用 np.real()
取其实部即可. 由于一半是另 ...
时序预测之二_ARIMA
时序预测之二 _ARIMA
1. 说明
ARMA 回归滑动平均模型 (Autoregressive Moving Average Model,简记
ARIMA),是研究时间序列的重要方法,由自回归模型(简称 AR
模型)与滑动平均模型(简称 MA
模型)为基础“混合”构成。常用于具有季节变动特征的销售量、市场规模的预测等。ARIMA
模型相对 ARMA 模型,仅多了差分操作。
2. 相关概念
(1) 自回归模型(AR)
自回归模型 autoregressive model,简称
AR.在时序分析中,描述时间序列{yt}自身某一时刻和前 p
个时刻之间相互关系的模型称自回归模型,其形式为:
其中Φ1, Φ2,…, Φp 是模型参数,εt
是白噪声序列,它反映了所有其它随机因素的干扰.其中 p 为模型阶次,即 yt
由前 p 个值决定.
(2) 滑动平均模型(MA)
滑动平均模型 moving average
model,也称移动平均模型,它将时间序列{yt}看成白噪声序列的线性组合,为什么误差能描述模型呢?假设某个值可通过之间前
N
个值的平均值预测,稍作变化,即实际值可 ...
时序预测之一_概述
时序预测之一 _ 概述
1. 说明
前一段参加了天池的“盐城汽车上牌量预测“比赛。第一次面对大规模的时序问题,从比赛的过程,到赛后各位大佬的算法分享,收获很多。也将解决该类问题的套路在此总结一下。
本篇是总述,其中提到的具体算法,如:加窗,ARIMA,傅里叶/小波变换,LSTM
等等将在本系列的后续文章中一一详述。
2. 问题描述
上牌量预测是一个典型的时序问题,且数据简单清晰,以复赛A榜数据为例,它提供了前
3 年的 10
种品牌汽车每天的上牌量,预测未来半年中每天的各品牌的上牌量。
提供的信息只有之前的上牌量,日期数据和星期几,是一个单变量的预测问题(暂不计各品牌间的相互影响),比较困难的是:它不是预测一天,而是预测几百天,有些时序模型无法使用。
3. 步骤
对比一下自己和大家的解决方案,基本都可以拆解成以下步骤
(1) 还原日期
比赛数据对日期进行了脱敏处理,没给具体年月日,但提供了周几的信息,其中有些节假日上牌量为
0
的也没有给出对应记录。第一步大家都补全了日期,加入了真实日期,和节假日信息。
这里介绍两个相关阴历的时间转换库:
chinese_c ...
PythonNotebook介绍
Python Notebook (Jupyter
Notebook) 介绍
1. 介绍
前一段跑别人的 python 代码,扩展名是 ipynb,不能直接用 python
命令执行,于是只好安装了 Jupyter notebook
软件,然后发现它是一个非常好用的程序写作工具。
对我来说,它最大的好处就是文档和程序可以写在一起了。在写程序的时候往往会有一些思路,解释,分析,运行结果等等,需要记下来,比较长的就不太适合在程序里面注释,记在其它地方又容易忘掉。Notebook
完美地解决了这个问题。当然它还有很多其它优点,下面简单介绍一下。
2. Jupyter Notebook
IPYNB 是 ipython notebook 的缩写,它开始只支持
python,后来又支持了其它 40 多种编辑语言,就改名叫 Jupyter
notebook。
Notebook 存储 python 程序的文件是 ipynb,ipynb 一种文本文件,可以用
vi 直接打开,文件中除了程序和说明还有一些结构信息,不能直接用 python
执行,但在 notebook 界面中可以被导出成.py ...