2024年9月25日 星期三

觀察資料的趨勢



EDA 中觀察資料的趨勢

針對Time Series Data 通常會觀察原始資料的趨勢(Trend), 季節性/週期性(Seasonality)的狀態或資料中的雜訊.

但這些數據是怎麼取得的呢? 
  1. 趨勢線: 用原始資料的移動平均值(MA)作為長期走勢的觀察. (移動窗口可以自己設定) 
  2. 季節性(Seaonality): 原始資料減去趨勢線
  3. 雜訊(Residual) :   原始資料減去趨勢線再減去週期性線, 剩下的值認定是噪訊(隨機波動)或短期的變化。

可以自己用Python 完成或者利用 statsmodels 工具來完成。 statsmodels 本身提供許多不同統計模型和統計資料探索的函數。


另外, 也可以計算ACF ( Autocorrelation)  , 自相關係數為原始資料 Xt 和 X的lagged data Xt-k計算類似相關係數的概念, ,ACF 值 介於-1~1,其大小可以幫助我們了解數據中的趨勢和季節性模式。當lagged 越大,ACF 通常會逐漸減少,特別是對於沒有長期相關性的數據而言。

$ \rho(x_{t},x_{t-1}),  \rho(x_{t},x_{t-2}),..., \rho(x_{t},x_{t-k})$

$$\rho(x_{t},x_{t-k}) = \frac{\sum_{t=k+1}^{n} (X_t - \bar{X})(X_{t-k} - \bar{X})}{\sum_{t=1}^{n} (X_t - \bar{X})^2}$$

ACF值愈大的, 如 $ \rho(x_{t},x_{t-i}) $ 很大, 表示$x$和 lagged $i$ 後, 有存在週期性 






ACF (沒有存在週期性)


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

具有週期性的資料
 seasonal_pattern = 10 * np.sin(2 * np.pi * time / 12
 trend = 0.1 * time 
 noise = np.random.normal(0, 1, size=100
 data = seasonal_pattern + trend + noise








2024年9月21日 星期六

what is Botnet ?

 

A botnet is a network of compromised computers or devices, often referred to as "bots" or "zombies," that are controlled remotely by a malicious actor (known as a "botmaster"). These devices are typically infected with malware, allowing the botmaster to execute various commands on them without the device owner’s knowledge.

Here are some common uses and dangers of botnets:

  1. Distributed Denial of Service (DDoS) Attacks: Botnets are often used to flood a target server or website with traffic, overwhelming it and causing it to crash or become unavailable to users.

  2. Spam Distribution: They can be used to send out massive amounts of spam emails or phishing messages, which can lead to further infections or fraud.

  3. Credential Stuffing: Botnets may attempt to use stolen usernames and passwords on different sites, automating the process to try many combinations quickly.



2024年9月18日 星期三

最大概似估計 (MLE) 與 GLL

 




看到 y1 情況下 , 機率分佈其參數會是 $ \theta_1 $ 的可能性高於$ \theta_2 $.

可能性的意義亦等同於  $ P( y_1 \mid \theta_1 ) > P( y_1 \mid \theta_2 ) $ , 

但如何找到最好的$ \theta $ 使其可能性達到最大,即機率 $ P( y_1 \mid \theta )$ 能達到最大, 此即為 最大概似估計 (Maximum Likelihood Estimation) 的目標。

若此機率模型為高斯分佈, 即什麼樣的參數 $(\mu, \sigma^2)$ , 能使 $ P(y_1 \mid \mu, \sigma^2)$ 最大.

若你的機器學習模型是預測一個高斯分佈的參數  $(\mu, \sigma^2)$

$$X \sim \mathcal{N}(\mu, \sigma^2)$$

$$f(x) = \frac{1}{\sigma \sqrt{2\pi}} e^{ - \frac{(x - \mu)^2}{2 \sigma^2} }$$

則你可以將對應答案 $y_1$ 丟入得出其機率,即 $$ f ( y_1 \mid \mu, \sigma^2) $$

若預測的參數夠好的話,則$f(y_1\mid \mu, \sigma^2)$ 應該要很大,若取Log 改以$$X \sim \text{Log-N}(\mu, \sigma^2)$$ 表示,值也會是大的。

$$log(f(y_1\mid \mu, \sigma^2)) = -\frac{1}{2} \log(2\pi) -\frac{1}{2}  \log(\sigma^2) - \frac{(y_1 - \mu)^2}{2 \sigma^2}$$










 若預測多組 $(\mu_1, \sigma_1^2), (\mu_2, \sigma_2^2),...,(\mu_n, \sigma_n^2)$

效能可以直接加總 $$f(y_1\mid \mu_1, \sigma_1^2) +f(y_2\mid \mu_2, \sigma_2^2)+...+f(y_n\mid \mu_n, \sigma_n^n)$$  , 或取log 值相加也可以。

 $log(f(y_1\mid \mu_1, \sigma_1^2)) +log(f(y_2\mid \mu_2, \sigma_2^2))+...+log(f(y_n\mid \mu_n, \sigma_n^n))$   ---> 這就是 GLL (Gaussian Log Likelihood)

a^2))$$






