Machine Learning
sunlanchang
北京邮电大学-计算机硕士,sunlanchang@bupt.edu.cn
展开
-
SVM使用对偶、核函数、软间隔的动机
使用对偶问题动机SVM可以通过QP即二次规划求解,通过QP求解时问题的求解复杂度是与是与输入特征的维度相关的,在对原来的X进行使用核函数做升维度后,此时的维度会非常的大。例如使用二次多项式核函数时,映射后的维度为原始维度的平方倍数量级,如果使用高斯核函数则映射后的维度为无穷维。所以此时再使用QP解原始的SVM最小化问题效率会非常低下,这就引出了通过解SVM的对偶问题来解原始最优化问题,而原始SV...原创 2019-11-04 11:08:36 · 546 阅读 · 0 评论 -
L1和L2正则化与稀疏性
参考https://zhuanlan.zhihu.com/p/50142573 参考用图解释和用导数解释转载 2019-10-25 21:20:14 · 480 阅读 · 0 评论 -
Momentum、AdaGrid、RMSprop、Adam优化算法总结
原创 2019-10-23 22:25:28 · 431 阅读 · 0 评论 -
机器学习预测PM2.5 多元线性回归模型numpy实现
Describe本次作业的样本是从台湾行政院环保署空气质量监测网下载的观测数据。希望大家使用线性回归模型预测出一段时间内的PM2.5值。本次作业使用台湾丰源观测站的观测记录,分成train set与test set。train set是丰原站每个月前20天所有观测数据。test set是从丰原站剩下的观测数据中采样出来的。train.csv: 每个月前20天的完整数据。test...原创 2019-10-22 11:51:42 · 2103 阅读 · 3 评论 -
线性回归推导
线性回归尝试学习的函数:f(xi)=wxi+b,使得f(xi)≃yif\left(x_{i}\right)=w x_{i}+b,使得f\left(x_{i}\right) \simeq y_{i}f(xi)=wxi+b,使得f(xi)≃yi使用均方误差函数估计参数w,b:(w∗,b∗)=argmin(w,b)∑i=1m(f(xi)−yi)2=argmin(w,b)∑i=1...原创 2019-04-24 11:21:07 · 190 阅读 · 0 评论 -
决策树
决策树算法注意:第五行意思为:已经到达叶子节点时,无法再向下分裂因为已经没有可以使用的属性分裂了;或者当前分裂到此节点时,尽管还有可以使用的属性分裂,但是节点内的样本都属于同一类别,无需在进行分裂。决策树的最关键之处是第八行选择合适的分裂属性来进行分裂。决策树是一个递归分裂的过程。按照第八行决策树选取最有的属性的算法,经典算法可以分为ID3、C4.5、CART。ID3算法选择的...原创 2019-04-28 22:09:39 · 123 阅读 · 0 评论 -
逻辑回归推导
逻辑回归解决分类问题,在线性回归上使用Sigmoid函数:y=11+e−(wTx+b),(3.18)y=\frac{1}{1+e^{-\left(\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+b\right)}},(3.18)y=1+e−(wTx+b)1,(3.18)等价于:lny1−y=wTx+b,(3.19)\ln \frac{y}{1-...原创 2019-04-24 15:44:32 · 569 阅读 · 0 评论 -
牛顿法求零点、极值点
牛顿法求零点的迭代公式:xn+1=xn−f(xn)f′(xn)x_{n+1}=x_{n}-\frac{f\left(x_{n}\right)}{f^{\prime}\left(x_{n}\right)}xn+1=xn−f′(xn)f(xn)经过若干次迭代后xn+1x_{n+1}xn+1即为方程f(x)=0f(x)=0f(x)=0的解。对于求凸函数的最值问题,可以看做求凸函数一...原创 2019-04-25 09:42:13 · 8330 阅读 · 4 评论 -
类别不平衡问题
再缩放在使用逻辑回归解决分类问题时等价的Sigmoid函数(Sigmoid反函数)为:lny1−y=wTx+b\ln \frac{y}{1-y}=\boldsymbol{w}^{\mathrm{T}} \boldsymbol{x}+bln1−yy=wTx+b其中的y1−y\frac{y}{1-y}1−yy为正例和负例的可能性之比,在预测时通常使用y1−y>1\frac...原创 2019-04-25 10:31:52 · 378 阅读 · 0 评论 -
标准反向传播推导手稿
神经网络反向传播算法的简单推导手稿,以便日后查阅使用。这篇文章反向传播算法推导写的非常好,一步一步推导计算反向传播,非常值得阅读。原创 2019-04-25 16:32:55 · 502 阅读 · 0 评论 -
PCA主成分分析推导
参考参考原创 2019-05-25 18:11:04 · 194 阅读 · 0 评论 -
第五届百度&西安交大大数据竞赛总结
背景比赛的背景和介绍:百度点石、西安交大大数据竞赛,比赛具体的任务是给定遥感图片和每个地点的行人访问数据要求参赛者根据这两个数据集预测地点的标签,例如医院、学校等如下图所示:数据集中图片数据为4万张100*100的jpg格式图片,下图所示:行人访问数据为每一个地点的各个行人不同时间的访问信息,例如属于居民区的某一地点的行人访问记录:思路一数据集中有很多噪声比如全黑或者全白,全黑应该...原创 2019-06-28 23:56:23 · 1823 阅读 · 8 评论 -
YOLO系列总结
在研究了目标检测领域YOLO系列算法,读了作者相关的论文,参加了目标检测比赛,最终对YOLO系列算法做一个总结,包括算法解决的问题、架构设计、优势、缺点等。YOLOv1解决问题解决了以往需要分开单独训练模型各个阶段的问题,采用端到端的架构设计。解决了以往检测速度慢的问题。得益于端到端的设计使得训练简单、inference速度快。优势将目标检测打通为端到端的训练。目标检测速度快。...原创 2019-08-16 22:28:43 · 1109 阅读 · 0 评论 -
机器学习岗位笔试面试常见问题
机器学习SVM公式推导逻辑回归推导二分类和多分类交叉熵推导PCA推导DNN推导softmax求导LDA线性判别分析推导SVM、逻辑回归离群点敏感提升树介绍XGBoost介绍GBDT与XGBoost区别实现正则化方法L1、L2区别联系YOLO算法及其改进、改进的对标one-hot优势过拟合、欠拟合判别过采样、欠采样方式K折交叉验证优势介绍网格搜索、随机搜索比...原创 2019-08-22 10:36:49 · 429 阅读 · 0 评论 -
偏差-方差分解bias-variance decomposition
方差、偏差的直观意义维基百科定义:Var(X)=E[(X−μ)2]其中μ=E(X)\operatorname{Var}(X)=\mathrm{E}\left[(X-\mu)^{2}\right] 其中\mu=\mathrm{E}(X)Var(X)=E[(X−μ)2]其中μ=E(X)在给定数据集中方差:var(x)=ED[(f(x;D)−f‾(x))2]\operatorname...原创 2019-04-23 10:50:46 · 1314 阅读 · 2 评论 -
分类问题的性能度量
分类问题评估度量原创 2019-04-22 21:49:41 · 528 阅读 · 0 评论 -
朴素贝叶斯的简单应用
利用已有的简单词表材料判断所给的测试记录的分类,词条非常的简单,作为笔记#!/usr/bin/python# coding:utf-8from numpy import *from math import *def loadDataSet(): postingList = [['my', 'dog', 'has', 'flea', 'problems', 'help', 'pleas原创 2017-04-29 21:46:49 · 1425 阅读 · 0 评论 -
决策树的简单实现
来自机器学习实战简单的实例#!/usr/bin/python# coding:utf-8from math import logdef createDataset(): #加载数据返回标签和数据集 dataSet = [[1, 1, 'yes'], [1, 1, 'yes'], [ 1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']]原创 2017-05-01 21:46:04 · 828 阅读 · 0 评论 -
Titanic: Machine Learning from Disaster
我使用了逻辑回归模型做的分类,只使用了7个特征,很显然分类效果很差只有43.54%,先附上自己的渣代码,后续优化import matplotlib.pyplot as pltimport pandas as pdimport numpy as npfrom pydoc import describefrom plot_test import weightdef sigmoid(inX):原创 2017-02-06 13:33:57 · 379 阅读 · 0 评论 -
Python写一个简单的神经网络
简单的神经网络算法,包括基本的后向传播BP算法,前向传播算法,更新权重使用的梯度下降算法,基本的框架算是有了,学习使用。注意输入每一行数据时候在神经网络中会加入bias偏量,神经网络的层数和每层个数为自定义,搞了很久才知道输入矩阵多了一个维度,权重和后向传播更新的delta都是每列神经元之间的关系,关于s形函数暂时用了两种,分别是logistic() 和 tanh() 效果差不多,简单的模型作为笔记原创 2017-05-13 11:37:13 · 1959 阅读 · 0 评论 -
matplotlib使用scatter画简单的散点图
利用matplotlib画简单的直线图和散点图import matplotlib.pyplot as pltfrom numpy import *x = [1, 2, 1, 3, 2, 3]y = [3, 3, 2, 2, 1, 1]x2 = arange(0, 4.0, 0.1)y2 = x2plt.scatter(x, y)plt.plot(x2, y2)plt.show()原创 2017-02-04 10:49:13 · 2638 阅读 · 0 评论 -
数字识别[Digit Recognizer](https://www.kaggle.com/c/digit-recognizer)
输入m个长度均为n的DNA序列,求一个DNA序列,到所有序列的总Hamming距离尽量小。两个等长字符串的Hamming距离等于字符不同的位置个数,例如,ACGT和GCGA的Hamming距离为2(左数第1, 4个字符不同)。 输入整数m和n(4≤m≤50, 4≤n≤1000),以及m个长度为n的DNA序列(只包含字母A,C,G,T),输出到m个序列的Hamming距离和最小的DNA序列和对应的距原创 2017-01-24 09:23:18 · 2151 阅读 · 0 评论 -
Python实现一个简单的反向传播算法
x输入乘以w1权重,后rulu激活函数,后w2权重,最后输出结果。# -*- coding: utf-8 -*-import numpy as np# N为batch size; D_in 输入维度# H为隐藏层维度 D_out 输出维度N, D_in, H, D_out = 64, 1000, 100, 10# 创建随机输入数据,让网络拟合x = np.random.ran...原创 2019-03-25 22:16:11 · 2068 阅读 · 2 评论 -
softmax函数导数
原创 2019-03-26 15:57:25 · 1529 阅读 · 0 评论 -
基于softmax激活函数交叉熵损失函数的BP推导
参考:https://www.jianshu.com/p/ffa51250ba2e原创 2019-03-26 17:17:44 · 1604 阅读 · 3 评论 -
基于拉格朗日乘法优化的Linear SVM 数学推导
对于一个线性可分的二分类数据集,Linear SVM是如何进行work的,这里基于MIT公开课进行了详细的数学推导,后续使用kernal trick的方法的数学推导后续再补上,以便自己以后查阅复试使用。李航老师对于SVM的章节的综述非常的到位,这里引用一下:参考:https://www.youtube.com/watch?v=_PwhiWxHK8o&t=54s《统计学习方法》...原创 2019-04-01 16:07:56 · 310 阅读 · 0 评论 -
基于Hinge Loss的Linear SVM梯度下降算法数学推导
传统的SVM使用凸二次规划的方式进行优化,使得损失函数收敛,参考李宏毅教授的机器学习课程的SVM的梯度下降的优化算法推导非常的简单明了,这里记录一下,并且参考Siraj Raval的例子使用梯度下降进行深入理解。实例生成训练SVM的数据#To help us perform math operationsimport numpy as np#to plot our data and m...原创 2019-04-01 17:01:34 · 3352 阅读 · 0 评论 -
CS230 Lecture 2深度学习的直观认识(Deep Learning Intuition)
观看斯坦福大学公开课CS230后记录笔记,以便以后查阅之用。原创 2019-04-02 15:26:01 · 422 阅读 · 0 评论 -
训练集trainning set和验证集validation set的划分策略
留出法hold-out1将数据集划分成两个互斥的集合训练集和验证集,利用训练集进行训练模型,利用验证集进行模型和超参的选择。在使用留出法时候,通常使用分层采样stratified sampling来保证训练集和验证集的独立同分布(independent and identical distribution),所谓的分层采样指的是划分出的训练集和验证集的各个类别的分布是一样的。交叉验证法cros...原创 2019-04-22 10:28:05 · 1390 阅读 · 0 评论 -
利用朴素贝叶斯和多线程做垃圾邮件分类
数据来源:http://www2.aueb.gr/users/ion/data/enron-spam/ 利用网站提供的三万多封邮件做一个分类,训练参数,利用个人电脑4核8G训练数据样本5000个,利用交叉验证得出的训练误差为1.63%,当数据样本上升为30000利用个人电脑训练老是被Linux给kill掉,后用了8个线程还是没能解决好,只是当做学习之用,后期就不在优化了,附上个人渣代码#~/usr原创 2017-05-01 10:36:53 · 804 阅读 · 0 评论