![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
机器学习
文章平均质量分 83
深海鱼肝油ya
在读盐焗生,大连第一深情,吉他爱好者。
展开
-
向毕业妥协系列之机器学习笔记:无监督学习-推荐系统之协同过滤
左侧是电影名,上侧是用户名,然后右下侧是用户给电影的评分,最右侧是每个电影的特征(是的,特征也有评分,比如romance=0.1代表有一点小浪漫,romance=0.99代表非常浪漫,等于0就是和浪漫不沾边,即浪漫的程度)这里假设给定参数w和b,和之前的线性回归恰恰相反,咱们之前是给定x,需要建立模型来推导w和,但是咱们是假设有了w和b,建立模型来推x,也就是如下图所示,x_1和x_2都是未知的。a few代表一些,表肯定。原创 2022-11-17 17:52:21 · 475 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:无监督学习-异常检测
另外,对于很多技术公司可能会遇到的一些问题,通常来说,正样本的数量很少,甚至有时候是0,也就是说,出现了太多没见过的不同的异常类型,那么对于这些问题,通常应该使用的算法就是异常检测算法。下图的例子是飞机发动机的制造,有很多特征,我们为了方便讲解取其中的两个特征:发动机产生的热量和震动强度,然后数据集是m个(发动机,每个发动机有两个特征),我们这个异常检测的问题就是测试新的数据和原来的数据是否相似,可以看到下图的坐标轴图像的示例 ,有一个合格的示例,也有一个异常的示例。的值来告诉我们数据是否真的是异常的。原创 2022-11-16 17:31:25 · 927 阅读 · 2 评论 -
向毕业妥协系列之机器学习笔记:无监督学习-聚类
将开始介绍聚类算法。这将是一个激动人心的时刻,因为这是我们学习的第一个非监督学习算法。我们将要让计算机学习无标签数据,而不是此前的标签数据。那么,什么是非监督学习呢?在课程的一开始,我曾简单的介绍过非监督学习,然而,我们还是有必要将其与监督学习做一下比较。在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数。原创 2022-11-15 22:17:10 · 428 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:决策树(三)
使用单个决策树的缺点:单个的决策树对于数据的改变非常敏感,比如咱们之前的例子中一直把耳朵形状选择为根节点的特征,但是你可能改变某个猫的某些特征,这样虽然只是改变了十只猫中的一只,但是也会影响决策过程,根节点选择的特征就会改变,这就是一棵新的决策树了。和之前不一样的地方就是当每一轮生成新的训练集时,不是有放回随机选取10个了,即每个训练示例不是等概率选取了,比如在本轮前面的决策树预测时把训练示例A分类错了,那么本轮生成新的训练示例时选取标签A的概率更大一些。关于k的取值,一般有n个特征时,k是取根号下n。原创 2022-11-14 14:29:37 · 488 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:决策树(二)
其实就是取阈值,比如我们先取第一个阈值为8(一般是先取所有这个连续特征值的中位数),左上角的函数图像横轴是体重,纵轴是代表是不是猫(即0或1),然后显然图中是猫的点都在上侧,不是猫的点都在下侧,咱们先取了8,看到图中的蓝线,蓝线左侧有两个点(都是猫),蓝线右侧有8个点(3猫5狗),然后咱们按照上篇文章讲的计算熵的方式计算这个阈值分割之后的信息增益(初试状态还是10个动物,5猫5狗)。现在的例子如下图,还是最初的那三个特征,这些是输入数据,而最后一列是体重,即我们要根据前面的三个特征来预测这个动物的体重。原创 2022-11-14 09:59:34 · 352 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:决策树(一)
5/10*H(0.8)+5/10*H(0.8),然后我们要知道用这个特征来分类让熵减少了多少,就要知道根结点最初状态的熵是多少,初始状态是十个动物(5猫5狗),所以p1=5/10=0.5,熵是H(0.5)=1然年后用最初始状态的熵减去分类一次之后的加权平均熵得到信息增益(即熵减少了多少),然后另外两个特征也是如法炮制,可以得到三个特征如果被选择进行分类那么各自会得到的信息增益是0.28,0.03,0.12,咱们要选信息增益最大的(即熵减少最多的),即耳朵形状特征。这也是为什么两只猫时比三只猫时的熵要小。原创 2022-11-13 16:23:40 · 925 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:构建ML系统(四)
这时,误差的大小是不能视为评判算法效果的依据的。精确率和召回率两者是此起彼伏的关系,因为如果精确率高,即预测时的阈值设置得高,假如阈值设置为0.9,大于0.9时才认为这个病人患病,那么检测出来这个病人真正患病的要求就很高,意味着就会有更多的真正的患病的人被检测不出来(预测概率小于0.9),又因为很多真正患病的人没被检测出来,所以true positive就会变小,所以召回率就会小,所以精确率和召回率就是这个大,那个就小的关系。例,在所有我们预测有恶性肿瘤的病人中,实际上有恶性肿瘤的病人的百分比,越高越好。原创 2022-11-13 10:57:38 · 457 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:构建ML系统(三)
然后咱们现在要构建手写数字识别的模型,看到上图下面那个模型,也是五层的神经网络,前四层咱们直接把上面的那个模型已经训练好的前四层的参数直接拿过来用,然后现在是识别0~9,所以输出层有10个神经元,现在咱们只需要训练下面的这个模型的输出层的参数即可,前四层就不用训练了(因为直接借用了上面模型的前四层参数)。如上图,结合英文看,右侧是一封电子邮件,咱们从英语字典里把最常用的10000个单词取出来,然后输入数据就是一个有10000个特征的向量,遍历邮件,出现了哪个单词,单词在x中的对应位置就置为1。原创 2022-11-12 21:32:24 · 406 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:构建ML系统(二)
正则化。原创 2022-11-12 15:56:54 · 400 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:构建ML系统(一)
下面的例子是模型的选择,对于一个问题,这个问题的f可能有多种不同的选择,下面列出了10种,分别对应d=1~10,分别是一阶到10阶的多项式,这些放到训练集当中都能得到对应的参数,然后利用这些参数去进行测试集上的测试,然后比如发现当d为5的时候(即五阶多项式)Jtest最小,这就能说明我们这个问题应当选择d为5对应的式子作为模型公式吗?下图和之前学过的模型选择是一个道理,多个lambda值,分别训练出对应的w,b的值,然用验证集计算出Jcv,选择最小的那个Jcv对应的lambda,然后再用测试集测试。原创 2022-11-12 12:55:18 · 511 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:神经网络(五)Tensorflow实现(下)
梯度下降是广泛应用于机器学习的算法,如回归和分类,神经网络等,但是还有一些方法比梯度下降更好比如adam,这种方法可以自动调节学习率alpha的大小,如左图,步长有点小,那么adam算法就会自动把学习率放大,又如右图,最开始步长有点大,来回震荡,那么adam算法就会自动把步长变小。卷积层就是每个神经元只对上一层输入的部分数据进行计算,而不会计算全部,这加快了计算速度,而且使用更少的训练数据,而且不太容易过拟合。除了我们之前学过的输入层,隐藏层和输出层,其实神经网络还有其他类型的的层。原创 2022-11-12 08:53:02 · 142 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:神经网络(四)Tensorflow实现(中)多分类问题
可以看到左侧的算法当y代入0或1的时候,会发现其实和右边的loss定义是一个道理(注意看吴老师的蓝色和红色的批注),所以Softmax回归其实是逻辑回归的泛化。先来一个jupyter notebook的例子,可以看到在数学上的两个结果相同的表达式在计算机中却输出不一样,下面的方法就可以提高运算的精度。上面是一个新的问题,比如一个自动驾驶系统,可能要在一张图片里识别出有无汽车,公共汽车,行人,那么此时的y就是一个有三个分量的向量。上图左侧是逻辑回归的损失函数的算法,右侧是Softmax回归的损失函数的算法。原创 2022-11-11 23:39:02 · 621 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:神经网络(三)Tensorflow实现(上)
像下面的例子,左侧那个神经网路模型,输入层就是一个数字x,然后后面有两个隐藏层,每个隐藏层里都只有一个神经元,看右侧的公式推导,最后的输出值还是个线性函数的输出,所以就印证了咱们上面说的那句话(无法去拟合比线性回归模型更复杂的东西)如果面对回归问题,那么有不同的选择,如果是预测明天的股票如何变化的话,那么通常会选择线性激活函数,因为股票的涨跌对应着数值的正负,而线性激活函数正好允许正值和负值的存在。上面那个例子如果用线性激活函数的话,那么就会达不到神经网络的要求,无法去拟合比线性回归模型更复杂的东西。原创 2022-11-10 22:44:04 · 339 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(二)
下图是模型的图示以及左下角是tensorflow的实现代码,Dense就是神经网络的一层,其中参数units是该层神经元的个数,activation是用哪个激活函数,返回值是一个函数(是的,函数也可以作为一个返回值),然后在该函数下传入输入值,即可逐步得到最后的预测概率,结合之前学的东西,真的很好理解!在网上有看到一种说法DL是特征提取。原因一是我们构建的神经元(逻辑回归单元)比起我们大脑的任何一个神经元都很简单,原因二是直到今日,我们几乎不知道大脑是如何工作的,还谈何构建一个模拟我们大脑运作的模型了呢。原创 2022-11-09 13:43:57 · 320 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:高级学习算法-神经网络(一)
在这门课中,我将向你们介绍神经网络。然后影响一件T-shirt是否成为畅销品的有如下几个因素,一是顾客对于这件T恤的承担能力(即对于顾客来说这件T恤是贵了还是买的起),二是顾客对于这件T恤的认知程度,三是顾客对于这款衣服的质量的认知程度。看到右下角的第一层输出的激活值的计算公式,可以看到是个25行1列的列向量,因为第一个隐藏层有25个神经元,所以w,就得有25个小分量,b也同理。右下角是一个简单的神经元示例,这个神经元由输入(一个或多个数),有一个或多个输出,输出的就是那个f(x),输出是概率。原创 2022-11-09 08:08:03 · 291 阅读 · 0 评论 -
Tensorflow亲妈级安装教程(CPU和GPU版)
然后咱们参考上面几篇文章可以知道,python3.9版本对应的tensorflow,CUDA,cuDNN的版本分别可以是哪些,经过查阅之后,发现又一件事,就是我本科的时候装过cuda,版本是10.0.130,这就难受了,因为我的显卡驱动版本装不了更高的,但是10.0和python3.9又不匹配,所以我就得去升级驱动,才能再升级CUDA(因为CUDA的版本也受显卡驱动版本的限制),再下载对应版本的cuDNN。那就先不管了,后面等到跑项目的时候再说吧,现在跑跑吴老师课后的demo,效率上的差异看不大出来。原创 2022-11-08 15:32:44 · 2715 阅读 · 2 评论 -
向毕业妥协系列之机器学习笔记:监督学习-回归与分类(三)
将上面的wj的计算公式拆开简单变换一下,得到如下的公式,alpha通常是一个比较小的数字,假如是0.01,而lambda通常是一个不太大的正数,比如1或10,假如是1,又假如训练示例的个数m=50,那么变换之后的公示的前面那项的系数计算就是右侧那样,可以得到是0.9998,那么这个数字和wj相乘又有什么意义呢,意义就是每次迭代时缩小wj一点点。到现在为止,我们已经学习了几种不同的学习算法,包括线性回归和逻辑回归,它们能够有效地解决许多问题,但是当将它们应用到某些特定的机器学习应用时,会遇到过拟合(原创 2022-11-07 17:20:29 · 330 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:监督学习-回归与分类(二)
同样的,加入现在你有很多特征,比如16个,那么如果再写一个for循环计算梯度,偏导等等,那会很慢,但是如果直接用numpy的函数的话,它会自动调用电脑的并行计算的硬件,可能16个还体会不到性能的差距,但是当n很大的时候,这个性能就体现出来了。以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000平方英尺,而房间数量的值则是0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。分子上的u1代表样本均值。原创 2022-11-07 09:48:38 · 186 阅读 · 0 评论 -
向毕业妥协系列之机器学习笔记:监督学习-回归与分类(一)
,指的是在梯度下降的每一步中,我们都用到了所有的训练样本,在梯度下降中,在计算微分求导项时,我们需要进行求和运算,所以,在每一个单独的梯度下降中,我们最终都要计算这样一个东西,这个项需要对所有个训练样本求和。对了,吴恩达老师的课件里的代码是用的jupyter notebook写的,但是因为jupyter notebook的每个单元格是独立的,所以在一个单元格里定义的东西,另一个单元格里用不了,所以我们需要把每小块的代码按照从上到下的顺序关系把它们复制到到一个单元格里,这样我们就能运行代码了,很舒服!原创 2022-11-06 15:29:31 · 693 阅读 · 0 评论