[AI/ML] Matrix Factorization(νλ ¬ λΆν΄)μ λ¨Έμ λ¬λ
λ¨Έμ λ¬λ κ΄λ ¨ 곡λΆλ₯Ό νλ€λ³΄λ©΄ νλ ¬μ κ΄ν μ΄μΌκΈ°κ° μ°Έ λ§μ΄ λμ€μ£ . μ λ§ μ§κΈμ§κΈνλ° κ·Έλ λ€κ³ λ λ μλ²½ν μ΄ν΄νμ§λ λͺ»νλ λΆμΌμ΄κΈ°λ ν΄μ...γ μ€λμ μκ°λ κΉμ νλ ¬ λΆν΄μ λν λ΄μ©μ μ λ¦¬ν΄ λ³΄λ € ν©λλ€.
νλ ¬ λΆν΄(Matrix Factorization)λ νλμ νλ ¬μ λ μμ νλ ¬λ€μ κ³±μΌλ‘ λΆν΄ν΄ νννλ λ°©λ²μ λλ€.
μ΄λ¬ν νλ ¬ λΆν΄λ₯Ό μ¬μ©νλ©΄, λ°μ΄ν°μ ν¬κΈ°λ₯Ό μ€μ΄λ©΄μλ μ€μν μ 보λ₯Ό 보쑴ν μ μμ΄μ. λ°μ΄ν°λ₯Ό λ¨μν μμΆνλ λ° κ·ΈμΉμ§ μκ³ , κ·Έ μμ μ¨κ²¨μ§ ν¨ν΄μ΄λ κ΄κ³λ₯Ό μ°Ύμλ΄λ λ°λ μ λ§ μ μ©νλ΅λλ€. μλ₯Ό λ€μ΄, μΆμ² μμ€ν μμ μ¬μ©μμ μμ΄ν κ°μ μ νΈλλ₯Ό λνλ΄λ λκ·λͺ¨ νλ ¬μ΄ μμ λ, μ΄λ₯Ό λΆν΄νλ©΄ κ° μ¬μ©μμ μμ΄ν μ μ μ¬μ μΈ νΉμ§μ λ°κ²¬ν μ μμ΄μ. μ΄λ κ² λ°κ²¬λ νΉμ§μ μ°λ¦¬κ° μ§μ νμΈν μ μλ λ°μ΄ν°μ κΉμ μλ―Έλ₯Ό μ΄ν΄νλ λ° λμμ μ€λλ€.
λ¨Έμ λ¬λμμλ νλ ¬ λΆν΄κ° νΉν μΆμ² μμ€ν (Recommendation System)μμ μ€μν μν μ ν΄μ. μλ₯Ό λ€μ΄, λ·νλ¦μ€κ° μ¬μ©μκ° μ’μν λ§ν μνλ₯Ό μΆμ²νκ±°λ, μλ§μ‘΄μμ κ°μΈ λ§μΆ€ν μνμ μΆμ²νλ λ° νμ©λκ³ μμ΄μ. μ΄λΏλ§ μλλΌ ν μ€νΈ λΆμ, μ΄λ―Έμ§ μ²λ¦¬, λ°μ΄ν° μ°¨μ μΆμ λ± λ€μν λΆμΌμμλ μ¬μ©λλ©°, λκ·λͺ¨ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ λ€λ£¨λ λ° κ°λ ₯ν λκ΅¬κ° λ©λλ€.
1. νλ ¬ λΆν΄μ κΈ°λ³Έ μμ΄λμ΄
νλ ¬ λΆν΄λ κ³ μ°¨μμ λ°μ΄ν°λ₯Ό μ μ°¨μμ μ μ¬ κ³΅κ°(latent space)μΌλ‘ μμΆνλ κΈ°λ²μΌλ‘ λ³Ό μ μμ΄μ. μ£Όμ΄μ§ νλ ¬ (μ: μ¬μ©μ-μμ΄ν νμ νλ ¬)μ λ κ°μ μ μ°¨μ νλ ¬ P (μ¬μ©μ μ μ¬ μμΈ)μ (μμ΄ν μ μ¬ μμΈ)μΌλ‘ λΆν΄νμ¬ λ€μκ³Ό κ°μ΄ ννν΄μ.
- : μ¬μ©μ-μμ΄ν νλ ¬
- : μ¬μ©μ μ μ¬ μμΈ νλ ¬ (μ¬μ©μ νΉμ§μ νν)
- : μμ΄ν μ μ¬ μμΈ νλ ¬ (μμ΄ν νΉμ§μ νν)
μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°μ μ£Όμ ν¨ν΄μ μ μ§νλ©΄μλ μ°¨μμ μ€μ¬, ν¨μ¨μ μ΄κ³ νμ₯ κ°λ₯ν λ°μ΄ν° λΆμμ΄ κ°λ₯ν΄μ Έμ.
2. μ νλ ¬ λΆν΄λ₯Ό μ¬μ©ν κΉ?
νλ ¬ λΆν΄λ λ¨μν λ°μ΄ν°λ₯Ό λΆν΄νλ κΈ°λ²μ΄ μλλΌ, λ°μ΄ν°μμ μλ―Έ μλ μ 보λ₯Ό ν¨μ¨μ μΌλ‘ μΆμΆνκ³ νμ©νκΈ° μν μ€μν λꡬμμ. νΉν λκ·λͺ¨ λ°μ΄ν°μμ λ°μνλ λ¬Έμ λ€μ ν΄κ²°νκ³ , λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ λ λμ μμΈ‘μ κ°λ₯νκ² λ§λ€μ΄μ€μ. μλμμ νλ ¬ λΆν΄κ° μ μ€μνμ§, κ·Έ μ΄μ λ₯Ό μ΄ν΄λ³Όκ²μ.
2.1. λ°μ΄ν° ν¬μμ± λ¬Έμ ν΄κ²°
μΆμ² μμ€ν μμ μμ£Ό μ¬μ©λλ μ¬μ©μ-μμ΄ν νμ νλ ¬μ λλΆλΆ λΉμ΄ μμ΄μ. μλ₯Ό λ€μ΄, Netflix μ¬μ©μ μλ°±λ§ λͺ κ³Ό μν μμ² κ°μ μ‘°ν©μ μκ°ν΄λ³΄λ©΄, λλΆλΆμ μ¬μ©μλ μ€μ λ‘ νκ°ν μνκ° λͺ νΈ λμ§ μκ² μ£ . μ΄λ κ² λ§μ λΉμΉΈμ κ°μ§ νλ ¬μ "ν¬μ λ°μ΄ν°(Sparse Data)"λΌκ³ λΆλ¬μ.
νλ ¬ λΆν΄λ μ΄λ¬ν ν¬μ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ λ€λ£° μ μλ κ°λ ₯ν λ°©λ²μ΄μμ. λΉμΉΈμ μ§μ μ±μ°λ λμ , μ¬μ©μμ μμ΄ν μ μ μ¬ μμΈμ λͺ¨λΈλ§νμ¬ κ²°μΈ‘μΉλ₯Ό κ°μ μ μΌλ‘ κ³μ°ν΄μ. μ΄λ₯Ό ν΅ν΄, μ§μ μ μΌλ‘ νκ° λ°μ΄ν°λ₯Ό μΆκ°νμ§ μκ³ λ, λ°μ΄ν° μ 체λ₯Ό νμ©νλ κ²μ²λΌ μμΈ‘ν μ μλ κΈ°λ°μ λ§λ€μ΄μ€μ. μλ₯Ό λ€μ΄, νΉμ μ¬μ©μκ° μ’μνλ μν μ₯λ₯΄ μ 보λ₯Ό νμ©ν΄ μμ§ νκ°νμ§ μμ μνμ νμ μ μΆμΈ‘ν μ μλ΅λλ€.
2.2. μ μ¬ μμΈ λͺ¨λΈλ§
νλ ¬ λΆν΄μ κ°μ₯ ν° κ°μ μ€ νλλ μ¬μ©μμ μμ΄ν μ "μ μ¬ μμΈ(latent factors)"μ νμ΅ν μ μλ€λ μ μ΄μμ. μ μ¬ μμΈμ λ°μ΄ν°λ₯Ό λ κ°κ²°νκ³ μλ―Έ μλ ννλ‘ ννν κ°μΌλ‘, μ¬μ©μμ μ νΈλμ μμ΄ν μ νΉμ±μ μ«μλ‘ λνλΈλ€κ³ μκ°νλ©΄ λΌμ. μλ₯Ό λ€μ΄, μν μΆμ² μμ€ν μμλ μνμ μ₯λ₯΄λ λΆμκΈ°, μ¬μ©μκ° μ νΈνλ μνμ μ€νμΌ κ°μ μ 보λ₯Ό μ μ¬ μμΈμΌλ‘ λͺ¨λΈλ§ν μ μμ΄μ.
μ΄λ₯Ό ν΅ν΄, μ¬μ©μμ μ·¨ν₯μ λμ± μ§κ΄μ μΌλ‘ μ΄ν΄ν μ μκ³ , λ³΄μ§ μμ λ°μ΄ν°μ λν μμΈ‘λ κ°λ₯ν΄μ Έμ. μλ₯Ό λ€μ΄, ν μ¬μ©μκ° νΉμ μ₯λ₯΄μ μνλ₯Ό μ’μνλ κ²½ν₯μ΄ μλ€λ©΄, κ·Έ μ₯λ₯΄μ μνλ μλ‘μ΄ μνλ μΆμ²ν μ μκ² μ£ . μ΄λ λ¨μν λ°μ΄ν°λ₯Ό λΆμνλ κ²μ λμ΄, λ°μ΄ν° κ°μ κ΄κ³λ₯Ό νμ΅νκ³ μ΄λ₯Ό νμ©νλ λ° μ€μν μν μ ν΄μ.
2.3. μμΈ‘ κ°λ₯μ±
νλ ¬ λΆν΄λ₯Ό ν΅ν΄ νμ΅λ μ¬μ©μμ μμ΄ν μ μ μ¬ μμΈ νλ ¬ Pμ λ₯Ό νμ©νλ©΄, μ¬μ©μκ° μμ§ νκ°νμ§ μμ μμ΄ν μ λν νμ μ μμΈ‘ν μ μμ΄μ. μλ₯Ό λ€μ΄, Netflixμμ μ΄λ€ μ¬μ©μκ° μμ§ λ³΄μ§ μμ μνμ λν΄ μΌλ§λ μ’μν μ§λ₯Ό μμΈ‘νκ³ , μ΄λ₯Ό λ°νμΌλ‘ μΆμ² 리μ€νΈλ₯Ό μ 곡νλ λ° μ¬μ©λ©λλ€.
μ΄ κ³Όμ μ λ¨μν κ°μ μμ μμλΌμ. μ¬μ©μμ μ μ¬ μμΈκ³Ό μμ΄ν μ μ μ¬ μμΈμ κ³±νκ³ ν©μΉ κ°μ΄, κ·Έ μ¬μ©μκ° ν΄λΉ μμ΄ν μ 맀길 νμ κ³Ό λΉμ·νλ€λ κ°μ μ΄μμ. μ΄ λͺ¨λΈμ μ€μ λ‘ μΆμ² μμ€ν μμ λ§€μ° κ°λ ₯νκ² μλνλ©°, "μ΄ μ¬μ©μλ μ΄ μνλ₯Ό μ’μν κ°λ₯μ±μ΄ λμμ" κ°μ κ°μΈνλ μμΈ‘μ κ°λ₯νκ² ν΄μ€μ. μ΄λ₯Ό ν΅ν΄ μ¬μ©μ κ²½νμ ν¬κ² ν₯μμν¬ μ μλ΅λλ€.
3. Matrix Factorizationμ μ£Όμ κΈ°λ²
νλ ¬ λΆν΄μλ λ€μν μ κ·Όλ²μ΄ μ‘΄μ¬νλ©°, λ°μ΄ν° νΉμ±κ³Ό λͺ©μ μ λ°λΌ μ ν©ν λ°©λ²μ μ νν μ μμ΄μ. λνμ μΌλ‘ SVD(Singular Value Decomposition), ALS(Alternating Least Squares), SGD(Stochastic Gradient Descent)κ° μμ΅λλ€.
3.1. Singular Value Decomposition (SVD)
SVDλ νλ ¬μ U, Σ, VTλΌλ μΈ κ°μ νλ ¬λ‘ λΆν΄νμ¬ λ°μ΄ν°λ₯Ό λ¨μννλ λ°©λ²μ λλ€. μ΄λ Uλ ν λ°μ΄ν°μ νΉμ±μ λνλ΄κ³ , VTλ μ΄ λ°μ΄ν°μ νΉμ±μ λνλ΄λ©°, Σλ λ°μ΄ν°μ μ€μλλ₯Ό λ΄κ³ μλ λκ°νλ ¬μ λλ€.
μ΄λ¬ν λΆν΄ κ³Όμ μ ν΅ν΄ κ³ μ°¨μ λ°μ΄ν°λ₯Ό μ μ°¨μμΌλ‘ λ³νν μ μμ΄ μ°¨μ μΆμμ λ°μ΄ν°μ ν¨ν΄ μΆμΆμ μ μ©ν©λλ€. μλ₯Ό λ€μ΄, ν μ€νΈ λ°μ΄ν°λ₯Ό λΆμν λ μμ£Ό μ¬μ©λλ Latent Semantic Analysis(LSA)λ SVDλ₯Ό κΈ°λ°μΌλ‘ νμ¬ λ¬Έμμ λ¨μ΄ μ¬μ΄μ μ¨κ²¨μ§ κ΄κ³λ₯Ό μ°Ύμλ λλ€. μ΄λ¬ν νΉμ± λλΆμ SVDλ μμ°μ΄ μ²λ¦¬λ μ΄λ―Έμ§ μμΆ λ± μ¬λ¬ μμ© λΆμΌμμ νμ©λ©λλ€. κ·Έλ¬λ SVDλ λ°μ΄ν°κ° μμ ν΄μΌλ§ μλνλ―λ‘ κ²°μΈ‘μΉκ° λ§μ ν¬μ λ°μ΄ν°μλ λΆμ ν©νλ©°, λκ·λͺ¨ λ°μ΄ν°μμλ κ³μ° λΉμ©μ΄ λ§€μ° λμ ν¨μ¨μ μΈ μ¬μ©μ΄ μ΄λ €μΈ μ μμ΅λλ€. λ°λΌμ λκ·λͺ¨λ ν¬μ λ°μ΄ν°λ₯Ό λ€λ£° λλ μ ν©ν λμμ΄ νμν©λλ€.
3.2. Alternating Least Squares (ALS)
ALSλ μΆμ² μμ€ν μμ λ리 μ¬μ©λλ νλ ¬ λΆν΄ κΈ°λ²μΌλ‘, μ¬μ©μμ μμ΄ν κ°μ μ μ¬ μμΈμ κ΅λλ‘ νμ΅νλ λ°©μμ λλ€. κ°λ¨ν λ§ν΄, μ¬μ©μμ μμ΄ν κ°κ°μ μ μ¬ λ²‘ν°λ₯Ό λ²κ°μκ°λ©° κ³μ°νκ³ , μ΄λ₯Ό ν΅ν΄ μΆμ² μ μλ₯Ό μμΈ‘ν©λλ€.
ALSμ κ°μ₯ ν° μ₯μ μ λ³λ ¬ μ²λ¦¬μ λΆμ° μ²λ¦¬κ° κ°λ₯νλ€λ μ μ λλ€. μ΄λ¬ν νΉμ± λλΆμ Spark κ°μ λΉ λ°μ΄ν° νλ«νΌμμ λκ·λͺ¨ λ°μ΄ν°μ μ λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ μ²λ¦¬ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, λν μ μμκ±°λ νλ«νΌμμ μ¬μ©μμκ² λ§μΆ€ν μνμ μΆμ²ν λ ALSλ₯Ό μ¬μ©νλ©΄ μλ°±λ§ λͺ μ μ¬μ©μμ μν λ°μ΄ν°λ ν¨κ³Όμ μΌλ‘ λΆμν μ μμ΅λλ€. νμ§λ§ ALSλ λ°λ³΅μ μΈ νμ΅ κ³Όμ μμ κ³μ° λΉμ©μ΄ λ°μνκΈ° λλ¬Έμ, νμ΅ μλκ° λλ €μ§ κ°λ₯μ±μ΄ μμ΅λλ€. λν, λ°μ΄ν°κ° μ§λμΉκ² ν¬μνκ±°λ νΈν₯λμ΄ μμΌλ©΄ μ μ¬ μμΈμ νμ΅μ΄ μ λλ‘ μ΄λ£¨μ΄μ§μ§ μμ μ±λ₯μ΄ μ νλ μ μμ΅λλ€.
3.3. Stochastic Gradient Descent (SGD)
SGDλ λ°μ΄ν°λ₯Ό νλμ© μ΄ν΄λ³΄λ©° λͺ¨λΈμ μ μ§μ μΌλ‘ νμ΅νλ μ΅μ ν κΈ°λ²μ λλ€. μ 체 λ°μ΄ν°λ₯Ό νκΊΌλ²μ μ²λ¦¬νλ κ²μ΄ μλλΌ μν λ¨μλ‘ νμ΅μ μ§ννκΈ° λλ¬Έμ λ©λͺ¨λ¦¬ ν¨μ¨μ΄ λκ³ , λκ·λͺ¨ λ°μ΄ν°μ μμλ μ ν©νκ² μ¬μ©ν μ μμ΅λλ€. μ΄ κΈ°λ²μ λ λ€λ₯Έ μ₯μ μ νμ΅λ₯ κ³Ό λ°λ³΅ νμ κ°μ νμ΄νΌνλΌλ―Έν°λ₯Ό μ μ°νκ² μ‘°μ ν μ μλ€λ μ μ λλ€.
μ΄λ¬ν νΉμ±μ λ°μ΄ν° ν¬κΈ°μ λ¬Έμ μ νμ λ°λΌ μ μμ μΌλ‘ νμ΅ μ€μ μ λ³κ²½ν μ μκ² ν΄μ€λλ€. κ·Έλ¬λ SGDλ νμ΅λ₯ μ€μ μ΄ μ±λ₯μ ν° μν₯μ λ―ΈμΉ©λλ€. νμ΅λ₯ μ΄ λ무 ν¬λ©΄ μ΅μ κ° κ·Όμ²μμ μ§λνκ±°λ λ°μ°ν μ μκ³ , λ무 μμΌλ©΄ νμ΅ μλκ° λλ €μ§λλ€. λν, SGDλ ALSμ λΉκ΅νμ λ μλ ΄ μλκ° λ릴 μ μμΌλ©°, μ κ΅ν νμ΄νΌνλΌλ―Έν° νλμ΄ νμν©λλ€. μ΄λ¬ν μ λλ¬Έμ SGDλ₯Ό μ¬μ©ν λλ μΆ©λΆν μ€νκ³Ό κ²μ¦μ΄ νμν©λλ€.
νλ ¬ λΆν΄λ μΆμ² μμ€ν , ν μ€νΈ λΆμ, μ΄λ―Έμ§ 볡μ λ± λ€μν λ¬Έμ λ₯Ό ν΄κ²°νλ λ° μ μ©ν λκ΅¬μΌ λΏλ§ μλλΌ, μ΅μ λ¨Έμ λ¬λ λ Όλ¬Έμ μ΄ν΄νλ λ°λ μ€μν κΈ°μ΄ κ°λ μ΄μμ. λ¨μν μνμ μ리μ κΈ°λ°νμ§λ§, λ°μ΄ν° λΆμκ³Ό λͺ¨λΈ μ€κ³μμ μμ£Ό μ¬μ©λλ΅λλ€.