机器学习小白初级入门

1.引言

先对机器学习有个总体的了解,机器学习类型:
1.监督学习:代表——分类和回归
2.无监督学习:代表——聚类
3.半监督学习:西瓜书p295图
4.强化学习:李宏毅强化学习

学习自bilibili菊安酱小姐姐机器学习实战录课,有些内容来自PDF课件。小姐姐讲的特别好,内容很丰富。记录一下一个月的学习内容,以便回顾。(●’◡’●)

2 经典算法

①k-近邻学习

定义(分类任务中):其工作机制非常简单:给定测试样本,基于某种距离度量,计算其与训练集样本的距离,取最近的k个训练样本,然后由这k个计算结果来投票决定属于哪个标签类。
重点提炼
*距离度量:欧式距离(二维空间中计算两点之间的距离公式,这里拓展到高维);汉明距离(计算两个字符串间的距离,如手写数字识别)
*k的选择:k的选择是一个重要的参数,当k的取值不同时,分类结果会有显著的不同;
*和其他的学习方法相比,k-近邻学习有一个明显的不同之处:似乎没有显式的训练过程!

#代码原创菊安酱
def k_classified(inX,dataset,k):
    result=[]
    dist=list((((dataset.iloc[:6,1:3]-inX)**2).sum(1))**0.5) #计算测试样本和所有训练样本间的距离
    dist_1=pd.DataFrame({'dist':dist,'labels':(dataset.iloc[:6,3])})#加上对应的标签列,此时有两列了
    dr=dist_1.sort_values(by='dist')[:k]#对计算出来的距离进行排序,切片取k个
    re=dr.loc[:,'labels'].value_counts()#取出两列中的标签列,将标签列作为索引,并对各种类别进行计数
    result.append(re.index[0])#取标签数量最多的标签值并保存到列表容器中
    return result

可以用来处理分类或者回归问题。

②决策树

定义:决策树是基于树的结构来进行决策的,通过问问题进行决策,每个判定问题都是对某个属性的测试。一般地,一颗决策树包含一个根节点、若干个内部节点和若干个叶节点。叶节点对应决策结果,内部节点对应于一个属性测试,根节点包含样本全集。
重点提炼
*如何选择最优划分属性:
(信息熵是用来度量样本集合纯度最常用的一种指标。信息增益越大,则意味着使用属性a来进行划分所获得的“纯度提升”越大)

算法划分准则
ID3决策树信息增益
C4.5决策树信息率
CART决策树基尼指数

基尼指数即从数据集中随机抽取两个样本,其类别标记不一样的概率。基尼指数越小,数据集的纯度越高。
*剪枝处理:决策树拟合数据的能力非常强,为了提高算法的泛化能力,需要进行剪枝处理来防止过拟合。
剪枝七个参数:

  • Criterion:entropy,gini
  • 两个随机性相关的参数:random_state,splitter
  • 四个剪枝参数:max_depth,min_sample_leafmax_feature,min_impurity_decrease
#自己编写决策树算法步骤比较繁琐,这里是自己理解的步骤,思路来自菊安酱
1.定义一个计算样本信息熵函数,返回信息熵
2.定义一个根据信息增益选择出最佳数据集切分的‘列’函数,返回数据集最佳切分的列的索引
3.定义一个按照给定列划分数据集函数,返回按照指定列索引和属性值切分后的数据集
4.定义一个创建决策树函数,采用字典嵌套的方式存储树的信息。这是一个递归的过程
5.定义一个对单个测试数据进行分类的函数,这也是一个递归的过程

③朴素贝叶斯

定义:朴素贝叶斯是一个不建模的算法,是统计学的一种概率分类方法。之所以称之为‘朴素’,是因为只做最原始、最简单的假设:每个特征之间都是独立的。
重点提炼
*贝叶斯公式:根据条件概率和全概率公式
*在sklearn中有三种朴素贝叶斯的分类算法:

算法类型简述
GaussianNB高斯分布(正态分布)的朴素贝叶斯,假设每个标签的数据都服从简单的正态分布
MultinomialNB多项式朴素贝叶斯常用于文本分类,特征表示的是次数,例如某个词语的出现次数
BernoulliNB伯努利模型中每个特征的取值是布尔型的,适用于文本分类

④逻辑回归

定义:即应用对数几率函数 logistic function,能一定程度上近似单位阶跃函数,擅长处理分类问题。对数几率函数是一种sigmoid函数。
重点提炼
*LR的损失函数:采用的是对数损失函数
*正则化:
L1正则化(Lasso)相当于为模型添加了这样一个先验条件:服从零均值拉普拉斯分布;
L2正则化(Ridge)相当于为模型添加了这样一个先验条件:服从零均值正态分布。
*求解方法:梯度下降法

种类简述
批量梯度下降法BGD使用所有样本来更新参数
随机梯度下降法SGD仅取一个样本来更新参数
小批量梯度下降法MBGD取若干样本来更新参数

捋一下这个算法过程:大体思路就是把逻辑回归处理成线性回归问题。首先定义一个假设函数,再得到损失函数,用梯度下降算法对损失函数求参,求到的参数再带入假设函数中得到预测值,再将这个预测值进行sigmoid函数处理,得到预测连续值,再用0.5进行判断得到最终的预测结果。

支持向量机

定义:基于训练集D在样本空间中找到一个划分超平面,将不同类别的样本分开。两个异类支持向量到超平面的距离和称之为间隔。具有“最大间隔”的超平面就是SVM要寻找的最优解。
重点提炼
求解一个服从不等式约束的最小化问题(满足KKT条件),想法就是使用拉格朗日方程,将约束条件放到目标函数中。从而一个有约束优化问题变成了一个无约束优化问题。对拉格朗日函数求解仍然困难,所以便有了拉格朗日对偶的诞生。对偶问题的求解分为两步,先求内侧的最小值,再求外侧的最大值。
对偶问题的求解有一个很高效的算法SMO(SMO即相当于逻辑回归中的梯度下降)。
核函数:用低维空间的内积来求解高维空间的内积。SVM可以应用核函数处理非线性问题。

类型简述
线性核函数直接计算两个输入特征向量的内积
多项式核函数多项式来作为特征映射函数
高斯核函数也称为径向基核函数RBF(常用)
Sigmoid核函数常用的核函数之一

3.Tips

  • one
#画图时显示中文
import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif']=['Simhei']
  • two
sklearn包作用
TfidfVectorizer适用于对文本信息进行特征值抽取
DecisionTreeClassifier决策树分类器
graphviz决策树的绘制(可视化)
train_test_split训练集和测试集的划分
LabelEncoder可以对类别进行编号
OrdinalEncoder可以对类别进行编号
KBinsDiscretizer可以将连续性变量划分为几类
OneHotEncoder另一处理文本标签的方式,几类加几列
SimpleImputer使用sklearn填充缺失值
cross_val_score交叉验证
  • three
    Levenshtein 包里面的hamming函数可以用来处理字符串间的距离。
  • four
    常用损失函数来衡量模型预测的好坏,即衡量真实值和预测值之间的差距。
    Michael_Shentu_损失函数
损失函数类型简述
0-1损失函数预测错误损失函数值为1;预测正确损失函数值为0 。非凸非连续
hinge损失函数max(0,1-z) ,hinge损失函数有一块平坦区域,保持了稀疏性(SVM)
平方损失函数预测值和实际值差的平方(回归任务常用)
绝对损失函数和上面类似,没有平方了
对数损失函数这种损失函数用到了极大似然估计的思想
指数损失函数Adaboost

欢迎指正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值