机器学习补完计划

发现之前的帖子太长了,拆了整理一下,理一理以前的笔记,其实代码实现和数学推导更加有助于理解
PS:任天堂特邀嘉宾来举例子

波克基斯、玛狃拉,比卡超


四个主要任务

分类(classification):将实例数据划分到合适的类别中。应用实例:判断辣鸡邮件(二分类 ),手写数字的自动识别(多分类)
回归(regression):主要用于预测数值型数据。应用实例:股票价格波动的预测,房屋价格的预测等。
聚类:在无监督学习中,将数据集分成由类似的对象组成多个类的过程称为聚类。
密度估计:在无监督学习中,通过样本分布的紧密程度,来估计与分组的相似性。

一些衍生的算法

强化学习
这个算法可以训练程序做出某一决定。程序在某一情况下尝试所有的可能行动,记录不同行动的结果并试着找出最好的一次尝试来做决定。 属于这一类算法的有马尔可夫决策过程。


1.k-近邻(kNN, k-NearestNeighbor)分类与回归

主要思想: k 近邻算法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k 近邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻算法不具有显式的学习过程。

算法实现: k 近邻算法实际上利用训练数据集对特征向量空间进行划分,并作为其分类的“模型”。 k值的选择、距离度量以及分类决策规则是k近邻算法的三个基本要素。举个例子,要把口袋妖怪分类,可爱型和凶残型的。那么据此分类的一些已知的特征有有尖爪的数量,暖色调的颜色的数量。(1)求得未知妖怪的这些特征和已知类型妖怪的距离,(2)排序,(3)假定K=3,选取这K个中最多的分类类别,就是选出距离最近的三个妖怪,(4)假如都是可爱型的,那么这个妖怪就是可爱型的。以上就是一个伪代码的实现过程。

一些实现时候的注意:

  • 距离度量 通常为 欧式距离(Euclidean distance),还可以是 Minkowski 距离 或者 曼哈顿距离。
  • 算法(sklearn 上有三种):Brute Force 风暴计算/线性扫描;KD Tree 使用二叉树根据数据维度来平分参数空间;Ball Tree 使用一系列的超球体来平分训练数据集。树结构的算法都有建树和查询两个过程,Brute Force 没有建树的过程。
  • 缺点: 时间和空间复杂度高(相对的就是准确率高)

2.决策树(Decision Tree)分类与回归

主要思想: 决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。决策树学习通常包括 3 个步骤:特征选择、决策树的生成和决策树的修剪。

补充信息论(information theory)中的熵(香农熵): 是一种信息的度量方式,表示信息的混乱程度,也就是说:信息越有序,信息熵越低。例如:火柴有序放在火柴盒里,熵值很低,相反,熵值很高。

伪代码:
收集数据:可以使用任何方法。
准备数据:树构造算法 (这里使用的是ID3算法,只适用于标称型数据,这就是为什么数值型数据必须离散化。 还有其他的树构造算法,比如CART)
分析数据:可以使用任何方法,构造树完成之后,我们应该检查图形是否符合预期。
训练算法:构造树的数据结构。
测试算法:使用训练好的树计算错误率。
使用算法:此步骤可以适用于任何监督学习任务,而使用决策树可以更好地理解数据的内在含义。

3.朴素贝叶(Naive Bayesian Model)分类

主要思想: 在每个特征同等,且相互独立这两重要的条件下,选择概率高的那一类。


4.逻辑回归(Logistic regression)其实是分类的。

回归的概念: 假设现在有一些数据点,我们用一条直线对这些点进行拟合(这条直线称为最佳拟合直线),这个拟合的过程就叫做回归。
主要思想是: 根据现有数据对分类边界线(Decision Boundary)建立回归公式,以此进行分类。在实现上主要是依Sigmoid函数引入非线性因素来实现拟合的过程,但是不是避免的,就有可能会陷入局部最优的尴尬境地,错失最优解。

解疑:(来自学习资料)
梯度上升法和梯度下降法:其实这个两个方法在此情况下本质上是相同的。关键在于代价函数(cost function)或者叫目标函数(objective function)。如果目标函数是损失函数,那就是最小化损失函数来求函数的最小值,就用梯度下降。 如果目标函数是似然函数(Likelihood function),就是要最大化似然函数来求函数的最大值,那就用梯度上升。在逻辑回归中, 损失函数和似然函数无非就是互为正负关系。

伪代码:
每个回归系数初始化为 1
重复 R 次:计算整个数据集的梯度使用 步长 x 梯度 更新回归系数的向量
返回回归系数

