机器学习概括
机器学习步骤1.原始数据2.数据的基本处理3.特征工程原始数据-->特征
1.特征抽取
文本-->序列(特征值化)
对数值型的数据可以使用
(1)归一化:x-min/max-min
归一化的目的:使每个特征的权重相同,不会因为特征数值的数量级影响
缺点:容易受到异常值的影响(最大值和最小值之间的差距过于离谱),系统的鲁棒性差
(2)标准化:x-mean/标准差
将原始数据变化到均值为0,方差为1的范围内,少量异常值的影响不大
(3)补齐缺省值
可以采用直接删除,或者插补平均值(中值)
对于类别型的数据可以采用
one-hot:避免不同类别之间的相互联系
2.特征降维
(1)特征选择
对于冗余的特征可以采用filter(方差,阈值),embedded,wrapper进行选择
(2)主成分分析
使用PCA进行数据的简化
API:
fromsklearn.decompositionimportPCA
pca=PCA(n_components=0.9)
data=pca.fit_transform(原数据)
n_components:超参数一般取0.9-0.95
4.采用合适的算法去预测5.评估1.感知机首先感知机要解决什么问题?他的形式是什么样的感知机根据图像理解,无非就是根据输入数据划一条直线将数据进行分类
现在输入的是二维数据(身高,体重),所以只在二维平面上划一条直线,就可以将类别进行区分。如果输入再加上一个维度,那就在三维划一个平面进行区分不同类别
好,总结一下
感知机就是根据输入的n维数据,划一个(n-1)维的平面将数据的类别进行区分,当然他只能进行二分类,而且只能区分出线性可分的类别
现在明白了要解决的问题,再推断下他的形式是什么样的
先从最简单的二维平面进行入手,划一条直线嘛
再根据直线对数据进行二分类,那就直接将数据和直线比大小不就行了
不过这里有个问题,为了更加直观的分类我们对公式进行变形下
,再进一步转化
现在我们得到了我们想要的分界线,想要分类只需要对分界线比较就可以了,我们可以借助sign函数
感知机算法输入:训练数据集
其中,,
输出:
1.选择初值
2.输入数据
3.损失函数:
如果
-->
-->
2.K-近邻相似的样本特征值应该相似,需要进行数据归一化
就是计算各个特征值之间的具体嘛,那这个距离怎么求?
欧式距离:
K值:近邻的点数
K值取很小:容易受到异常点的影响
K值取很大:受K值波动
这个方法基本不用,缺点比较大
3.朴素贝叶斯适用于文本分类
p(类别|特征)=p(c|w),求出现某特征时为某类别的该概率
这不就是最大后验
转化为文字表达:
转化为根据文档中的特征求类别:
若是p(c|F1,F2,...,Fn)=0,怎么处理首先弄明白为什么会出现这种情况
p(c|F1,F2,...,Fn)=0意味着朴素贝叶斯中分子为0:
即p(F1,F2,...,Fn|c)或者p(c)=0,p(c)=0肯定不成立,类别的概率都是0了还算这个类别的概率干嘛所以只能p(F1,F2,...,Fn|c)=0,先复习下基础知识
朴素贝叶斯朴素假定特征与特征之间相互独立;概率论:P(F1,F2|c)=P(F1|c)P(F2|c)
所以p(F1,F2,...,Fn|c)=0又分为两种情况:
1.在类别c中确实没有F1,F2,...,Fn这些特征,就好像在英文文献中确实没有中文,F1,F2,...,Fn都代表中文特征
2.在类别c中确实没有F1特征,有F2,...,Fn这些特征。但是由于p(F1|c)=0所以p(F1,F2,...,Fn|c)=0,举个例子:在训练时中文文献中都没有英文特征词F1,但是测试集中有篇中文文献出现了一个英文特征词,但是由于p(F1|c)=0,所以p(F1,F2,...,Fn|c)=p(F1|c)*p(F2|c)*...*p(Fn|c)=0。所以就出现了因为有一个英文特征词的出现,他判定这篇文献属于中文文献的概率为0。
那这样模型的容错率也太低了。也就是说,当有一个特征在所求类别中没有出现过,模型给出的结果就是概率为0。
那肯定不能这么整啊,朴素贝叶斯这样就废了啊。那要怎么解决这个问题呢
既然没有,那就强迫他有,让他输出不为0,为一个极小数
利用拉普拉斯平滑解决这个问题:
利用代码调用:
sklearn.navie_bayes.MultinomialNB(alpha=1.0)
朴素贝叶斯的缺点:1.假设特征之间相互独立
2.依赖先验概率,要求p(c)的准确性
4.决策树相当于不断进行判断的二叉树
通过属性去构建节点
1.二元属性
2.多元属性
3.序数属性
从根节点到叶子节点选择属性顺序时的依据是什么呢
用熵或基尼系数进行度量
为啥选择熵或基尼系数
因为当纯度越高的时候,熵或基尼系数越小。在各个不同的属性平均分布时取值最大。
例:当二元属性是否有房的概率各占0.5,p(有)=0.5,P(无)=0.5
则Gini=1-(0.25+0.25)=0.5
当二元属性有房的概率占0.8,p(有)=0.8,P(无)=0.2
则Gini=1-(0.64+0.04)=0.32
若是得到得基尼系数(熵)很小,则是很好的区分属性
下图为Gini系数,熵的图像和Gini系数类似,只不过当x=0.5时,H(x)=1
为了构建决策树还要了解一下
条件熵:
信息增益(InformationGain):
理解一下,信息增益IG=熵前-熵后
信息增益率:
就是信息增益/之前的熵
决策树结束拟合条件1.纯度为1
2.达到最大depth
3.IG太小
4.每个节点分到的sample数目到达阈值
API明天再写,23.6.21-23:25
随机森林并行的多个决策树,最终的结果由众数决定,也就是说最后的结果由各个决策树去投票,看哪个票数多
随机森林建立多个决策树的过程:
有N个样本和M个特征
1.随机在N个样本中选择一个样本重复N次
2.随机在M个特征中选择m个特征(m