zoukankan      html  css  js  c++  java
  • 人工智能开篇-普通程序员如何向人工智能靠拢?

     https://yq.aliyun.com/articles/221644?utm_content=m_32122机器学习

    1、普通程序员如何向人工智能靠拢?知乎原文

    原文

    谢邀,我曾经也只是一个只懂 ACM 竞赛相关算法的普通程序员,误打误撞接触到了数据挖掘,之后才开始系统地了解机器学习相关的知识,如今已经基本走上了正轨,开始了走向 Data Scientist 的征途。但是最高赞的一篇回答居然是关于 Deep Learning 的,这感觉就想是有人问我这山地车好高级,能不能教我怎么换挡,我告诉他说,这车太low了,我教你开飞机吧。我想即使目前开飞机(Deep Learning)的门槛一再降低,如果你没有一个优秀的基础,即使是老司机也是容易翻车的。

    所以我给 @子实的回答点了赞:普通程序员如何向人工智能靠拢? - 子实的回答 - 知乎简单认真回答一下,首先作为一个普通程序员,C++ / Java / Python 这样的语言技能栈应该是必不可少的,其中 Python 需要重点关注爬虫、数值计算、数据可视化方面的应用,主要是:可以参考:可以参考:怎么用最短时间高效而踏实地学习 Python?

    如果日常只编写增删改查的代码的话,那可能数学已经忘得差不多了,需要重温线性代数和微积分的基础知识,这会为之后的学习立下汗马功劳。再然后就是统计学相关基础,我在知乎专栏——BI学习大纲中写过,贴过来仅供参考:

    相关性分析(相关系数r、皮尔逊相关系数、余弦相似度、互信息)

    • 回归分析(线性回归、L1/L2正则、PCA/LDA降维)

    • 聚类分析(K-Means)

    • 分布(正态分布、t分布、密度函数)

    • 指标(协方差、ROC曲线、AUC、变异系数、F1-Score)

    • 显著性检验(t检验、z检验、卡方检验)

    • A/B测试

    推荐阅读:李航 —《统计学习方法》

    如果以上知识都具备了,再往后的路就可以开得很快了,可以一直冲刺到 Deep Learning。但在这之前我们还是需要了解不少机器学习的基础:

    • 关联规则(Apriori、FP-Growth)

    • 回归(Linear Regression、Logistics Regression)

    • 决策树(ID3、C4.5、CART、GBDT、RandomForest)

    • SVM(各种核函数)

    • 推荐(User-CF、Item-CF)

    推荐阅读:《集体智慧编程》、Andrew Ng — Machine Learning Coursera from Stanford

    此时的你或许已经有一块可以用的敲门砖了,但离工业界实际应用还有比较大的距离,主要差距就在于 Feature Engineering,这也是我在面试考察有经验的人面前比较注重的点。这一块中有一些比较基础的知识点,简单罗列如下:

    • 可用性评估:获取难度、覆盖率、准确率

    • 特征清洗:清洗异常样本

    • 采样:数据不均衡、样本权重

    • 单个特征:无量纲化(标准化、归一化)、二值化、离散化、缺失值(均值)、哑编码(一个定性特征扩展为N个定量特征)

    • 数据变换:log、指数、Box-Cox

    • 降维:主成分分析PCA、线性判别分析LDA、SVD分解

    • 特征选择:Filter(相关系数、卡方检验)、Wrapper(AUC、设计评价函数A*、Embedded(L1-Lasso、L2-Ridge、决策树、DL)

    • 衍生变量:组合特征

    • 特征监控:监控重要特征,fa特征质量下降

    我放一张公司内部算法培训关于特征工程的 PPT,仅供学习参考:

    v2-0c488d35e35e491b354e293aec574277_b.png

    再往后你就可以在技能树上点几个酷炫的了:

    • 提升

      •     Adaboost

      •     加法模型

      •     xgboost

    • SVM

      • 软间隔

      • 损失函数

      • 核函数

      • SMO算法

      • libSVM

    • 聚类

      • K-Means

      • 并查集

      • K-Medoids

      • 聚谱类SC

    • EM算法

      • Jensen不等式

      • 混合高斯分布

      • pLSA

    • 主题模型

      • 共轭先验分布

      • 贝叶斯

      • 停止词和高频词

      • TF-IDF

    • 词向量

      • word2vec

      • n-gram

    • HMM

      • 前向/后向算法

      • Baum-Welch

      • Viterbi

      • 中文分词

    • 数据计算平台

      • Spark

      • CaffeTe

      • nsorflow

    推荐阅读:周志华——《机器学习》

    可以看到,不管你是用 TensorFlow 还是用 Caffe 还是用 MXNET 等等一系列平台来做高大上的 Deep Learning,在我看来都是次要的。想要在这个行业长久地活下去,内功的修炼要比外功重要得多,不然会活得很累,也很难获得一个优秀的晋升空间。

    最后,关注你所在行业的最新 paper,对最近的算法理论体系发展有一个大致印象,譬如计算广告领域的几大经典问题:

    v2-1c3851d3910d380f2e26d9030f101317_b.png

    相关 paper 的 gitlist 仅供参考:wnzhang/rtb-papers

    最最后,也要时刻关注能帮你偷懒的工具,它将让你拥有更多的时间去调参:

    Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱 - Python - 伯乐在线

    ------------------------------------------------------------------------------------------------------------------------------------------------------------

    广告时间:如果你对以上学习路径有什么困惑,或者你对以下问题感兴趣:* 怎么定义一个算法工程师?它与其它传统研发岗位的区别是什么? 

    * 算法工程师所需的内功和外功是什么? 

    * 算法工程师拥有怎样的不可替代性及成长性? 

    * 如何才能最快速度成长为一名合格的算法工程师? 

    * 如何才能通过国内大厂的算法岗面试?

    欢迎来我的知乎 Live  (????)??

    SimonS 的知乎 Live - 如何成为当下合格的算法工程师

    SimonS 的知乎 Live - 如何快速攻克传统算法和数据结构

    SimonS 的知乎 Live - 机器学习入门需要哪些数学基础

  • 相关阅读:
    POJ 2976 Dropping tests
    【学习笔记-中国剩余定理】POJ1006 Biorhythms
    2017.10.6北京清北综合强化班DAY6
    P1607 [USACO09FEB]庙会班车Fair Shuttle
    2017.10.5北京清北综合强化班DAY5
    洛谷 P1379 八数码难题
    A. 拼音魔法
    A
    K
    A
  • 原文地址:https://www.cnblogs.com/xujiahui/p/6944032.html
Copyright © 2011-2022 走看看