Q&A:

logistic回归为什么要用sigmoid函数:推荐回答1 这个问题好比为什么圆可以用标准方程来表示一样而已,LR就是sigmoid函数的一个应用而已。LR用来处理预测结果为0-1的二值分类问题,这里假设了二值满足了伯努利分布(即零一分布),而伯努利分布是满足指数族分布的。

线性回归适用于因变量(随自变量而变)是连续的模型,即特征和结果满足线性,但是实际有的因变量是离散型机率分布。
随机变量X服从逻辑斯蒂分布,即X的累积分布函数为上文提到过的logistic function。对分布函数求导得到了概率密度函数。
如果对分布函数求导得到了概率密度函数,做累加就会得到sigmoid function。而且又对一个二分类事件发生的几率odds的对数有线性的关系,输出Y=1的对数几率是由输入x的线性函数表示的模型,所以适合用来做线性的描述。
(这里解释的是为什么可以做成概率模型)线性回归是连续型模型,用于分类的问题时受噪声影响比较大,logistic回归是非线性模型(上文),本质上是线性回归模型,但logistic回归巧妙之处在于其将结果值经一层函数映射在0-1上,即在特征到结果的映射中加入了一层函数映射(对数损失函数),也就是本文的sigmoid function。
推荐回答2这里的角度2,从贝叶斯概率模型来看,是可以用sigmoid function来逼近后验概率P=(y=1|X)的。


5.支持向量机(Support Vector Machines, SVM) 监督学习

主要思想: 支持向量(Support Vector)就是离分隔超平面最近的那些点,算法的核心就是找这个超平面。

解疑:
数据可以通过画一条直线就可以将它们完全分开,这组数据叫线性可分(linearly separable)数据,而这条分隔直线称为分隔超平面(separating hyperplane)
如果数据集上升到1024维呢?那么需要1023维来分隔数据集,也就说需要N-1维的对象来分隔,这个对象叫做超平面(hyperlane),也就是分类的决策边界

常用解法:(这个还是单独写个帖子八)

  • 拉格朗日乘子法
  • SMO 高效优化算法

6.集成学习 ensemble method

主要思想: 没错就是字面意思,第一步:(bagging: 自举汇聚法 bootstrap aggregating): 是基于数据随机重抽样分类器构造的方法,第二步:(boosting): 是基于所有分类器的加权求和的方法。

解疑: bagging 和 boosting 区别是什么?

  • bagging 是一种与 boosting 很类似的技术, 所使用的多个分类器的类型(数据量和特征量)都是一致的。
  • bagging 是由不同的分类器(1.数据随机化 2.特征随机化)经过训练,综合得出的出现最多分类结果;boosting
    是通过调整已有分类器错分的那些数据来获得新的分类器,得出目前最优的结果。
  • bagging 中的分类器权重是相等的;而 boosting
    中的分类器加权求和,所以权重并不相等,每个权重代表的是其对应分类器在上一轮迭代中的成功度。

随机森林:利用多棵树对样本进行训练并预测的一种分类器。决策树多了就变森林。。。关键的是, 在处理数据的时候,数据的随机性化,待选特征的随机化,这样就可以增强鲁棒性,同时也提升分类性能。

AdaBoost (adaptive boosting: 自适应 boosting) :使用弱分类器和多个实例来构建一个强分类器,最后再加权得出结果。


7.回归(Regression)

主要思想:之前提到的分类的目标变量是标称型数据,而回归则是对连续型的数据做出处理,回归的目的是预测数值型数据的目标值。
回归系数(regression weights):求这些回归系数的过程就是回归。一旦有了这些回归系数,再给定输入,做预测就非常容易了。具体的做法是用回归系数乘以输入值,再将结果全部加在一起,就得到了预测值
待续。。。


8. K-Means(K-均值)聚类算法

主要思想: 将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好。聚类与分类算法的最大区别在于, 分类的目标类别已知, 而聚类的目标类别是未知的(K是未知的)。


9.树回归 CART(Classification And Regression Trees, 分类回归树)

主要思想:


学习资料出处:AiLearning