如何同時衡量模型的正確性與長期穩定性?

 

如何同時衡量模型的正確性與長期穩定性?

Home Credit - Credit Risk Model Stability

Create a model measured against feature stability over time

https://www.kaggle.com/competitions/home-credit-credit-risk-model-stability/overview


gini = 2 * AUC - 1   (AUC:0~1)

stability metric = mean(gini) + 88.0 * min(0, a) - 0.5 * std(residuals)

針對預測能力呈現下滑趨勢給予懲罰 :即 a < 0 的情況

穏定性評估: 計算 residuals 的標準差, 愈小表示模型愈穏定. 最好是 0



[References ]


Understanding ROC and AUC 

2024年8月3日 星期六

iPAS 機器學習工程師參考樣題解說




更多補充說明 :

1.) 神經網路加入Embedding 層的用意? 
將輸入的 sparse vector 轉換成高維度的 dense vector,如此的 dense vector可能可以表現資料更多元的特徵。

2.) 模型效能評估為何使用RMSLE (Root Mean Square Logarithmic Error)  而不是MSE  ? 

因為當資料數據 y 本身差異很大時, 決定MSE 的大小其實都是由數值很大的 y 所主導, 對於數值很小的 y 就顯得微不足道。  故若想要觀察每一筆資料預測的誤差不要被某一筆數量級較大的y所主導,可以使用RMSLE.


因為RMSLE 先取 log  再計算MSE.。 由於取log 會使數值 scale 變小, 因此即使存在某些 y 很大, 對MSE 的影響也會相對變小。

另外,也可以用MAPE, 尤其當每筆資料數據 y 都是很大的情況,用MSE 計算都將超大,故用平均絕對百分比誤差反而是一個比較能看出預測和標準答案的誤差率。

 



Read More: 

2024年5月29日 星期三

[ARM bootloader] 問題解說

 1. 組合語言和指令集是一樣的東西嗎? 網路上看到的一般在說x86或ARM的assembly好像就是在說指令集,但圖Assembly和Instruction set又是分開的,所以還是有差別?


關係像是這樣

Assembly Language -------------------Assembler----------> CPU Instruction set  







2. 講義.text section裡的有一行rodata.str1.4是什麼意思?

   .rodata.xxxx  區段也是 read only data, 但存的是程式中的常數 "字串" 
2.JPG


3. LMA load memory address我不太懂什麼時候會用到,應該是說不太知道10-118頁的ROM和RAM各是什麼角色,一般所謂的「load進memory」的memory都是指RAM嗎?

(1)ROM 存放程式的地方, RAM 執行程式的地方
但ROM這個硬體是CPU可以隨機定址的, 所以其實程式也可以在ROM上跑, 只要將程式中的變數copy 到RAM即可,但要將. text, .rodata 等也都copy到RAM也是可以的. 

(2)若VMA==LMA 則不用copy , 但VMA和LMA不同, 則要將 LMA (來源) copy 到 VMA(目的地)  
底下圖 就是VMA和LMA不同, 所以會有copy的動作
.
(3) load進memory==> memory是指RAM 




4. Linker startup code, boot.o負責copy和BSS清成0是否口誤,因為下一頁boot.o只有負責copy,start.o才是zero BSS,兩個是分開的

