據(jù)與數(shù)據(jù)預處理入門)
簡介這份人工智能通識入門課程面向零基礎學習者、培訓學員以及希望系統(tǒng)梳理AI知識框架的初學者圍繞人工智能基本概念、發(fā)展脈絡與大數(shù)據(jù)背景下的落地應用展開。內(nèi)容從達特茅斯會議、符號主義與連接主義講到深度學習并覆蓋機器學習中的監(jiān)督學習、無監(jiān)督學習和強化學習以及自然語言處理、計算機視覺、機器人技術等核心分支同時結合Hadoop、Spark說明數(shù)據(jù)預處理、特征工程與模型訓練流程并討論隱私泄露、就業(yè)變革、算法歧視等倫理議題。資源包含1個PDF文件壓縮包約6.25MB適合電腦端閱讀、檢索和課堂投屏。課程配有實例演示與實戰(zhàn)項目思路可幫助讀者把數(shù)據(jù)清洗、模型構建、效果驗證到結果分析的過程串聯(lián)起來形成對AI應用鏈路的整體認識。目前已有385人學習適合作為AI入門自學、企業(yè)培訓預習或高校課堂補充材料。1. 第一次聽到“人工智能”就發(fā)怵先把這門通識課講明白很多人第一次聽到“人工智能”這四個字腦子里先冒出科幻片里的機器人緊接著就是一句“我數(shù)學不好肯定學不會”。其實把 AI 想成一臺特別能吃數(shù)據(jù)的機器更貼切扔進去的是大量原始數(shù)據(jù)出來的是“預測”和“判斷”它不會憑空變聰明靠的是你喂給它的東西夠多、夠干凈。這門 AI 初體驗通識基礎課要解決的正是“先搞懂它是什么”這道門檻它不教你造機器而是帶你認全機器的每個部件認全人工智能的四大分支再講清大數(shù)據(jù)為什么是它的燃料。適合完全零基礎、想弄明白 AI 到底怎么運轉、又不想一上來就被公式勸退的人包括做產(chǎn)品、做運營、做業(yè)務以及準備換方向的自學者。2. 為什么要學AI通識先認清一條流水線上的五個工位我?guī)н^不少零基礎的同學最常見的開局是聽說“機器學習”火直接去找實戰(zhàn)教程裝環(huán)境裝了兩天報錯十幾條第三天就放棄了。問題不在難度在于跳過了一張地圖。通識課的價值不是讓你立刻會寫模型而是讓你在動手之前就知道自己站在流水線的哪一段、下一步該往哪走遇到陌生的詞不至于心里發(fā)慌。AI 和大數(shù)據(jù)這兩個詞天天在會議上出現(xiàn)真正讓人焦慮的往往不是不會寫代碼而是聽不懂別人在說什么。2.1 一個AI項目長什么樣從原始數(shù)據(jù)到“能用”的五步把任何一個 AI 項目拆開基本都是同一條流水線采集數(shù)據(jù)、清洗與特征處理、訓練模型、評估效果、交付使用。用做菜打比方特別順——先去買菜收集數(shù)據(jù)回來洗切配清洗和特征工程下鍋炒訓練嘗一口咸淡評估最后端上桌交付。新手最容易犯的錯是把全部注意力放在“炒”這一步以為模型越高級菜越好吃結果菜是爛的鍋再好也沒用。這門課的結構其實就是按這條流水線排的先講人工智能的定義和歷史讓你知道這鍋菜是怎么演變來的再講機器學習、自然語言處理、計算機視覺、機器人技術這四個分支相當于認識廚房里的幾口鍋接著用一整段講大數(shù)據(jù)也就是買菜和洗切最后談倫理與社會影響相當于食品安全。你按這個順序聽腦子里會自動形成一張流程圖而不是一堆散裝名詞。我建議零基礎的人聽到這一步就做一件小事拿張紙把“數(shù)據(jù)—清洗—模型—評估—使用”這五個詞橫著寫一行后面每學一個概念就往對應的位置塞。學監(jiān)督學習塞到“模型”學特征工程塞到“清洗”。塞滿一輪你對 AI 的認知就不再是黑匣子了。提示這條流水線是所有 AI 項目的通用骨架后面學任何具體技術都先問自己一句“它屬于哪一步”比死記定義有效得多。2.2 三個流派、幾次浪潮歷史不是背年份是理解“為什么變成今天這樣”課程開頭會講人工智能這個概念在 1956 年的一次學術會議上被正式提出然后一路講到現(xiàn)在。很多人聽歷史就走神覺得跟動手無關其實這段最有信息量它解釋了為什么今天學 AI 必須先把數(shù)據(jù)搞清楚。早期的主流思路叫符號主義說白了就是“人把規(guī)則寫死”。專家系統(tǒng)是這條路的高峰——把老師傅的判斷經(jīng)驗一條條寫成規(guī)則機器照著查。問題很快就暴露了規(guī)則少的時候挺好用一旦業(yè)務變復雜規(guī)則庫膨脹到幾千條改一條牽動十條維護成本高得嚇人。這就像給新同事寫操作手冊寫到第八十頁手冊本身成了負擔。后來思路轉了叫連接主義通俗說就是“別寫規(guī)則了給例子讓它自己總結”。給機器一萬張標好“貓”“狗”的照片它自己去找區(qū)分規(guī)律這就是機器學習。再往后數(shù)據(jù)越來越多、算力越來越便宜把模型的層數(shù)堆深就成了深度學習。所以這門課把大數(shù)據(jù)放在四大分支之后講不是隨便排的——數(shù)據(jù)是這條技術路線真正的地基。我第一次學的時候把這段歷史當成故事聽過后才反應過來三種流派其實對應三種解決問題的策略——規(guī)則能寫清就用規(guī)則寫不清就給例子例子多到人看不完就上深度學習。拿到一個實際需求先判斷它屬于哪一種比盲目套模型靠譜。2.3 三類人學它的理由不一樣對號入座再決定投入多少技術方向的人學通識是為了打地基。你會寫代碼不等于懂 AI很多 bug 的根源是對“模型在干什么”沒有概念。先把四大分支和數(shù)據(jù)處理流程過一遍再去學具體算法進度會快很多。非技術崗學通識目標更實際能判斷一個需求靠不靠譜能跟技術同事對上話。比如業(yè)務方提“能不能做個自動識別圖片里商品的系統(tǒng)”你聽完課程里的計算機視覺部分至少知道要問三件事——有多少標注好的圖、識別到什么精度算合格、錯了會有什么后果。這三問一出口溝通效率立刻不一樣。學生和轉行的人學通識核心是建立詞匯表。AI 領域的術語密度極高同一個詞在不同上下文里意思還不一樣。通識課的作用是把這些詞先過一遍讓你以后看文檔、看教程時不至于每段都卡住。學到什么程度算夠我的標準是能用自己的話把一條完整的流水線講給外行聽就算過關了。3. 零基礎第一步把AI的四個核心分支拆成看得懂的樣子四大分支聽起來唬人其實就是機器處理四類不同的東西表格和數(shù)字機器學習、文字自然語言處理、圖像計算機視覺、物理動作機器人技術。這一章我們挨個拆每個分支都配上最小可跑的示例或者可跟做的步驟你不需要裝任何環(huán)境用最普通的 Python 就能跟著敲一遍。別小看這些“玩具代碼”它們的骨架和工業(yè)級系統(tǒng)是同一套。3.1 機器學習三種學習方式對應三種生活場景監(jiān)督學習是帶答案的練習冊給一堆題目每道題后面都寫著正確答案機器做完自己對答案慢慢調(diào)整。無監(jiān)督學習是沒有答案的一筐襪子沒人告訴你該怎么分機器自己按顏色、材質找出幾堆。強化學習是打游戲沒人教你怎么走走對了給分走錯了扣分靠試錯摸索策略。課程里講這三類重點不是公式而是讓你判斷手里的問題屬于哪一類。下面這段代碼是監(jiān)督學習的最小形態(tài)二十行不到卻包含了“訓練”和“預測”兩個核心動作# 最小號的監(jiān)督學習從已有答案的數(shù)據(jù)里找出一個判斷門檻 # 每條數(shù)據(jù)是 (學習時長, 是否通過)1 表示通過0 表示沒通過 history [(1, 0), (2, 0), (3, 1), (5, 1), (6, 1), (8, 1)] # 訓練從 0 到 9 逐個試門檻看哪個門檻判斷錯的次數(shù)最少 best_line, best_miss None, len(history) 1 for line in range(0, 10): miss 0 for hours, passed in history: guess 1 if hours line else 0 # 用當前門檻做判斷 if guess ! passed: # 和真實答案比一比 miss 1 if miss best_miss: # 記錄目前最好的門檻 best_line, best_miss line, miss print(找到的分界線學習時長 , best_line, 小時) print(在歷史數(shù)據(jù)上判斷錯的次數(shù), best_miss) # 使用來了一個學了 4 小時的新同學用這條分界線做預測 new_hours 4 print(預測結果, 通過 if new_hours best_line else 未通過)先看history這個列表它就是訓練數(shù)據(jù)每一行都帶著“正確答案”這正是監(jiān)督學習里“監(jiān)督”兩個字的由來。中間的循環(huán)在做的事叫訓練把門檻從 0 試到 9每次數(shù)一數(shù)判斷錯幾條留下錯得最少的那條。這里的line就是模型參數(shù)miss就是評估指標range(0, 10)是搜索范圍——真實項目里參數(shù)不止一個搜索方式也更聰明但邏輯完全一樣。最后三行是預測模型訓練完就固定下來拿新數(shù)據(jù)套進去出結果。你如果把new_hours改成 7結果會翻轉這就是模型在做判斷。想再進一步把數(shù)據(jù)換成“學習時長 出勤率”兩個特征門檻就從一條線變成一個平面這也是為什么特征越多模型越復雜。注意這段代碼在 6 條數(shù)據(jù)上找門檻很容易找到一條“剛好全對”的線但換一批新數(shù)據(jù)就未必準。真實項目一定要留一部分數(shù)據(jù)不參與訓練專門用來檢驗。3.2 自然語言處理先讓機器把一句話數(shù)成數(shù)字機器不認識“人工智能”這四個字的含義它只認識數(shù)字。所以自然語言處理的第一步永遠是同一個動作把文本變成數(shù)字。課程里講文本分析和智能對話系統(tǒng)底層都是從這一步長出來的。# 把一句話變成機器能算的東西統(tǒng)計每個詞出現(xiàn)幾次 sentence AI 通識課 講 人工智能 和 大數(shù)據(jù) 也 講 人工智能 的應用 tokens sentence.split() # 英文式的按空格切分中文要先分詞再走這一步 counter {} for w in tokens: counter[w] counter.get(w, 0) 1 # 出現(xiàn)一次加一 for w, c in sorted(counter.items(), keylambda x: -x[1]): # 按次數(shù)從多到少排 print(w, c)跑完你會看到“講”和“人工智能”各出現(xiàn)兩次其余各一次。這個結果叫詞頻把詞頻按固定順序排成一行數(shù)字就得到一條“特征向量”——機器終于可以拿它去算距離、做分類了。新手在這里最容易卡的是中文分詞英文單詞之間天然有空格中文沒有所以要先切成詞。這一步的準確率直接決定后面所有環(huán)節(jié)的效果“人工智能”被切成“人工”和“智能”意思就跑偏了。另一個常見誤區(qū)是以為詞頻越高越重要實際上“的”“了”“是”這類詞出現(xiàn)最多卻毫無信息量工程上要把它們先剔掉。3.3 計算機視覺和機器人先看懂“機器看見”和“機器動手”的三步計算機視覺的流程可以壓縮成三步把圖像變成數(shù)字矩陣、從矩陣里提取特征邊緣、紋理、顏色分布、根據(jù)特征做判斷。你不需要一上來就理解卷積先記住“圖像在機器眼里就是一堆數(shù)字”這件事后面所有術語都能掛在這句話上。機器人技術多一層感知、決策、執(zhí)行。感知靠傳感器決策靠算法執(zhí)行靠機械結構三者缺一環(huán)機器人就動不利索。課程里講這部分時更強調(diào)“自主性和適應性”說白了就是環(huán)境變了它還能不能干成活。零基礎摸這兩個分支我的建議是先不寫代碼去找現(xiàn)成的在線演示改改輸入看輸出怎么變上傳不同亮度的照片看識別結果怎么抖換個口音看語音識別錯在哪兒。這種“調(diào)參數(shù)看反應”的過程比讀十頁原理更容易建立直覺也能讓你真正體會到為什么數(shù)據(jù)質量決定了天花板。4. 大數(shù)據(jù)先上手一次數(shù)據(jù)預處理的完整走法課程中間有一大段講大數(shù)據(jù)很多初學者會跳過覺得那是搞基礎設施的人關心的事。恰恰相反這是零基礎最該花時間的地方。數(shù)據(jù)預處理做得好用最笨的模型也能出結果數(shù)據(jù)一塌糊涂再高級的模型也是白搭。這一章我們用一個十幾行的數(shù)據(jù)集把清洗、填補、除異常、歸一化這四步完整走一遍全部用 Python 標準庫不用裝任何東西。4.1 大數(shù)據(jù)的三條特性落到表格上才看得懂課程里講大數(shù)據(jù)有體量大、速度快、種類多這三個特性光背沒用得知道它們各自對應什么麻煩特性大白話你手上的表現(xiàn)新手要注意什么體量大一臺機器放不下、算不完文件幾百 MB 起打開就卡別用一次性讀入內(nèi)存的寫法要分塊處理速度快數(shù)據(jù)源源不斷進來每秒都有新記錄昨天的數(shù)據(jù)今天就舊了清洗邏輯要能重復跑別手工改表格種類多表格、文本、圖片、日志混在一起同一個用戶的信息散在五個系統(tǒng)里先統(tǒng)一字段名和單位再談分析這三條湊在一起就逼出了“大數(shù)據(jù)處理平臺”這個東西。課程里會講到分布式存儲組件和內(nèi)存計算引擎這類平臺它們的作用用一句話概括單機算不動的時候把同一份清洗邏輯拆給很多臺機器一起算。你入門階段不用碰它們但要知道自己寫的清洗代碼將來是要搬到這種平臺上去跑的所以盡量別依賴“手工點兩下”的操作。4.2 第一次數(shù)據(jù)預處理四步清洗一步都別跳先看這份故意做臟的小數(shù)據(jù)缺失、重復、異常各來一個# 一份很小的學習行為數(shù)據(jù)里面埋了三種典型的臟數(shù)據(jù) raw [ {user: A, hours: 12, score: 88}, {user: B, hours: 3, score: 51}, {user: C, hours: None, score: 66}, # 缺失值 {user: D, hours: 9, score: 79}, {user: D, hours: 9, score: 79}, # 重復記錄 {user: E, hours: 400, score: 95}, # 異常值明顯錄錯了 {user: F, hours: 7, score: 72}, ]第一步去重、第二步補缺失寫在一起# 第一步去重。同一個人、同樣的數(shù)值只保留一條 seen, clean set(), [] for r in raw: key (r[user], r[hours], r[score]) if key not in seen: seen.add(key) clean.append(r) # 第二步缺失值用中位數(shù)補。中位數(shù)比平均數(shù)抗異常值 hours sorted(r[hours] for r in clean if r[hours] is not None) mid len(hours) // 2 median hours[mid] if len(hours) % 2 else (hours[mid - 1] hours[mid]) / 2 for r in clean: if r[hours] is None: r[hours] median print(清洗后條數(shù), len(clean), 用于填補的中位數(shù), median)去重那段的key是關鍵它決定“什么算重復”。這里用三個字段組合實際項目里通常用用戶 ID 加時間戳因為同一個人在不同時間產(chǎn)生兩條記錄是正常的。補缺失那段用的是中位數(shù)sorted排序后取中間那個數(shù)如果你把median換成平均數(shù)400 這個異常值會把結果拉高補進去的值就失真了。第三步除異常、第四步歸一化# 第三步用 IQR 規(guī)則找出異常值超出的直接剔除 vals sorted(r[hours] for r in clean) q1, q3 vals[len(vals) // 4], vals[len(vals) * 3 // 4] low, high q1 - 1.5 * (q3 - q1), q3 1.5 * (q3 - q1) clean [r for r in clean if low r[hours] high] # 第四步歸一化把學習時長壓到 0 到 1 之間方便和分數(shù)字段一起比較 lo min(r[hours] for r in clean) hi max(r[hours] for r in clean) for r in clean: r[hours_norm] round((r[hours] - lo) / (hi - lo), 3) for r in clean: print(r)1.5這個系數(shù)是統(tǒng)計學里的慣例想更嚴格可以改成1.0想更寬松改成3.0改完直接看剔掉了多少條——如果一下剔掉一半說明要么數(shù)據(jù)真有問題要么閾值太緊。歸一化的公式是“減去最小值再除以跨度”目的是讓不同量綱的字段能放在一起比較學習時長是幾十分數(shù)是幾十分不縮放的話模型會偏向數(shù)值大的那個。注意歸一化必須用清洗后的數(shù)據(jù)算最大值最小值順序反過來結果就不對了。跑完這段你會看到 E 那條 400 小時的記錄被剔除C 的缺失被補上D 的重復只剩一條。這四步幾乎出現(xiàn)在每一個真實項目里區(qū)別只是數(shù)據(jù)量和判斷標準。4.3 特征工程不是玄學把“原始字段”變成“能判斷的指標”清洗完只是數(shù)據(jù)能用了要讓模型判斷得準還得靠特征工程——從原始字段里造出更有信息量的指標。課程里專門講了這部分我用一個最常見的例子說明# 從報名日期和最近登錄日期造一個新特征沉默天數(shù) from datetime import date def days_silent(signup, last_login, todaydate(2024, 6, 1)): d1 date.fromisoformat(signup) d2 date.fromisoformat(last_login) return (today - d2).days print(days_silent(2024-01-10, 2024-02-01)) # 輸出 121 print(days_silent(2024-01-10, 2024-05-30)) # 輸出 2單看“最近登錄日期”這個字段機器沒法判斷誰快流失了轉成“沉默天數(shù)”之后數(shù)字越大風險越高模型一下就能用上。類似的還有從金額和訂單數(shù)算客單價、從注冊時間和首次購買時間算轉化時長。經(jīng)驗之談是花在造特征上的時間回報通常比換模型高得多。我第一次做項目時死磕模型參數(shù)調(diào)了兩天漲了兩個點后來加了一個“最近三十天登錄次數(shù)”的特征直接漲了十幾個點那之后我才真正信了這句話。5. 新手避坑AI入門最容易翻車的五個地方這一章是我這些年帶人時反復見到的翻車現(xiàn)場按“現(xiàn)象—原因—解決”給你捋一遍。看的時候不用記等你真動手卡住了回頭翻對應那條就行。5.1 概念上最容易擰巴的三個地方第一個坑把 AI 當成“會自己思考”的東西?,F(xiàn)象是總覺得模型“應該懂我的意思”結果一跑發(fā)現(xiàn)它連常識都沒有。原因在于宣傳口徑把“預測”說成了“理解”實際上模型做的只是一件事——根據(jù)見過的數(shù)據(jù)找一個函數(shù)把輸入映射到輸出。解決的思路很簡單每次看到 AI 產(chǎn)品的宣傳就把它的輸入和輸出寫下來中間那部分它到底在算什么通常一行就能說清。想通這一點你對模型能力的預期就不會飄。第二個坑以為數(shù)學不好就學不了?,F(xiàn)象是打開教程看到公式就關掉反復幾次之后徹底放棄。原因是把研究路線當成了入門路線學術論文要推公式入門只需要知道這個公式在解決什么問題。解決的辦法是先建立流程感把數(shù)據(jù)、模型、評估這幾個環(huán)節(jié)的位置記住公式留到用得上時再補。我?guī)н^文科背景的同學從這條路徑走兩周就能獨立跑完一個完整的小項目。第三個坑把大數(shù)據(jù)和 AI 當成兩件事?,F(xiàn)象是學完 AI 分支就不管數(shù)據(jù)了一動手發(fā)現(xiàn)八成時間花在處理數(shù)據(jù)上心態(tài)直接崩。原因是這兩塊在不同章節(jié)里講看起來像兩個主題實際上是發(fā)動機和燃料的關系。解決的辦法是記住一句話模型決定上限數(shù)據(jù)決定能不能摸到上限。遇到效果不好先查數(shù)據(jù)再查模型。提示這三個坑的共同點是預期錯位。把預期調(diào)對學習曲線會平緩很多。5.2 動手時最容易翻車的兩個地方第四個坑模型在練習數(shù)據(jù)上準得離譜一換新數(shù)據(jù)就崩。現(xiàn)象是訓練集上準確率九十幾實際用起來一塌糊涂。原因叫過擬合——模型把訓練數(shù)據(jù)里的噪聲也背下來了換一批數(shù)據(jù)自然不認。解決的做法是留出一部分數(shù)據(jù)完全不參與訓練專門做檢驗數(shù)據(jù)量小的時候還可以輪著留一部分出來驗多輪取平均??吹健坝柧毤鯘M分”這種結果第一反應應該是警惕而不是高興。第五個坑同樣的代碼跑兩次結果不一樣?,F(xiàn)象是昨天跑出的數(shù)字今天復現(xiàn)不了懷疑自己寫錯了。原因是數(shù)據(jù)順序沒固定、隨機過程沒設種子或者清洗步驟的先后順序變過。解決的辦法是把清洗過程寫成固定順序的腳本每次從原始數(shù)據(jù)重跑一遍別手工改中間結果涉及隨機的環(huán)節(jié)統(tǒng)一定一個固定值。血淚經(jīng)驗是一次我在臨時文件上手工改了幾行后來怎么也對不上之前的結論重跑了一整天才找回來。注意任何讓你“手工改一下再看”的操作都記得先備份原始數(shù)據(jù)。原始數(shù)據(jù)永遠只讀是所有結論的后悔藥。6. 下一步學什么從通識走向第一個能跑的模型通識課聽完最容易出現(xiàn)的狀態(tài)是“都懂了但不會動”。我的建議是別急著扎進算法細節(jié)按下面這條路走四周每周只做一件事做完再進下一周階段時間干什么過關標準一第 1 周把四大分支各用三句話講給外行聽對方能聽懂并追問一個問題是好事二第 2 周找一份幾百行的公開小數(shù)據(jù)做完整清洗能說清每一條被剔除的記錄為什么剔除三第 3 周用最簡單的算法跑一次訓練加評估能解釋訓練集和檢驗集分數(shù)為什么不一樣四第 4 周把上面的流程寫成一段可以重復跑的腳本換臺機器、換個時間跑結果一致第三周那個“最簡單的算法”別挑花哨的。像我第 3 章寫的那種找門檻的思路就夠用重點是跑通整條鏈路讀數(shù)據(jù)、清洗、切分、訓練、評估、看結果。跑通一次你對前面所有概念的理解會突然落地。如果想再往前一步可以挑一個自己真正關心的場景做小項目比如分析一批文本評論的情緒傾向或者識別一批圖片里有沒有某個物體。場景一定要小小到你三天能看到結果做完了再回頭補理論動力會強得多。最忌諱的是一上手就選“做一個智能客服”這種大目標做兩周還在配環(huán)境。我自己有個習慣每學一個新東西先在紙上畫那條五步流水線把新概念塞進對應的工位塞不進去就說明還沒真懂。從那以后我每次開新項目都強制走一遍“原始數(shù)據(jù)只讀、清洗寫成腳本、檢驗集單獨留出”這三條幾乎沒再翻過車。希望幫到你。本文還有配套的精品資源點擊獲取