机器学习-支持向量机
支持向量机总体是由一个合页损失函数和一个核函数组成 合页损失函数 由于函数形状像一个合页,故命合页损失函数,下图为合页损失函数的图形。 二分类问题求解分为三个步骤,第一步为定义函数 $g(x)= \begin{cases} f(x)>0, & \text {output= +1} \ f(x)<0, & \text{output= -1} \end{cases}$ 上述定义的函数,其输出由f(x)决定,当f(x)大于零时,输出为+1,当f(x)小于零时,输出为-1。第二步是通过损失函数判断函数的好坏。我们定义损失函数如下: $$L(f)=\sum_nI(g(x^n)\not \neq \hat y^n)$$ $x^n$表示训练集中第n个数据,I代表指示函数,当它的输入为True的时候,输出1;否则输出0。也就是说,当我们的函数g预测的结果和实际结果一样的时候就没有损失,不一样的时候才有损失。但是这个损失函数是不可微分的,就无法用梯度下降的方法来优化。这时我们用另一个近似的函数来表示: $$L(f)=\sum_nI(f(x^n),\hat...
机器学习-逻辑回归
接着上篇博客继续,我们发现,概率生成模型最终推导函数,其本质还是寻找参数w和b,所以可以设置一个函数,直接来寻找最优的w和b $$ f_{w,b}(x)=P_{w,b}(C_1|x)=\sigma(z)\ \sigma(z)=\frac{1}{1+exp(-z)}\ z = w \cdot x+b $$ 相较于线性回归,逻辑回归做的事情便是将 wx+b 放入 sigmoid 函数中,使其输出一直处于0~1之间。 在我们确定了函数之后,便是应该再定义一个损失函数。 假设有一组训练数据,其数据大小为 N,而且分别有自己的类别标签C。给定一组 w 和 b,就可以计算这组w,b下产生上图N个训练数据的概率,$f_{w,b}(x^3)$表示 $x^3$ 属于C1的概率,但是其真实分类为C2,所以要用 $1-f_{w,b}(x^3)$。 $L(w,b)L(w,b)$取得的数值最大的时候,即取得最好的w和b,$w^∗,b^∗ = argmax_{w,b}L(w,b)$ 在此我们可以做一个变换,对 $L(w,b)$取对数不影响其单调性,然后再加上符号,单调性与之前的相反,那么就是求...
机器学习-概率生成模型
理论基础 概率生成模型,是概率统计和机器学习中的一类重要模型,指一系列用于随机生成可观测数据的模型。假设有两类数据,每一类都有若干个样本;概率生成模型认为每一类数据都服从某一种分布,如高斯分布;从两类训练数据中得到两个高斯分布的密度函数,具体的是获得均值和方差两个参数;测试样本输入到其中一个高斯分布函数,得到的概率值若大于0.5,则说明该样本属于该类,否则属于另一类。 生成模型可以和贝叶斯概率公式进行结合,用于分类问题。原始贝叶斯概率公式为: $$ P(A|B)=\frac{P(B|A)P(A)}{P(B)} \tag{1} $$ 对于一个$2\times2$的分类则有下图所述的贝叶斯分类 在上图中,训练数据中有两个类别;每个类别下有5个样本,我们想要知道新的测试样本$x$属于$C1$的可能性。根据贝叶斯概率公式可以得到上图片所示的概率公式。其中,$P(C1)$和$P(C2)$表示在训练数据中,随机采样得到$C1$或者C2的概率,即两个类别在训练数据中所占的比重。分母项$P(x)$表示生成数据x的概率,此处可以由生成模型计算得到; $$ P(x) = P(x|C1)P(C1)...
机器学习-梯度下降的优化
在回归中,我们需要解决下面的优化问题,即使得Loss函数尽可能的小 $$ \theta^*=arg\min L(\theta),L:loss function,\theta:parameters $$ 假设一共有两个参数$\theta_1,\theta_2$,使得$\theta^0= \begin{bmatrix}\theta^0\\theta^1\end{bmatrix}$,便有梯度如下 $$\nabla L(\theta)=\begin{bmatrix} \partial L(\theta_1)/ \partial \theta_1\\ \partial L(\theta_2)/ \partial \theta_2\end{bmatrix}$$ 那么参数的更新便可通过向量的形式进行 $$ \begin{bmatrix}\theta^1_1\\theta^1_2\end{bmatrix}=\begin{bmatrix}\theta^0_1\\theta^0_2\end{bmatrix}-\eta\begin{bmatrix} \partial L(\theta^0_1)/...
机器学习-回归
前言 此次学习的课程为李宏毅机器学习,之前学过一遍吴恩达的课程,只可惜当时没记笔记,且近些时候没有写代码,逐渐疏忽了,故选择李宏毅再进行新一遍的学习,所谓温故而知新。 回归是我们通常会使用的机器学习中的一类,比如日常中的我们的身高预测,股票预测等等,这些都可以看作为粗略的回归。 举一个例子 小时候我们会玩一个叫赛尔号的游戏,游戏里有各种各样的精力,就好比我们捕捉到了一只雷伊,然后我们可以向雷伊投经验值,让他升级,这只雷伊会有一个攻击力,我们想要预测雷伊的各种各样的属性与其攻击力之间的关系。 于是我们设其血量为$X_{hp}$,其体重为$x_{w}$,其身高为$x_{h}$,其物种为$x_s$,其战斗力为$x_{cp}$,然后预测他进化之后的战斗力值。那么便有$y=b+\sum w_ix_i$,其中$w_i:weight,b:bias$。如果单一个$x_{cp}$作预测的话便是$y=b+w\cdot x_{cp}$。 收集到了数据之后,便是可以进行预测,在此我们使用一个名为Loss函数进行Loss计算 $$ L(f) = \sum^{10}{n=1}(\hat...
身体是革命的本钱
...
再见小破电
...
讲讲各个编程语言的特点
目前呢,市面上主流的编程语言有 PHP、Java、Python、C、C++、JavaScript等,这些语言呢也是各有千秋,今天呢,就用简短的话语细数一下他们的特点。 PHP:没有优点 Java:库多,库多,库多 Python:语法清楚,语法清楚,语法清楚 C:能操纵底层,能细粒度优化性能 C++:啥都有,啥都有,啥都有 汇编: C语言: Java: C#: PHP: Python: Go: Haskell: Lisp: 最后是 C++:
关于 pandoc exited with code null 的解决方案
今天在写博客的时候,渲染的时候发生了一些问题,主要报错如下 1[ERROR][hexo-renderer-pandoc] pandoc exited with code null. 看了一些博主的方案,也进行了尝试,但是结果并不是很好,但是自己经过摸索还是解决了,便是来写一下相关的解决方案。 第一种是将 hexo-renderer-pandoc 卸载 1npm remove --save hexo-renderer-pandoc 但是呢,卸载之后,hexo 的渲染器就需要重新装配,不符合我的需求。 第二种则是在 Linux 之下的的一个官方的解决方法: 1234567891011name: Simple Usageon: pushjobs: convert_via_pandoc: runs-on: ubuntu-18.04 steps: - uses: docker://pandoc/core:2.9 with: args: "--help" # gets appended to pandoc...
tensorflow入门
首先是 tensorflow 及其相关包的安装,作者本人使用的是 miniconda,安装命令如下 1234567conda create -n 'tensorflow'activate tensorflowconda install -c conda-forge tensorflowconda install scikit-learnconda install -c conda-forge pandasconda install -c conda-forge matplotlibconda install -c conda-forge seaborn 代码仓库为 deeplearning-ai 的 1git clone https://github.com/https-deeplearning-ai/tensorflow-1-public 首先要讲一下机器学习和传统编程的区别,传统编程在于通过输入规则和数据,得到结果;机器学习则是通过输入结果和数据,得到规则,即如下图所示 首先可以做一个例子 x = -1, 0, 1, 2, 3, 4 y = -3,...