机器学习面试

我本科专业是学计算机,研究生学习了经济学。同样一直从事与了机器学习的算法,大数据开发。在一家甘肃大型国企从事算法以及大数据开发工作,熟悉Hadoop生态系统的各个组件。掌握Hbase/Hive/Spark等主流开发平台。掌握的工程能力有spark、python开发。算法能力是熟练掌握深度学习、机器学习的原理与算法。

1、  项目经验有疾病费用预测及关联规则分析。

需求:让政府监管各个公立医院的医疗费用,并采取具体的措施。

解决方案:利用python对医疗费用进行GM(1,1)预测。

选择原因:因为数据量小、具有单调性、预测的时间较短。

原理:

灰色预测是含有对不确定因素的系统进行预测的方法,是对原始数据进行生成处理来寻找系统变动的规律,生成较强的规律性的数据序列,建立相应的微分方程模型,从而预测事物未来发展趋势。

GM(1,1) 用观察到的反映预测对象特征的时间序列构造灰色预测模型,预测未来某一刻的特征量。

原始数据列中的数据,按照某种要求做数据处理称为生成。目的在于从杂乱无章的现象中发现内在规律。

常用的方法:累加生成、累减生成、均值生成。

精确度:90%。

2、关联规则分析:

对每个患者进行关联规则分析,对患者的疾病有一个合理的预估。

关联规则的原理:

支持度:规则前项LHS和规则后项RHS所包括的商品都同时出现的概率,LHS和RHS商品的交易次数/总交易次数。

置信度:在所有的购买了左边商品的交易中,同时又购买了右边商品的交易机率,包含规则两边商品的交易次数/包括规则左边商品的交易次数。

提升度(有这个规则和没有这个规则是否概率会提升,规则是否有价值):无任何约束的情况下买后项的交易次数/置信度。提升度必须大于1才有意义。

1.项集(itemset):

最基本的模式是项集,它是指若干个项的集合。如上图,{Beer,Nuts,Diaper}就是一个项集。


2.K-项集(K-itemset):

包含K个项的项集

3.数据集:

典型的数据集是事物的集合,每一个事物是一个非空项集,并拥有一个标识TID。如上图,上图就是一个数据集。

4.绝对支持度(Absolute Support):

数据集中包含项集X的事物数。如上图,含Beer的TID为10,20,30,因此绝对支持度就是3。

5.相对支持度(Relative Support):

项集X的绝对支持度与数据集事物总数的比值。如上图,Beer的绝对支持度为3,相对支持度为60%。

6.频繁项集(Frequent Itemset):

项集X的支持度超过最小支持度阀值(min_sup)时,称X为频繁项集。min_sup大部分情况下由需求而定,如上图,如果min_sup=50%,则Beer为频繁项集,如果min_sup=70%,则Beer不是频繁项集。

3、ARIMA模型。

二、患者画像分析项目

需求:是一种基于医疗大数据的患者的画像方法。建立专业的医疗知识库,在此基础上运用算法模型构建患者标签,解决了用户画像的精确度不够,首先标签体系的提取和计算是建立在医学知识库的基础上,有很强的专业性,因此使得患者的画像体系精确度很高;其次,考虑了标签特征的风险因子,增衰银子和关联因子,符合疾病的发展规律。再次,让患者参与到患者的画像的系统中,解决了标签的计算偏差;

解决方案:

1、获取患者的个人信息、电子健康档案,电子病历,体检报告、健康检测,对其进行预处理;

2、建立临床知识库,利用python爬虫 爬去网站相关的疾病信息,包括伴生病、病因、医学术语,发病机制、临床表现、药物不良反映。还有药品信息:包括药物禁忌和注意事项。

3、构建患者基本信息标签:通过人口信息、体检报告、电子健康档案、提取患者的过敏史、职业、血型、职业、计划免疫、妇幼保健。

4、构建患者疾病标签:通过电子病历、电子健康档案、检查抽球的信息结合临床知识库建立疾病分析模型,获得患者的慢性病、伴生病、疾病史等的标签

5、疾病的预测:预测心脏病发生的概率。(神经网络预测)

6、通过LR 计算患者标签的权重、疾病风险因子。

7、患者根据互联网得出的画像进行确认,进行纠错与调整,提高患者的精确度。

8、数据预处理是。进行清洗,转换,过滤并对数据进行结构化、标准化、向量化、最后导入到MongDB数据存储集群。