對, boot.o 的程式只負責copy而已




2024年4月16日 星期二

[Linux Driver] 掛載AT24 EEPROM Driver

(一) 使用sysfs 的方式操作EEPROM

Load at24 driver (eeprom) 要配合 device tree 的操作.

  step 1: 
   
   # compile dts to dtbo
    >>    dtc -@ -I dts -O dtb -o at24.dtbo at24.dts
        
   # copy to /boot/overlays  
    >> sudo cp at24.dtbo  /boot/overlays 


   # modify /boot/config.txt and add this line 

   dtoverlay=at24

  # reboot pi  

    >> sudo reboot

  
step 2: sudo modprobe at24 (載入Kernel 原生 Driver )





step3:  正常情況下會產生   /sys/bus/i2c/devices/1-0050/eeprom
                   你可以讀寫此eeprom檔案, 例如:

         sudo dd if=123.bmp of=/sys/bus/i2c/devices/1-0050/eeprom
         sudo dd of=~/dump.bin  if=/sys/bus/i2c/devices/1-0050/eeprom



=====================================================

(二) 使用字元裝置的方式操作EEPROM

掛載 i2c-dev 模組後, 會生成 /dev/i2c-1 檔案, 可利用i2c tools 工具進行讀寫









---------

at24.dts

// Definitions for I2C EEPROM (24lcxx)
// www.ittraining.com.tw
/dts-v1/;
/plugin/;

/ {
        compatible = "brcm,bcm2708";

        fragment@0 {
                target = <&i2c1>;
                __overlay__ {
                        #address-cells = <1>;
                        #size-cells = <0>;
                        status = "okay";
                     
  
eeprom@50 {
compatible = "atmel,24c02";
reg = <0x50>;  // I2C address of the AT24C02
pagesize = <8>;
size = <256>;
};
  
                        
                };
        };
        
        
};

2024年3月25日 星期一

[Linux Driver] 技術回覆整理

 

Q0: Driver 開發方式為何?


Ans: 

請參考"Linux Driver開發的模式"  https://blog.ittraining.com.tw/2024/02/linux.html

 

Q1: 在Linux 驅動程式-> Linux GPIO host control 的bcm2708_gpio.c 是在哪個路徑下?


Ans: 課程使用的是kernel 4.4.x , 其關於bcm2708_gpio.c 改為 driver_gpio.c
路徑位於 /home/pi/linux-raspberrypi-kernel_1.20190401-1/drivers/bcma



Q2: 為何在範例"LinuxDriver_Data_20191001 \Code\14-GPIO-RPI_H\gpio.c"裡

只有定義

MODULE_LICENSE("GPL");
MODULE_AUTHOR("ittraining.com.tw");
MODULE_DESCRIPTION("A Simple GPIO Device Driver module for RaspPi");

而沒有定義
module_init();
module_exit();

Ans:

原始module 進入及離開點, 都是固定這個名字,
int init_module(void)
void cleanup_module(void)

若想要換別的名字,可以用以下巨集代換成別的名字.
module_init(led_init_module);
module_exit(led_remove_module);

Q3: 02_BTN_LED 裡的local_irq_save(flags), 禁止的irq是button_irq, 對嗎?

Ans:  不是. 

local_irq_save(flags)   //是對本次被中斷的CPU, 禁止它再接受何任何中斷

/*the critical section of code*/
.
local_irq_restore(flags) //還原被中斷前的CPU狀態


Q4:  Raspberry Pi 開發板接上電源後(I/O板接電腦USB埠, 主板接USB電源), 開機訊息或是下dmesg會常出現以下:

[ 10.391505] Under-voltage detected! (0x00050005)
[ 14.561447] Voltage normalised (0x00000000)

Ans:  其實可以略過此訊息, 但如果要消除此訊息.. 另外購買 2.5A power supply 供電, 不能用PC的 USB供電,因為電腦電流供應不足.

Q5:   關於中斷控制器

   這個local arm周邊的 具體是甚麼樣的周邊 請舉例
   這些周邊也接到GPU的中段控制器裡嗎? 
   另外, 中斷控制器有沒有在GPU裡?
   bcm2835 GPU ARM內部的IP簡圖去哪查?

Ans: 