【机器学习】补完计划相关推荐

  1. [TaskList] 省选前板子补完计划

    省选前本子补完计划 [ ] 带权并查集 [ ] 树上莫队 - UOJ58 [WC2013]糖果公园 loj2485「CEOI2017」Chase 转载于:https://www.cnblogs.com ...

  2. macos模拟器_苹果芯补完计划,iOS终将回归mac OS?

    在过去几年时间里,国内外有越来越多小道消息都在传苹果将为新款Mac改用定制设计的ARM处理器:<彭博社>曾报道,苹果可能于今年开始在 Mac 电脑上改用内部代号为Kalamata的自研处理 ...

  3. Hrbust 2222 应援团补完计划【并查集+思维】好题~

    应援团补完计划 Time Limit: 3000 MS Memory Limit: 32768 K Total Submit: 9(5 users) Total Accepted: 3(3 users ...

  4. 紫书已经基本学完现在开启紫书题目补完计划!!!

    最迟2个月...把紫书所有的题目都补完从9月28到11月28号.把紫书的题目在本博客补完. 转载于:https://www.cnblogs.com/baccano-acmer/p/9716090.ht ...

  5. 算法补完计划(五) 二分图匹配

    二分图 如果一张图能被分为两部分,两部分之间存在边相连,而单个部分内的结点无边相连,那这张图叫做二分图 判断二分图 我们给图进行染色,从一个点开始染成红色,相邻点染蓝色,最后能全部染完,并且任意相邻点 ...

  6. NLP 开源形近字算法补完计划(完结篇)

    前言 所有的故事都有开始,也终将结束. 本文将作为 NLP 汉字相似度的完结篇,为该系列画上一个句号. 起-NLP 中文形近字相似度计算思路 承-中文形近字相似度算法实现,为汉字 NLP 尽一点绵薄之 ...

  7. [笔试补完计划]澜起科技2022数字验证笔试

    澜起科技2022数字验证笔试 时间2021.8.11 简答题(共11题) 1.[简答题]Please provide Linux shell command(s)to find all files w ...

  8. dex字符串解密_Androguard补完计划——锁定字符串解密函数

    一.理论基础(我们先讲道理) 上回说到我们找到了dex中的加密字符串 提取加密字符串. 观众老爷们问:那么找到这些加密字符串有什么作用呢?该看不懂的还是看不懂啊... 那么今天我就来告诉大家,找到的这 ...

  9. 从“汽转球”、“差分机”到“机巧伊武”——蒸汽朋克补完计划

    多数人对瓦特改良蒸汽机的事迹烂熟于心,却鲜有人知,其实早在将近2000年前,蒸汽机就曾以另一种面貌问世. 蒸汽机简史--从希罗的零号机到瓦特的三号机 在距今约2000年前的公元一世纪,古罗马时代的希腊 ...

最新文章

  1. Java Socket传输数据的文件系统介绍
  2. 用CSS写出一个下拉菜单小箭头
  3. scala Akka并发编程介绍
  4. 怎么将arcgis新建工具条如何保存_ArcGIS中寻找最短路径的方法
  5. 豆瓣9分,颠覆世界观的好书,每读一章就感叹一次:原来如此!(免费领)
  6. 具有关联映射的Hibernate Composite ID
  7. 关于Application.Lock和Lock(obj)
  8. Luogu4755 Beautiful Pair 最值分治、主席树
  9. 华为软件开发云发布管理测评报告
  10. 计算机失误,计算机做题的易出现的失误
  11. 白板推导系列Pytorch-PCA降维
  12. 大数据高冷?10个有趣的大数据经典案例
  13. 五子棋项目结束总结_五子棋比赛活动总结
  14. 用talib实现基于emv的简易量化投资策略
  15. 3D建模教程讲解!PBR场景制作破损的图书馆
  16. Java拆分为姓和名
  17. lucene ---- 黑马教程
  18. 计算机进入桌面黑屏怎么办,老司机教你电脑进入系统后黑屏怎么办
  19. java计算机毕业设计高考报考指南网站源码+mysql数据库+系统+lw文档+部署
  20. 磁感应强度B,磁通量φ,磁场强度H,磁导率,磁链讲透了

热门文章

  1. 阿里面试官Redis把我问到哑口无言…
  2. 上海电信大数据平台:实现客户的私人订制
  3. qt报错:In included file: expected member name or ‘;‘ after declaration specifiers
  4. MicroByte蓝牙手柄初探
  5. 微信朋友圈信息流可能采用算法排序吗?
  6. Unity 灯光系统详解
  7. EasyExcel生成多个exel文件并zip压缩
  8. 骁龙AR2平台解析:分布式架构开启轻量化AR眼镜新时代
  9. python数据采集仪_数据采集卡支持python么深入理解Python生成器(Generator)
  10. 为virtools写的插件进行一下总结