《數據科學面試通關》詳細闡述了與數據科學面試相關的基本解決方案,主要包括探索現代數據科學領域、在數據科學領域尋找工作、 Python編程、數據可視化與數據敘述、使用 SQL查詢數據庫、 Linux中的 Shell和 Bash腳本編寫、使用 Git進行版本控制、用概率和統計挖掘數據、理解特征工程和為建模準備數據、精通機器學習概念、用深度學習構建網絡、用 MLOps實現機器學習解決方案、掌握面試環節、協商薪酬等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
《數據科學面試通關》覆蓋數據科學面試所需核心技能,從Python編程到機器學習、深度學習及MLOps,助力您全面提升,成功拿下理想工作。
在當今這個充滿活力的技術環境中,對人工智能(AI)和數據科學角色的專業人才的需求激增,數據科學就業市場也日益被各個級別的數據科學和人工智能員工所占據。本書是一本全面的指南,旨在為有志之士和經驗豐富的個人提供應對數據科學面試復雜性所需的基本工具和知識。無論你是第一次踏入人工智能領域,還是旨在提升專業技能,本書都提供了一種全面的方法幫助你掌握該領域的基礎和尖端內容。
本書涵蓋了從使用 Python 和 SQL 編程到統計分析、預建模和數據清洗概念、機器學習(ML)、深度學習、大型語言模型(LLM)和生成式人工智能的廣泛關鍵主題。我們的目標是在深入探討基礎概念的同時,也提供全面的回顧和最新進展。在一個以語言模型和生成式人工智能的顛覆性潛力為標志的時代,不斷提升你的技能至關重要。這本書就像指南針,引導讀者了解這些變革性技術的復雜性,確保準備好應對它們帶來的挑戰并把握它們所呈現的機遇。
此外,除了技術實力之外,我們還將深入探討人工智能職位的面試藝術,就如何在面試中脫穎而出和有效進行薪酬談判提供了指導。此外,為數據科學職位量身打造一份出色的簡歷也是至關重要的一步,本書就如何撰寫引人注目的簡歷,在競爭激烈的就業市場中吸引眼球提供獨到的見解。隨著人工智能重塑各行各業和創新加速發展,現在正是開始或推進數據科學之旅的理想時機。我們誠邀你深入了解這一全面的資源,并踏上掌握數據科學和人工智能動態世界的道路。
適用讀者
如果你是一名經驗豐富的專業人士,或者是一名需要提高技能的年輕專業人士,或者正在尋找進入令人興奮的數據科學行業的機會,那么這本書就是為你準備的。
本書內容
在第 1 章中,我們以一個簡短但有價值的概述開始我們的旅程,并介紹當前數據科學與人工智能的概況。
第 2 章介紹數據科學角色及其各種類別。
第 3 章介紹 Python 語言中最常見和有用的任務和操作。
第 4 章介紹如何講述引人入勝的數據故事。
第 5 章深入講解數據庫世界,理解數據庫的設計以及如何查詢數據庫以獲取數據。
第 6 章通過 bash 和 shell 命令的力量提高操作系統技能,使你能夠與多種技術進行本地或云端的交互。
第 7 章探索 Git 中最有用的命令,用于項目的協作和可重現性。
第 8 章講解一些相關的概率和統計主題,它們為許多機器學習模型和假設提供了基礎內容。
第 9 章利用對描述性統計的理解創建干凈、機器可讀的數據集。
第 10 章介紹最常用的機器學習算法、假設條件、工作原理以及如何評估它們的性能。
第 11 章更進一步地研究在各種應用中構建和評估神經網絡,同時也會涉及人工智能的最新進展。
第 12 章回顧數據科學流程、工具和策略,以有效地設計和實施端到端的機器學習解決方案。
第 13 章講解在面試過程的每個階段成功繞過技術和非技術因素的最佳技巧。
第 14 章講解如何優化收入潛力。
背景知識
為了充分利用本書,讀者應該具備 Python、SQL 和統計學的基礎知識。然而,如果讀者熟悉其他分析語言,如 R,也將從本書中受益。通過復習 SQL、Git、統計學和深度學習等關鍵數據科學概念,讀者將能很好地應對面試過程。
特別說明
在過去幾個月里,尤其是本書寫作過程中,可用的人工智能技術的普及度呈爆炸式增長。我們鼓勵讀者在他們的學習旅程中利用人工智能,借助諸如 ChatGPT 這樣的工具測試新獲得的技能。過去那種為了特定問題在 StackOverFlow 上搜索數小時的日子已經一去不復返了。現在,求助的力量就在你的指尖上。
本書的作者也利用生成式人工智能輔助處理一些次要的編輯任務和創建代碼示例。然而,請放心,本書內容是由人類編寫的,并且由我們規劃了書中包含的內容。在這個新時代,我們只是想讓讀者了解我們如何使用了這些工具。
萊昂德拉·R·岡薩雷斯是微軟的數據科學家,也是科技初創公司 CulTRUE 的首席數據官,擁有在科技、娛樂和廣告領域 10 年的經驗。在她的學術生涯中,她完成了與谷歌、亞馬遜、NBC 和 AT&T 的教育合作。
第 1 篇 進入數據科學領域
第1章 探索現代數據科學領域 3
1.1 數據科學是什么 3
1.2 探索數據科學過程 5
1.2.1 數據收集 5
1.2.2 數據探索 5
1.2.3 數據建模 6
1.2.4 模型評估 6
1.2.5 模型部署和監控 6
1.3 分析數據科學的不同類型 6
1.3.1 數據工程師 8
1.3.2 儀表板和可視化專家 8
1.3.3 機器學習專家 9
1.3.4 領域專家 10
1.4 審視數據科學的職業路徑 10
1.4.1 傳統型數據科學家 11
1.4.2 領域專家型數據科學家 11
1.4.3 非傳統路徑數據科學家 12
1.5 解決經驗瓶頸問題 13
1.5.1 學術經驗 14
1.5.2 工作經驗 15
1.6 理解預期的技能和能力 16
1.6.1 硬技能(技術技能) 17
1.6.2 軟技能(溝通技能) 19
1.7 探索數據科學的演變 20
1.7.1 新模型 20
1.7.2 新環境 20
1.7.3 新計算 21
1.7.4 新應用 21
1.8 本章小結 22
1.9 參考文獻 22
第2章 在數據科學領域尋找工作 23
2.1 尋找第一份數據科學工作 23
2.1.1 準備前行 24
2.1.2 尋找招聘板 25
2.1.3 構建出色的作品集 29
2.1.4 申請工作 31
2.2 制作金牌簡歷 33
2.2.1 完美簡歷的神話 34
2.2.2 理解自動化簡歷篩選 34
2.2.3 打造有效的簡歷 35
2.2.4 格式和組織 36
2.2.5 使用正確的術語 37
2.3 準備獲得面試機會 39
2.3.1 摩爾定律 39
2.3.2 研究、研究、再研究 40
2.3.3 品牌塑造 42
2.4 本章小結 42
2.5 參考文獻 43
第 2 篇 操控和管理數據
第3章 Python編程 47
3.1 變量、數據類型和數據結構 47
3.2 Python 中的索引 52
3.3 字符串操作 52
3.3.1 初始化字符串 53
3.3.2 字符串索引 53
3.4 使用 Python 控制語句和列表推導 57
3.4.1 條件語句 57
3.4.2 循環語句 58
3.4.3 列表推導 59
3.5 使用用戶定義的函數 61
3.5.1 用戶定義的函數的語法 61
3.5.2 使用用戶定義的函數進行操作 62
3.5.3 熟悉 lambda 函數 63
3.5.4 創建優秀的函數 65
3.6 在 Python 中處理文件 67
3.7 使用 pandas 整理數據 68
3.7.1 處理缺失數據 69
3.7.2 選擇數據 70
3.7.3 排序數據 74
3.7.4 合并數據 75
3.7.5 使用 groupby()進行聚合 76
3.8 本章小結 81
3.9 參考文獻 82
第4章 數據可視化與數據敘述 83
4.1 理解數據可視化 83
4.1.1 條形圖 84
4.1.2 折線圖 85
4.1.3 散點圖 87
4.1.4 直方圖 87
4.1.5 密度圖 88
4.1.6 分位數-分位數圖(Q-Q 圖) 89
4.1.7 箱線圖 90
4.1.8 餅圖 91
4.2 調查行業工具 93
4.2.1 Power BI 93
4.2.2 Tableau 93
4.2.3 Shiny 93
4.2.4 ggplot2(R) 93
4.2.5 Matplotlib(Python) 94
4.2.6 Seaborn(Python) 94
4.3 開發儀表板、報告和關鍵績效指標 95
4.4 開發圖表和圖形 97
4.4.1 條形圖Matplotlib 97
4.4.2 條形圖Seaborn 99
4.4.3 散點圖Matplotlib 100
4.4.4 散點圖Seaborn 102
4.4.5 直方圖Matplotlib 103
4.4.6 直方圖Seaborn 104
4.5 應用基于情景的敘事 106
4.6 本章小結 109
第5章 使用SQL查詢數據庫 110
5.1 介紹關系數據庫 110
5.2 掌握 SQL 基礎知識 112
5.2.1 SELECT 語句 113
5.2.2 WHERE 子句 113
5.2.3 ORDER BY 子句 114
5.3 使用 GROUP BY 和 HAVING 聚合數據 116
5.3.1 GROUP BY 子句 116
5.3.2 HAVING 子句 118
5.4 使用 CASE WHEN 創建字段 119
5.5 分析子查詢和 CTE 120
5.5.1 SELECT 子句中的子查詢 121
5.5.2 FROM 子句中的子查詢 122
5.5.3 WHERE 子句中的子查詢 123
5.5.4 HAVING 子句中的子查詢 125
5.5.5 區分公用表表達式(CTE)和子查詢 125
5.6 使用連接合并表格 128
5.6.1 內連接 128
5.6.2 左連接和右連接 131
5.6.3 全外連接 133
5.6.4 多表連接 134
5.7 計算窗口函數 135
5.7.1 OVER、ORDER BY、PARTITION 和 SET 135
5.7.2 LAG 和 LEAD 138
5.7.3 ROW_NUMBER 140
5.7.4 RANK 和 DENSE_RANK 140
5.7.5 使用日期函數 142
5.8 處理復雜查詢 143
5.9 本章小結 147
第6章 Linux中的Shell和Bash腳本編寫 148
6.1 操作系統簡介 148
6.2 導航系統目錄 149
6.2.1 介紹基本命令行提示符 150
6.2.2 理解目錄類型 151
6.3 文件和目錄操作 152
6.4 使用 Bash 進行腳本編寫 155
6.5 介紹控制語句 157
6.6 創建函數 160
6.7 數據處理和管道 162
6.8 使用 cron 164
6.9 本章小結 165
第7章 使用Git進行版本控制 167
7.1 介紹倉庫 167
7.2 創建倉庫 168
7.2.1 克隆現有的遠程倉庫 169
7.2.2 從頭開始創建本地倉庫 169
7.2.3 將本地倉庫和遠程倉庫關聯 170
7.3 詳解數據科學家的 Git 工作流程 172
7.4 在數據科學中使用 Git 標簽 174
7.4.1 理解 Git 標簽 175
7.4.2 作為數據科學家使用標簽 175
7.5 理解常見操作 175
7.6 本章小結 178
第 3 篇 探索人工智能
第8章 用概率和統計挖掘數據 181
8.1 用描述性統計描述數據 181
8.1.1 測量中心趨勢 181
8.1.2 測量變異性 183
8.2 介紹總體和樣本 184
8.2.1 定義總體和樣本 185
8.2.2 代表性樣本 185
8.2.3 減少抽樣誤差 186
8.3 理解中心極限定理 188
8.3.1 中心極限定理 188
8.3.2 證明正態性假設 188
8.4 用抽樣分布塑造數據 191
8.4.1 概率分布 191
8.4.2 均勻分布 192
8.4.3 正態分布和學生 t 分布 192
8.4.4 二項分布 193
8.4.5 泊松分布 194
8.4.6 指數分布 194
8.4.7 幾何分布 195
8.4.8 威布爾分布 196
8.5 假設檢驗 198
8.5.1 理解單樣本 t 檢驗 198
8.5.2 理解雙樣本 t 檢驗 199
8.5.3 理解配對樣本 t 檢驗 199
8.5.4 理解方差分析和多元方差分析 200
8.5.5 卡方檢驗 201
8.5.6 A/B 測試 201
8.6 理解Ⅰ 型錯誤和Ⅱ型錯誤 203
8.6.1 Ⅰ 型錯誤(假陽性) 204
8.6.2 Ⅱ型錯誤(假陰性) 205
8.6.3 尋求平衡 205
8.7 本章小結 206
8.8 參考文獻 207
第9章 理解特征工程和為建模準備數據 208
9.1 理解特征工程 208
9.1.1 避免數據泄漏 209
9.1.2 處理缺失數據 209
9.1.3 數據縮放 212
9.2 應用數據轉換 213
9.2.1 引入數據轉換 213
9.2.2 對數轉換 215
9.2.3 冪次轉換 216
9.2.4 Box-Cox 轉換 217
9.2.5 指數轉換 219
9.3 處理分類數據和其他特征 220
9.3.1 獨熱編碼 220
9.3.2 標簽編碼 221
9.3.3 目標編碼 223
9.3.4 計算字段 224
9.4 執行特征選擇 226
9.4.1 特征選擇的類型 227
9.4.2 遞歸特征消除 227
9.4.3 L1 正則化 228
9.4.4 基于樹的特征選擇 228
9.4.5 方差膨脹因子 229
9.5 處理不平衡數據 230
9.5.1 理解不平衡數據 230
9.5.2 處理不平衡數據 231
9.6 降低維度 231
9.6.1 主成分分析 232
9.6.2 奇異值分解 232
9.6.3 t-SNE 233
9.6.4 自編碼器 233
9.7 本章小結 234
第10章 精通機器學習概念 236
10.1 介紹機器學習工作流程 236
10.1.1 問題陳述 238
10.1.2 模型選擇 238
10.1.3 模型調整 238
10.1.4 模型預測 238
10.2 監督機器學習 239
10.2.1 回歸與分類 239
10.2.2 線性回歸回歸 240
10.2.3 邏輯回歸 244
10.2.4 k-最近鄰(k-NN) 246
10.2.5 隨機森林 248
10.2.6 極端梯度提升(XGBoost) 252
10.3 無監督機器學習 254
10.3.1 K-means 255
10.3.2 具有噪聲的基于密度的聚類應用(DBSCAN) 257
10.3.3 其他聚類算法 260
10.3.4 評估聚類 261
10.4 總結其他值得注意的機器學習模型 262
10.5 理解偏差-方差權衡 263
10.6 超參數調整 265
10.6.1 網格搜索 265
10.6.2 隨機搜索 265
10.6.3 貝葉斯優化 266
10.7 本章小結 267
第11章 用深度學習構建網絡 268
11.1 介紹神經網絡和深度學習 268
11.2 討論權重和偏差 271
11.2.1 權重介紹 271
11.2.2 偏差介紹 271
11.3 使用激活函數激活神經元 273
11.3.1 常見激活函數 273
11.3.2 選擇合適的激活函數 275
11.4 剖析反向傳播 276
11.4.1 梯度下降 276
11.4.2 什么是反向傳播 276
11.4.3 損失函數 277
11.4.4 梯度下降步驟 278
11.4.5 梯度消失問題 278
11.5 使用優化器 281
11.5.1 優化算法 281
11.5.2 網絡調整 282
11.6 理解嵌入 284
11.6.1 詞嵌入 284
11.6.2 訓練嵌入 284
11.7 列出常見的網絡架構 285
11.7.1 常見網絡 285
11.7.2 工具和包 287
11.8 介紹 GenAI 和 LLM 288
11.8.1 揭示語言模型 288
11.8.2 Transformer 和自注意力 289
11.8.3 遷移學習 290
11.8.4 GPT 應用 291
11.9 本章小結 293
第12章 用MLOps實現機器學習解決方案 294
12.1 引入 MLOps 294
12.2 理解數據采集 297
12.3 學習數據存儲的基礎知識 298
12.4 審查模型開發 299
12.5 模型部署的打包 300
12.5.1 確定要求 300
12.5.2 虛擬環境 301
12.5.3 環境管理的工具和方法 301
12.6 使用容器部署模型 302
12.7 驗證和監控模型 304
12.7.1 驗證模型部署 304
12.7.2 模型監控 305
12.7.3 思考治理 306
12.8 使用 Azure ML 的 MLOps 307
12.9 本章小結 307
第 4 篇 獲得工作
第13章 掌握面試環節 311
13.1 掌握與招聘人員的早期互動 311
13.2 掌握不同的面試階段 314
13.2.1 招聘經理階段 314
13.2.2 技術面試 315
13.2.3 編碼問題 316
13.2.4 小組面試階段 319
13.3 本章小結 319
13.4 參考文獻 320
第14章 協商薪酬 321
14.1 理解薪酬格局 321
14.2 談判報價 322
14.2.1 談判考慮因素 322
14.2.2 回應報價 323
14.2.3 最大可談判薪酬和情境價值 324
14.3 本章小結 329
14.4 最后的話 330