(1) 來自ARM內部本身的中斷, 主要就是ARM 內部timer和作為和GPU溝通界面(Mailbox)的中斷通知
(2) 不知道,但也不用管GPU內部的中斷控制器
(3) 沒有, 我們講的中斷控制器是用來通知ARM 而己
(4)   Hardware architecture:   GPU ----> Interrupt controller ---> ARM


   資料來源: BCM2835-ARM-Peripherals  Ch7 Interrupts

 

Q5: 如何自己編譯核心或準備本機開發模式

請參閱 "Quick guide for building Raspberry Pi kernel 4.4.x"


Q6:

暫存器的確有可能因為中斷而改變狀態,但不懂得是明明已經說是存取暫存器
並不是一般放在記憶體的變數, 根本沒所謂保存在記憶體裡阿




上面這段描述是不是錯的?  我看gpio dirver也沒有加所以volatile?






Ans: 

(1) 現在計算機架構採用Memory-mapped I/O ,  將Peripheral Register  (Special Function Register)也映射在記憶體的一個區段, 所以存取週邊亦等同於存取記憶體.
   
(2)也許  readl 函式宣告像這樣.  readl (volatile uint32_t* paddr)

Q6 :電壓準位的問題

  Ans: 



2024年3月1日 星期五

艾鍗學院ARM MCU Board - NEW


艾鍗ARM MCU  實驗套件採用新唐 M482LE8AE (NuMicro® M482 USB OTG 系列)



MCU:

  • 新唐 M482LE8AE (NuMicro® M482 USB OTG 系列)
  • 高達 192 MHz Arm® Cortex®-M4F 核心
  • 128 KB 快閃記憶體,支援 eXecute-Only-Memory ( XOM )
  • 64 KB RAM,包含 32 KB 硬體奇偶校驗


電源: USB 輸入電源 5V,500mA 自復型保險絲限流保護,系統穩壓 3.3V


燒錄除錯器:  DAPLink


USB:  

USB 2.0 全速裝置/主機/OTG 控制器及內置 PHY


GPIO:

一組 1602 文字型 LCD

on board 輸入按鍵 x1

一組步進馬達及控制器模組


12bits SAR ADC:

AD 通道 12:10K 熱敏電阻(on board)

AD 通道 13:100K VR(on board)


12bits DAC: 1 組 DAC 輸出通道


16bits PWM:

PWM1_1:蜂鳴器 Buzzer

PWM1_2:Capture mode 紅外線收發模組(on board)


UART:

CH340G USB 模組 (UART1)

ESP8266 WiFi 模組 (UART1)


I2C: BH1750 照度計

SPI: NRF24L01P 2.4G 無線通訊模組



M482LE8AE晶片規格資料:

核心
  - 高達 192 MHz Arm® Cortex®-M4F 核心
  - DSP 指令集
  - 記憶體保護單元
   
記憶體
  - 128 KB 快閃記憶體,支援 eXecute-Only-Memory ( XOM )
  - 64 KB RAM,包含 32 KB 硬體奇偶校驗
  - 2 KB 一次性燒錄區塊 ( OTP )
   
循環冗餘校驗 ( CRC ) 單元
   
16 通道周邊 DMA 控制器
   
外部匯流排介面
  - LCD 平行介面,i80 模式
   
時脈源 ( Clocks )
  - 4 到 24 MHz 晶振
  - RTC 用 32 kHz 振盪器
  - 內部 48 MHz RC 振盪器 ( X-less )
  - 內部 12 MHz RC 振盪器
  - 內部 10 kHz RC 振盪器
   
RTC
  - 獨立 VBAT 電源輸入
  - 20 位元組備份暫存器
   
計時器和 PWM
  - 4 個 32 位元計時器
  - 12 路增強型 PWM ( 12 個 16 位元計時器 )
  - 12 路基本型 PWM ( 2 個 16 位元計時器 )
  - 1 個 24 位元倒數 SysTick 計時器
  - 1 個看門狗計時器
  - 1 個視窗看門狗計時器
類比周邊
  - 1 個 12 位元,多達 12 通道 5 MSPS SAR ADC
  - 1 個 12 位元 1 MSPS DAC
  - 2 個滿擺幅 ( Rail-to-rail ) 比較器
   