然后把MongDB集群中的数据导入spark进行分析,找出疾病种类和发病率、疾病种类和临床表现,疾病的导致的并发症,疾病和治疗结果关系、疾病和使用药物的规律等。

神经网络算法原理:

1、随机参数初始化(在0的附近取得随机值)

2、在随机参数初始化后,利用前向传播得到预测值,进而得到损失函数,根据损失函数对参数的求导,使用梯度下降法。对参数进行调整。

3、在计算参数更新的公式中,需要用到反向传播。

4、返回最终的模型。

如何防止过拟合

1、及时停止

2、扩大训练数据

3、加入正则约束。

4、drop out

激活函数

ReLU 的优点:

  • Krizhevsky et al. 发现使用 ReLU 得到的SGD的收敛速度会比 sigmoid/tanh 快很多(看右图)。有人说这是因为它是linear,而且 non-saturating
  • 相比于 sigmoid/tanh,ReLU 只需要一个阈值就可以得到激活值,而不用去算一大堆复杂的运算。

ReLU 的缺点: 当然 ReLU 也有缺点,就是训练的时候很”脆弱”,很容易就”die”了. 什么意思呢?

一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了。

政务网投诉事件:

兰州市民网大量的投诉事件:因为数量庞大

卷积神经网络CNN的结构一般包含这几个层:

  • 输入层:用于数据的输入
  • 卷积层:使用卷积核进行特征提取和特征映射
  • 激励层:由于卷积也是一种线性运算,因此需要增加非线性映射
  • 池化层:进行下采样,对特征图稀疏处理,减少数据运算量对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。
  • 全连接层:通常在CNN的尾部进行重新拟合,减少特征信息的损失
  • 输出层:用于输出结果
本文主要使用一维卷积核的CNN进行文本分类(二维卷积主要用于图像处理)
步骤 1:测试文本的预处理,分词->去去除停用词->统计选择top 5000的词做为特征词
步骤 2:为每个特征词生成ID
步骤 3:将文本转化成ID序列,并将左侧补齐
步骤 4:训练集shuffle
步骤 5:Embedding Layer 将词转化为词向量
步骤 6:添加Conv1D卷积层
步骤 7:添加池化层
步骤 7:添加全连接层,loss function = binary_crossentropy

      步骤 8:输出层使用softmax


因子分析的原理:

  采集大量多变量的数据能为我们的研究分析提供更为丰富的信息和增加分析的精确度。然而,这种方法不仅需要巨大的工作量,并且可能会因为变量之间存在相关性而增加了我们研究问题的复杂性。因子分析法是从研究变量内部相关的依赖关系出发,把一些具有错综复杂关系的变量归结为少数几个综合因子的一种多变量统计分析方法。这样我们就可以对原始的数据进行分类归并,将相关比较密切的变量分别归类,归出多个综合指标,这些综合指标互不相关,即它们所综合的信息互相不重叠。这些综合指标就称为因子或公共因子。

然后综合因子得分=a1*对应权重+a2*对应权重+a3*对应权重之后就根据综合因子得分进行大小排名  就这样出来了

载荷矩阵:因子载荷 aij 的统计意义就是第i个变量与第 j 个公共因子的相关系数即表示 Xi 依赖 Fj 的份量(比重)。统计学术语称作权,心理学家将它叫做载荷,即表示第 i 个变量在第 j 个公共因子上的负荷,它反映了第 i 个变量在第 j 个公共因子上的相对重要性。

决策树的原理:



1.ID3算法存在的缺点

(1)ID3算法在选择根节点和各内部节点中的分支属性时,采用信息增益作为评价标准。信息增益的缺点是倾向于选择取值较多的属性,在有些情况下这类属性可能不会提供太多有价值的信息。

(2)ID3算法只能对描述属性为离散型属性的数据集构造决策树。


2. C4.5算法做出的改进

(1) 用信息增益率来选择属性

(2) 可以处理连续数值型属性

3.  C4.5算法的优缺点


优点:产生的分类规则易于理解,准确率较高。

缺点:在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。此外,C4.5只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

4、C4.5算法原理:

1. 计算类别信息熵

2. 计算每个属性的信息熵

3. 计算信息增益

4.计算属性分裂信息度量

5. 计算信息增益率

具体原理参见:http://blog.csdn.net/zjsghww/article/details/51638126
























猜你喜欢

转载自blog.csdn.net/weixin_40446764/article/details/79430752