机器学习入门先知

#选择机器学习的原因

如果你已经读到了硕士还在做普通的编程开发,不涉及高等数学知识,那么感觉这个知识是不是浪费了,会有不甘心的,和大学生、培训出来的童鞋有什么差别呢?所以,为了知识不浪费,拿高薪,做高级程序员,机器学习是个很好的跳板。

##机器学习入门先知

本文可视为总结,原文链接(http://www.yeayee.com/article-6654823-1.html)

从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题:

+ 分类问题

根据数据样本上抽取出的特征,判定其属于有限个类别中的哪一个。

+ 回归问题

根据数据样本上抽取出的特征,预测一个连续值的结果。

+ 聚类问题

根据数据样本上抽取出的特征,让样本抱抱团(相近/相关的样本在一团内)。

分类与回归问题需要用已知结果的数据做训练,属于“监督学习”

聚类的问题不需要已知标签,属于“非监督学习”。

如果在IT行业(尤其是互联网)里溜达一圈,你会发现机器学习在以下热点问题中有广泛应用:

1.计算机视觉

典型的应用包括:人脸识别、车牌识别、扫描文字识别、图片内容识别、图片搜索等等。

2.自然语言处理

典型的应用包括:搜索引擎智能匹配、文本内容理解、文本情绪判断,语音识别、输入法、机器翻译等等。

3.社会网络分析

典型的应用包括:用户画像、网络关联分析、欺诈作弊发现、热点发现等等。

4.推荐

典型的应用包括:虾米音乐的“歌曲推荐”,某宝的“猜你喜欢”等等。

##机器学习途径

![机器学习路径.jpg](D:/study/深度学习/机器学习路径.jpg "")

基本所有常见机器学习算法需要的数学基础,都集中在微积分、线性代数和概率与统计当中。

+ 微积分

微分的计算及其几何、物理含义,是机器学习中大多数算法的求解过程的核心。比如算法中运用到梯度下降法、牛顿法等。如果对其几何意义有充分的理解,就能理解“梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部”,能够更好地理解运用这样的方法。

凸优化和条件最优化的相关知识在算法中的应用随处可见,如果能有系统的学习将使得你对算法的认识达到一个新高度。

+ 线性代数

大多数机器学习的算法要应用起来,依赖于高效的计算,这种场景下,程序员GG们习惯的多层for循环通常就行不通了,而大多数的循环操作可转化成矩阵之间的乘法运算,这就和线性代数有莫大的关系了向量的内积运算更是随处可见。矩阵乘法与分解在机器学习的主成分分析(PCA)和奇异值分解(SVD) 等部分呈现刷屏状地出现。

+ 概率与统计

从广义来说,机器学习在做的很多事情,和统计层面数据分析和发掘隐藏的模式,是非常类似的。极大似然思想、贝叶斯模型 是理论基础,朴素贝叶斯(Naïve Bayes )、语言模型(N-gram)、隐马尔科夫(HMM)、隐变量混合概率模型是他们的高级形态。

常见分布如高斯分布是混合高斯模型(GMM)等的基础。


机器学习编程语言优先级:Python > R > Java C++


大数据相关:Hadoop && Spark

##经典算法

绝大多数问题用典型机器学习的算法都能解决,粗略地列举一下这些方法如下:

处理分类问题的常用算法包括:逻辑回归(工业界最常用),支持向量机,随机森林,朴素贝叶斯(NLP中常用),深度神经网络(视频、图片、语音等多媒体数据中使用)。

处理回归问题的常用算法包括:线性回归,普通最小二乘回归(Ordinary Least Squares Regression),逐步回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)

处理聚类问题的常用算法包括:K均值(K-means),基于密度聚类,LDA等等。

降维的常用算法包括:主成分分析(PCA),奇异值分解(SVD) 等。

推荐系统的常用算法:协同过滤算法

模型融合(model ensemble)和提升(boosting)的算法包括:bagging,adaboost,GBDT,GBRT

其他很重要的算法包括:EM算法等等。

我们多插一句,机器学习里所说的“算法”与程序员所说的“数据结构与算法分析”里的“算法”略有区别。前者更关注结果数据的召回率、精确度、准确性等方面,后者更关注执行过程的时间复杂度、空间复杂度等方面。 。当然,实际机器学习问题中,对效率和资源占用的考量是不可或缺的。

##机器学习项目工作流程

抽象成数学问题(分类、聚合or回归)——获取数据——特征预处理与特征选择——训练模型与调优——模型诊断——模型融合——上线运行

关于项目经验:脱离业务和数据的算法讨论是毫无意义的,应从一个数据源开始,即使是用最传统,已经应用多年的机器学习算法,先完整地走完机器学习的整个工作流程,不断尝试各种算法深挖这些数据的价值,在运用过程中把数据、特征和算法搞透,真正积累出项目经验 才是最快、最靠谱的学习路径。


##开发环境搭建

(1)python安装

(2)anaconda安装 a.勾选加入环境变量 b.添加清华TUNA镜像源

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes

c.自带的python为3.6,可配置其他python版本,conda create -n py27 python=2.7

之后我们可以通过activate py27和deactivate py27命令激活、退出该环境。

(3)Pycharm安装 在http://idea.lanyus.com获取注册码,在Activation code中填入即可。(Pycharm用起来实在太慢,渣渣机用着太卡顿,还是切回eclipse+pydev)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值