通訊介面
  -

多達 8 個低功耗 UART 介面 ( 17 Mbps ) ,包含 2 個 LIN 介面

  - 1個 ISO-7816 介面 ( 3.4 MHz ) ,支援全雙工 UART 模式
  - 3 個 I²C 介面 ( 可達 3.4 Mbps )
  - 2 個四線 SPI 介面 ( 可達 96 MHz )
  - 多達 2 個 SPI /I²S 介面 ( SPI 可達 96 MHz 、I²S 可達 192 kHz/16-bit )
  - 1 個 I²S 介面 ( 192 kHz/32-bit )
  - 1 個 SD 卡控制器 ( 50 MHz )
   
控制介面
  - 個正交編解碼介面 ( QEI )
  - 個 24 位元 通道輸入捕捉計數器單元
   
影像輸入介面
  - CMOS 感測器介面帶有硬體 1 位元亮度輸出
    
進階連結
  - USB 2.0 全速裝置/主機/OTG 控制器及內置 PHY
   
操作特性
  - 電壓範圍: 1.8V to 3.6 V
  - 溫度範圍: - 40 ℃ to 105 ℃
     
符合 IEC-60730 Class B
   
加解密引擎
  - AES-256
  - 真亂數產生器



資源連結:
1. M482LE8AE晶片規格
2. 艾鍗ARM Cortex M4 板電路圖








2024年2月19日 星期一

計算題樣題-相關題型

 

※僅列相關題型”作為參考例題,為確知應試者邏輯/運算能力,實際考題文字描述或數字可能修改。

 

1.        下圖為某班數學成績的次數分配折線圖,則下列敘述哪一個正確?
(A)  
有人考100                                        (B)   恰有12人考65
(C)  
全班共有48                                      (D)   及格的人數剛好為全班人數


2.        某班男、女生共36人,調查他們喜歡的科目,如下表



下列敘述何者正確?
(A)  
全班喜歡數學的比例,和女生中喜歡數學的比例一樣多
(B)  
男生中喜歡數學的比例,比女生中喜歡數學的比例多
(C)  
男生中喜歡國文的比例,和女生中喜歡英文的比例一樣多
(D)  
男生中喜歡數學的比例,比女生中喜歡英文的比例多

3.        下圖所示為某航空公司應徵人員身高的累積相對次數分配折線圖,若初選的條件為身高 170公分以上,則初選不合格的百分比應為多少?
(A) 45%                  (B) 50%                  (C) 65%                  (D) 70%


4.        下表是某班40位學生第二次段考的數學成績,請問該班估計的平均分數應是多少?
(A) 65.25
                    (B) 66.25                    (C) 67.25                    (D) 68.25

(Hint:直方圖因為沒有原始資料, 估計平均數方法可利用組中點乘以次數求出平均數)





5.      12÷2+6÷3×2的計算結果為?
(A) 7                        (B) 10                      (C) 8                        (D) 16

6.        已知有5個數由小到大排序為 abcde,其平均數為 321,中位數為 320 10a+3510b+3510c+3510d+3510e+35 的平均數為𝑥,中位數為𝑦,則𝑥 𝑦 =
(A) 10                      (B) 35                      (C) 321                    (D) 320

7.        中午12 點,小明到同一家餐廳外帶餐點,點了4份餐後,要結帳時,看到櫃台張貼:防疫期間,外帶優惠方式:每買5 份餐,其中一個價格最便宜的餐可以免費,因此小明多買了一個香烤鯛魚飯,則小明最多只要再多付多少錢,就可以多買一個香烤鯛魚飯?
(A) 40                      (B) 30                      (C) 20                      (D) 10


8.        下圖為2017年九個國家,每百萬人器官捐贈率,則從下圖中,下列選項何者正確?
(A)
西班牙為2017 年九個國家中,器官捐贈總人數最多的國家
(B) 2017
年九個國家中,台灣器官捐贈總人數多於中國器官捐贈總人數
(C)
無法判斷葡萄牙和比利時兩國,捐贈器官總人數哪個國家多
(D) 2017
年九個國家中,香港器官捐贈總人數是第5


9. 

10.


#其他參考資料